Files
awo-hamburg-intranet/module/qm_updates/qm_updates.inc.php

170 lines
5.7 KiB
PHP
Raw Normal View History

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 == "") {
$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);
$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: 20px;
.badge-info {
font-size: 14px;
}
h2 {
font-size: var(--fs-700);
}
a {
display: flex;
align-items: center;
text-decoration: none;
color: inherit;
margin-bottom: 10px;
.block_right {
margin-left: 15px;
}
img {
max-width: 150px;
border-radius: 7px;
}
h5 {
font-size: 18px !important;
margin-bottom: 5px;
}
}
}
</style>