MSP: HÜ Foto Forum

Aus THM-Wiki
Wechseln zu: Navigation, Suche


Reverse Engineering

Use Case Diagramme

Use-case-diagramm.png

Use-cases PDF Datei: use-case.pdf

Klassendiagramme

Das Modul Foto Forum besteht aus folgenden Klassen und Globalen Funktionen.


UMLFotoForum.png

Datenbank Schema

Das Datenbankschema vom eStudy-Modul Foto Forum verwendet die Datenbanktabellen des Modules "Forum". Das Datenbankschema des Modules FotoForum wurde mit Hife des Java Tool "SchemaSpy" analysiert. SchemaSpy ist ein in Java implementiertes Werkzeug zur Analyse von Metadaten von Datenbanken. SchemaSpy visualisiert die Metadaten einer Datenbank und stellt diese, in einem für den Browser lesbaren Format, dem Benutzer zur Verfügung. Die von SchemaSpy erzeugte Dokumentation beinhaltet alle wichtigen Informationen die zur Weiterentwicklung und Optimierung der eStudy Datenbank des Foto Forums notwendig sind. SchemaSpy ist ein kostenloses Werkzeug und wird unter der "Lesser GNU Public License 2.1" angeboten. Das Plattformunabhängige, ausfürbare jar-Archiv kann hier runter geladen werden und einfach über das Terminal bedient werden.

Für die grafische Darstellung von Entitäten und deren Beziehungen unter einander verwendet das SchemaSpy-Tool das Werkzeug Graphviz. Für eine vollständige SchemaSpy-Dokumentation, also eine Dokumentation mit Graphiken muss das tool Graphviz auf ihrem System installiert sein. Für ein Linuxbetriebssystem steht dieses Tool in einem Softwarekanal jedem Benutzer zur Verfügung und kann mit der folgenden Anweisung einfach installiert werden.

sudo apt-get install graphviz

Die Einrichtung des Tools unter Windows-Systemen kann auf der Graphviz-Homepage nachgelesen werden.

Nachdem die hier erwähnten Tools auf ihrem System eingerichtet sind, kann die Analyse des Datenbank-Schema beginnen. Um die für uns relevanten Informationen aus der Datenbank zu hohlen haben wir folgende eingabe verwendet:

java -jar schemaSpy.jar 
         -t    mysql
         -o    eStudyESS FotoForum
         -host localhost
         -db   eStudyESS
         -u    root
         -p    eStudyDB
         -dp   /opt/mysql-connector-java-5.1.10-bin.jar
         -i     "(forum.*)" 

Die genaue Spezifikation der hier verwendeten Tokens können Sie auf der SchemaSpy-Homepage im Abschnitt Running SchemaSpy nachlesen.

In der obigen Eingabe sieht man unter dem Token -t das wir in diesem Fall eine MySQL Datenbank untersucht haben. Das Werkzeug SchemaSpy ist unabhängig von der Datenbank und ist in der lage die meisten gängigen Datenbanken zu analysieren. Hier für ist für die entsprechende Zieldatenbank ein Treiber erforderlich. Unter dem Token -dp sieht man das das Tool ein externe abhängigkeit verwendet. Mit dem Token -dp wird der Pfad zum entsprechenden Datenbanktreiber Spezifiziert. Dieser muss natürlich zuvor herunter geladen werden. Den Datenbank-Treiber (auch Connector genannt) für die MySQL Datenbank von eStudy kann auf der MySQL-Homepage unter der Rubrik "Developer-Zone" heruntergeladen werden.

Zur Zeit ist die Dokumentation der Datenbank des Foto Forums als .zip Archiv verfügbar und kann hier heruntergeladen werden. (Wir arbeiten daran die Dokumentation direct mit diesem Artikel zu verknüpfen.)

Media:EStudyESS_FotoForum.zip

Code Dokumentation

Der aktuelle Stand der Dokumentation kann hier runtergeladen werden. Die Dokumentation wurde mit Doxygen erstellt und wird ständig erweitert.

Media:eStudy_FotoForum_Docu.zip

Software-Metriken mit PHPUnit

Code Coverage

Zur Code Coverage ist zu sagen das der Code zu 0 Prozent mit Testfällen abgedeckt ist. Das Modul FotoForum ist eins der ersten Module von eStudy und wurde im Jahre 2004 Implementiert. Bei der Implementierung des Moduls wurden keine PHPUnit Tests mitentwickelt. Im Rahmen unserer Hausübung werden wir den Code PHPUnit Tests ausstatten damit wir eine möglichst gute Testabdeckung erreichen.

