Location: PHPKode > projects > iLP System > Release 2.2/upload/reqs.php
<?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)';
}
?>
Return current item: iLP System