<?php
/**
* iLP System Anfragen anzeigen
*
* Autor: Florian "ApoY2k" Peschka
* Projekt: iLP System
* Paket: apoy2k.ilp.wrynn
* Lizenz: CreativeCommons (by-nc-sa)
* Kontakt: hide@address.com
* Version: 2.1.1
*/
// Benutzer-Login prüfen
if (isset($_SESSION['user']['login']))
{
// Wenn keine Angabe oder "show" angegeben wurde, alle Anfragen des Benutzers suchen und anzeigen
if (!isset($tpl['url'][2]) || 'show' == $tpl['url'][2])
{
// Datenbank nach Anfragen des Benutzers durchsuchen
$get_reqs = $db->prepare("SELECT ilp_reqs.id AS req_id, ilp_reqs.date_sent, ilp_reqs.req_values, ilp_reqs.date_read, ilp_reqs.date_edit, ilp_req_types.name AS req_type, ilp_req_types.id AS req_type_id FROM ilp_reqs, ilp_req_types WHERE ilp_reqs.type = ilp_req_types.id AND ilp_reqs.sent_id = ? ORDER BY ilp_reqs.date_edit DESC, ilp_reqs.date_read DESC, ilp_reqs.date_sent DESC");
$get_reqs->execute(array($_SESSION['user']['id']));
// Wenn Anfragen gefunden wurden, diese im Template-Array speichern
if (0 < $get_reqs->rowCount())
{
while($row = $get_reqs->fetch(PDO::FETCH_ASSOC))
{
/**
* Statusberechnung der Anfrage
* Wenn sie noch nicht gelesen wurde (Feld: date_read leer) â Warteschlange
* Wenn sie gelesen aber noch nicht bearbeitet wurde (Feld: date_edit leer) â In Bearbeitung
* Wenn sie bearbeitet wurde (Felder: date_read und date_edit gefüllt) â Erledigt
*/
if('0000-00-00' != $row['date_read'])
{
if ('0000-00-00' != $row['date_edit'])
{
$row['status']['icon'] = '_edit';
$row['status']['desc'] = 'Erledigt';
}
else
{
$row['status']['icon'] = '_open';
$row['status']['desc'] = 'In Bearbeitung';
}
}
else
{
$row['status']['icon'] = '';
$row['status']['desc'] = 'Warteschlange';
}
// Auflösung der Daten der Anfrage in ein Array, um die Anzeige zu erleichtern
$row['req_values'] = unserialize($row['req_values']);
// Anfrage in Template-Engine speichern
$tpl['reqs'][] = $row;
}
}
// Ansonsten Fehlermeldung speichern
else
{
$tpl['reqs']['error'] = true;
}
}
// Details einer Anfrage anzeigen
elseif ('detail' == $tpl['url'][2])
{
// Angegebene Anfrage suchen
$get_req = $db->prepare("SELECT ilp_reqs.id AS req_id, ilp_reqs.date_sent, ilp_reqs.date_read, ilp_reqs.date_edit, ilp_reqs.sent_id, ilp_reqs.read_id, ilp_reqs.edit_id, ilp_reqs.req_values, ilp_reqs.req_msg, ilp_reqs.req_answer, ilp_req_types.name AS req_type_name, ilp_req_types.id AS req_type, ilp_reqs.req_values FROM ilp_reqs, ilp_req_types WHERE ilp_reqs.type = ilp_req_types.id AND ilp_reqs.id = ?");
$get_req->execute(array($tpl['url'][3]));
// Wenn eine Anfrage gefunden wurde, diese in die Template-Engine speichern
if (1 == $get_req->rowCount())
{
$row = $get_req->fetch(PDO::FETCH_ASSOC);
// Daten der Anfrage entschlüsseln
$row['req_values'] = unserialize($row['req_values']);
if('0000-00-00' != $row['date_read'])
{
// Je nach Status der Anfrage die eingetragenen Benutzer-IDs suchen und deren Namen speichern
$get_stat_name = $db->prepare("SELECT ilp_users.id, ilp_users.char FROM ilp_users, ilp_reqs WHERE ilp_reqs.read_id = ilp_users.id AND ilp_reqs.id = ?");
$get_stat_name->execute(array($row['req_id']));
$stat_name = $get_stat_name->fetch();
$row['read_name'] = $stat_name;
$row['read_name']['char'] = unserialize($stat_name['char']);
$row['status'] = $lang['reqs']['status']['read'];
if ('0000-00-00' != $row['date_edit'])
{
// Je nach Status der Anfrage die eingetragenen Benutzer-IDs suchen und deren Namen speichern
$get_stat_name = $db->prepare("SELECT ilp_users.id, ilp_users.char FROM ilp_users, ilp_reqs WHERE ilp_reqs.edit_id = ilp_users.id AND ilp_reqs.id = ?");
$get_stat_name->execute(array($row['req_id']));
$stat_name = $get_stat_name->fetch();
$row['edit_name'] = $stat_name;
$row['edit_name']['char'] = unserialize($stat_name['char']);
$row['status'] = $lang['reqs']['status']['edit'];
}
}
else
{
$row['status'] = $lang['reqs']['status']['sent'];
}
$tpl['req'] = $row;
}
else
{
$tpl['error']['action'] = 'Anfrage anzeigen';
$tpl['error']['actor'] = $tpl['user']['login'].' â ID: '.$tpl['user']['id'];
$tpl['error']['location'] = 'reqs.php:78';
$tpl['error']['result'] = var_dump($get_req->errorInfo());
$tpl['error']['level'] = '0 (base-php)';
}
}
}
// Wenn der Benutzer nicht eingeloggt ist, Fehlerausgabe erzeugen
else
{
$tpl['error']['action'] = 'Seite aufrufen: Anfragen anzeigen';
$tpl['error']['actor'] = $_SERVER['REMOTE_ADDR'];
$tpl['error']['location'] = 'reqs.php';
$tpl['error']['result'] = 'Zugriff verweigert';
$tpl['error']['level'] = '0 (base-php)';
}
?>