Anzeige

Zum Schluss brauchen wir noch eine Seite „index.php“ auf der wir das Gästebuch anzeigen wollen.

<?php
require('XMLGB/XMLGuestbookDataMapper.php');
require('XMLGB/XMLGuestbookDecorator.php');
require('XMLGB/XMLGuestbookFactory.php');
require('XMLGB/XMLGuestbookRequestHandler.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 
 
<head> 
  <title>XMLGB Gästebuch</title> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="xmlgb_style.css">
</head>
<body>
<a href="<?php echo $_SERVER["PHP_SELF"]?>" >G&auml;stebuch</a>
<a href="<?php echo $_SERVER["PHP_SELF"]?>?gb_addEntry=1" >neuer Eintrag</a>
<a href="<?php echo $_SERVER["PHP_SELF"]?>?gb_modify=1" >bearbeiten</a>

<?php
try 
{
	$_auth = false;
	if(array_key_exists('gb_modify',$_GET))
	{
		$_auth = true;
	}
	$GB = XMLGB_XMLGuestbookFactory::getInstance(dirname(__FILE__),$_SERVER["PHP_SELF"]."?");
	$Handler = new XMLGB_XMLGuestbookRequestHandler();
	$Handler->HTMLinText = true;
	$Handler->handle($GB,$_POST,$_GET);
	echo $Handler->getHandleResult();
	echo $GB->show($_GET,$_auth);
	
	
	
}catch (XMLGB_XMLGuestbookException $GBEx) {
	echo $GBEx->getMessage();
}
?>
</body>
</html>


In dieser Datei erstellen wir Links zum Bearbeiten, Hinzufügen und Anzeigen des Gästebuches. Wir müssen lediglich den Pfad und den Namen der ausführbaren Datei (index.php) an die Factory Klasse übergeben.

Dem Handler übergeben wir eine Referenz der Factory und die POST und GET Arrays. Im handleResult erhalten wir Erfolgs oder Fehlnachrichten.

Was ich hier vernachlässigt habe ist die Autorisierung eines Administrators. Diese kann von euch relativ einfach eingebaut werden. Eine Funktion zum Prüfen der Daten (Name und Kennwort) die Faktory Klasse ($GB->isAdmin(Name, Kennwort)) ebenfalls zur Verfügung.

Fazit

Auch mit XML und XPATH kann man komfortable Funktionalitäten abbilden.  Was noch zu testen wäre ist das Gesamtverhalten bei vielen Einträgen. Mit Hilfe der Objektorientierung konnten wir uns auf die einzelnen Funktionalitäten konzentrieren und können Verbesserungen einfacher implementieren. 

Was noch zu tun wäre

Eine kleine ToDo List kann man schon anlegen. Hier wäre zu erwähnen:

- Ausgliederung von Texten des Handlers in eine separate Konfigurationsdatei

- Hinzufügen mehrere Kommentare vom Administrator 

- Hinzufügen von Kommentaren von Nutzern (aber das würde eine Gästebuch Funktionalität schon überschreiten)

- Zulassen von BB Codes

 -  

Zu Testzwecken habe ich dem gesamten Projekt noch ein generiertes XML Gästebuch mit ca. 3500 Einträgen hinzugefügt.

Das gesamte Projekt könnt Ihr unter Downloads herunterladen.