Hier ist eine Vorschau des derzeitigen Codevoverage-Report

Foto Forum Report.png

Foto Forum Report1.png


Der aktuelle stand der Testabdeckung kann hier heruntergeladen werden.

Media:Foto_Forum_Report.zip

PHPUnit Metrics

Die ermittelten Metriken basieren auf dem aktuellen Stand der PHPUnit Testabdeckung und sind aud diesem Grund zur Zeit noch nicht vollständig. Eine Vollständige übersicht der Metriken wird am nach implementierung der Testabdeckung verfügbar sein. Der aktuelle stand der Metriken kann hier als .xml file heruntergeladen werden. Das .xml File wird dämnechst noch mit einem Stylesheet versehen.

Media:Foto_Forum_Metrics.zip


Neu Features

PDF-Export Feature im FotoForum

Im Rahmen der Hausübung in der Veranstalltung MSP sollte das FotoForum mit der PDF-Export Funktionalität ausgestattet werden. Die im Rahmen dieser Aufgabe durchgeführte änderungen sind in den folgenden Kapiteln dokumentiert.

Anpassung der Templates

Im Rahmen der umsetzung des PDF-Export Feature war eine Anpassung der Templates notwendig. Die Betroffenen Templates wurden mit dem PDF-Export link erweitert. Die betoffenen HTML-Templates lifern nun folgene Ausgabe.


Template: forumrow.html

Anpassung Templates1.png


Template: postingfirstrow.html

Anpassung Templates2.png

Anpassung des Moduls PDF

Für die Umsetzung der PDF-Export Funktionalität musste das Module "PDF" angepasst werden. Wir haben das Modul PDF um die klasse PDFPhotogallery (in der datei class.pdfphotogallery.inc.php zu finden) erweitert.

PDFPhotogallery.png

Diese Klasse sorgt dafür das Die Forumbeiträge und die Bilder richtig aus der Datenbank geladen werden und anschließen in das PDF Dokument geschrieben werden.

Nachdem die Klasse für den PDF-Export erstellt war musste dafür gesorgt werden das die gewünschten Operationen auch aufgerufen weden können. Hier für haben wir das Script ../web/pdf/build.php mit den notwendigen Aufrufen erweitert.


        if (($_GET['target'] == "photoalbum") && ($_GET['id'] != 0)) {
		//Ein Photoalbum exportieren
		$pdf = new PdfPhotogallery();
		$pdf->printPhotoalbum($_GET['id']);
	}
	
	if ($_GET['target'] == "photo") {
		// Ein Photo exportieren
		$pdf = new PdfPhotogallery();
		$pdf->printOnePhoto($_GET['id']);
	}
	
	if ($_GET['target'] == "allphotoalbum") {
		// Alle Photoalben exportieren
		$pdf = new PdfPhotogallery();
		$pdf->printAllPhotoalbum($_GET['id']);
	}


Die Klasse PDFStyles musste um die Funktion erweitert werden welche es ermöglicht ein Bild in ein PDF-Document zu schreiben.

public function drawImage($pdf, $location){
		$pdf->Image($location);
		$pdf->Ln();
		$pdf->Ln();
	}

Anpassung des Moduls Photogallery

Nach dem wir das Modul PDF an die neuen Anforderungen angepasst haben mussten wir dafür sorgen das die neue Funktionalität auch im Modul FotoForum zu verfügung steht. Hierfür mussten Links eingerichtet werden durch die der Benutzer die Export funktionalität erreicht.

das Script ../web/photogallery/index.php wurde mit folgenden zeilen Code erweitert:

Zeile 69

$strLinkWithToken = SecurityToken::addToLink(PATH_TO_ROOT."pdf/build.php?type=pdf&target=allphotoalbum&id=0", $_SESSION['course']);
$pdfExport = " | <a href='$strLinkWithToken'>".Output::getIcon("icon_pdf", "Alle Photoalben als PDF exportieren") ."</a>";
writeContentHeader(Output::getIcon("icon_photogallery", "FotoForum") ."FotoForum" . "  " .$pdfExport);


Zeile 182:

$strLinkWithToken = SecurityToken::addToLink(PATH_TO_ROOT."pdf/build.php?type=pdf&target=photoalbum&id={$board['boardid']}"$_SESSION['course']);
$getPdf = "<a href='$strLinkWithToken'>".Output::getIcon("icon_pdf", "Board als PDF exportieren") ."</a>";
$board["export"] = $getPdf;
eval($Tboard->GetTemplate("INDEXROWS"));


das Script ../web/photogallery/showtopic.php wurde mit folgenden zeilen Code erweitert:

Zeile 401
 
