2026-02-17 14:56:23 +01:00
< ? php
// error_reporting(E_ALL);
// ini_set('display_errors', 1);
function get_all_knowledgebase_articles ( $period = " " ) {
if ( $period == " " ) {
2026-05-11 08:54:44 +02:00
$query = " SELECT * FROM `main_collection` WHERE main_collection_setup_id = 3 AND (is_archived = 0 OR is_archived IS NULL) AND description != '' ORDER BY creation_date DESC LIMIT 30 " ;
2026-02-17 14:56:23 +01:00
} else {
// Zeitraum in Tagen in Timestamp umwandeln
$timestamp = time () - ( $period * 24 * 60 * 60 );
2026-05-11 08:54:44 +02:00
$query = " SELECT * FROM `main_collection` WHERE main_collection_setup_id = 3 AND (is_archived = 0 OR is_archived IS NULL) AND creation_date >= $timestamp AND description != '' ORDER BY creation_date DESC " ;
2026-02-17 14:56:23 +01:00
}
$result = mysqli_query ( $GLOBALS [ 'mysql_con' ], $query );
$articles = [];
while ( $row = mysqli_fetch_assoc ( $result )) {
$articles [] = $row ;
}
return $articles ;
};
function get_select_permisions ( $collection_id , $type ) {
$query = " SELECT * FROM main_collection_ " . $type . " _link WHERE main_collection_id = " . $collection_id ;
$result = @ mysqli_query ( $GLOBALS [ 'mysql_con' ], $query );
$permissions = [];
while ( $row = @ mysqli_fetch_array ( $result )){
array_push ( $permissions , $row [ 'main_' . $type . '_id' ]);
}
return $permissions ;
}
function has_access ( $user_id , $mandant , $department , $role , $fachbereich , $einricht ) {
$con = $GLOBALS [ 'mysql_con' ];
$query = "
SELECT * FROM main_contact_department
WHERE main_contact_id = " . (int) $user_id ;
$result = mysqli_query ( $con , $query );
if ( ! $result ) {
return false ;
}
while ( $row = mysqli_fetch_assoc ( $result )) {
if (
in_array ( $row [ 'main_mandant_id' ], $mandant ) &&
in_array ( $row [ 'main_department_id' ], $department ) &&
in_array ( $row [ 'main_role_id' ], $role ) &&
in_array ( $row [ 'main_bereich_id' ], $fachbereich ) &&
in_array ( $row [ 'main_einricht_id' ], $einricht )
) {
return true ;
}
}
return false ;
}
// Artikel der letzten 40 Tage für die Zählung der neuen Artikel abrufen
$new_articles_period = get_all_knowledgebase_articles ( 15 );
// Alle Artikel für die Anzeige der letzten verfügbaren Artikel abrufen
$all_articles = get_all_knowledgebase_articles ();
// Neue Artikel (für den Zeitraum) nach Benutzerzugriff filtern
$new_articles_with_access = [];
foreach ( $new_articles_period as $article ) {
$collection_id = $article [ 'id' ];
$mandant = get_select_permisions ( $collection_id , 'mandant' );
$department = get_select_permisions ( $collection_id , 'department' );
$role = get_select_permisions ( $collection_id , 'role' );
$fachbereich = get_select_permisions ( $collection_id , 'fachbereich' );
$einricht = get_select_permisions ( $collection_id , 'einricht' );
if ( has_access ( $GLOBALS [ 'main_contact' ][ " id " ], $mandant , $department , $role , $fachbereich , $einricht )) {
$new_articles_with_access [] = $article ;
}
}
// Alle Artikel nach Benutzerzugriff filtern, um die letzten 3 anzuzeigen
$accessible_articles = [];
foreach ( $all_articles as $article ) {
$collection_id = $article [ 'id' ];
$mandant = get_select_permisions ( $collection_id , 'mandant' );
$department = get_select_permisions ( $collection_id , 'department' );
$role = get_select_permisions ( $collection_id , 'role' );
$fachbereich = get_select_permisions ( $collection_id , 'fachbereich' );
$einricht = get_select_permisions ( $collection_id , 'einricht' );
if ( has_access ( $GLOBALS [ 'main_contact' ][ " id " ], $mandant , $department , $role , $fachbereich , $einricht )) {
$accessible_articles [] = $article ;
}
}
// Nur die letzten 3 verfügbaren Artikel nehmen
$last_3_articles = array_slice ( $accessible_articles , 0 , 3 );
// Ergebnis anzeigen
if ( count ( $last_3_articles ) > 0 ) {
echo '<div class="qm_container">' ;
echo '<div class="mb-3">' ;
$count = count ( $new_articles_with_access );
$text = ( $count == 1 ) ? 'neuer Artikel' : 'neue Artikel' ;
echo '<span class="badge badge-info">' . $count . ' ' . $text . ' in den letzten 15 Tagen</span>' ;
echo '</div>' ;
echo '<h2>Neueste Artikel aus dem QM</h2>' ;
echo '<div class="list-group">' ;
foreach ( $last_3_articles as $article ) {
$title = htmlspecialchars ( $article [ 'description' ]);
$link = '/awo/de/knowledgecenter-post/-' . $article [ 'id' ] . " / " ;
$creation_date = date ( 'd.m.Y' , $article [ 'creation_date' ]);
// Prüfen, ob der Artikel neu ist (in den letzten 40 Tagen)
$is_new = in_array ( $article [ 'id' ], array_column ( $new_articles_with_access , 'id' ));
$new_badge = $is_new ? '<span class="badge badge-success ml-2">Neu</span>' : '' ;
echo '<a href="' . $link . '" class="list-group-item list-group-item-action">' ;
echo " <img src='/userdata/03_Module/01_Firmenwiki/18_1709134644_qmhandbuch.jpg'> " ;
echo '<div class="block_right">' ;
echo '<h5 class="mb-1">' . $title . $new_badge . '</h5>' ;
echo '<small>' . $creation_date . '</small>' ;
echo '</div>' ;
echo '</a>' ;
}
echo '</div>' ;
echo '</div>' ;
}
?>
< style >
. qm_container {
width : 100 % ;
padding : 20 px ;
. badge - info {
font - size : 14 px ;
}
h2 {
font - size : var ( -- fs - 700 );
}
a {
display : flex ;
align - items : center ;
text - decoration : none ;
color : inherit ;
margin - bottom : 10 px ;
. block_right {
margin - left : 15 px ;
}
img {
max - width : 150 px ;
border - radius : 7 px ;
}
h5 {
font - size : 18 px ! important ;
margin - bottom : 5 px ;
}
}
}
</ style >