$strLinkWithToken = SecurityToken::addToLink(PATH_TO_ROOT."pdf/build.php?type=pdf&target=photo&id={$post['postid']}", $_SESSION['course']);
$pdfExport =  " | <a href='$strLinkWithToken'>".Output::getIcon("icon_pdf", "Bild als PDF exportieren") ."</a>";

Optimierung der PicLens Slideshow

FotoForum im Datenauszug

Die Aufgabe hier war es das FotoForum im Datenaufzug aufzunehmen. Posts die ein Benutzer im FotoForum gepostet hat sollten im Datenauszug dargestellt werden. Im Datenauszug soll ein Thumbnail erscheinen, dieser ist verlinkt mit dem zugehörigen Fotoalbum. Für die Umsetzung der Aufgabe musste die Klasse UserDataAdapter implementiert werden. Die genauen Einzelschritte die bei der Integration der Module in den Datenauszug notwendig sind können hier nachgelesen werden.

Für die Umsetzung dieser Aufgabe wurde der Datenauszug an die neuen Anforderungen angepasst. Das Ergebnis ist hier dargestellt.

DatenauszugFotoForum.png

XPWeb im Datenauszug

XPWeb im Datenauszug

Anpassung der eStudy-Datenbank

Damit der UserDataAdapter des moduls FotoForum im Datenauszug auch verwendet wird muss der Adapter inder tabelle "userdata_modules" "registriert" werden. Hierfür ist folgender Datenbankeintrag notwendig.

INSERT INTO `userdata_modules` (`id`, 
                                `script`, 
                                `class`, 
                                `name`) 
VALUES (5, 'photogallery/classes/class.userdatafotoforum.inc.php', 'UserDataFotoForum', 'FotoForum');


Diese SQL Anweisung wurde auch in das script user.sql mit aufgenomme,n damit nach einer Neuinstallation des Portals die Änderungen erhalten bleiben.

PHPUnit Tests

Paralell zur implementierung der neuen Features wurden PHPUnit Tests mitentwickelt. Im Rahmen der Hausübung habe ich die bereits bestehenden Klassen und Funktionen mit PHPUnit-Tests ausgestattet. Die neu umgesetzten Features wurden ebenfalls mit PHPUnit-Tests getestet. Vor begin unserer Arbeit war die Codeabdeckung 0%, Testfälle gab es nicht. Die Testergebnisse bezüglich unserer Änderungen und der bestehenden funktionalität können in den kommenden Rubriken eingesehen werden. Der gesammte Code-Coverage Bericht kann hier herruntergeladen werden.

Media:HÜFotoForum_Tests.zip


PHPUnit Tests für bestehende Features

PdfTests.png


PHPUnit Tests für neue Features

AdminClassesTests.png


ClassesTests.png

XPWeb im Datenauszug

Change log

Geänderte Dateien bei der Umsetzung der neuen Features

Modul FotoForum

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/classes/class.userdatafotoforum.inc.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/board.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/index.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/addboard.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/editboard.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/templates/forumrow.html (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/templates/main.html (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/templates/postingfirstrow.html (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/templates/postingrow.html (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/templates/postingrowmarking.html (diff)

Modul PDF

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/build.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfforum.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfphotogallery.inc.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfstyles.inc.php (diff)

PHPUnit Tests

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/tests/AllTestsPDF.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/tests/classes/AllTestsPDFClasses.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/tests/classes/PDFPhotogalleryTest.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/AllTestsPhotogallery.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/classes/AllTestsClasses.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/classes/FunctionsTest.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/classes/PhotofunctionsTest.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/admin/AllTestsAdmin.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/admin/classes/AllTestsAdminClasses.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/admin/classes/AdminfunctionsTest.php ( neu )

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/tests/admin/classes/GallerySettingsTest.php ( neu )

Anpassung an eStudy Code-Richtlinien

Modul FotoForum

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/auto.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/board.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/edit.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/footer.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/header.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/index.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/misc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/modifypic.php

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/newtopic.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/postops.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/reply.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/search.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/showtopic.php

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/threadops.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/classes/class.functions.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/classes/class.header.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/classes/class.photofunctions.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/addboard.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/admin.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/courseadmin.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/editboard.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/classes/class.adminfunctions.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/photogallery/admin/classes/class.adminfunctions.inc.php (diff)

Modul PDF

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/build.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfannouncement.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfforum.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfphotogallery.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfplanner.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfpn.inc.php (diff)

https://trac.mni.fh-giessen.de/eStudy/browser/branches/msp_09/web/pdf/classes/class.pdfstyles.inc.php (diff)