MSP:HÜ Dateien
Inhaltsverzeichnis
Allgemein
Mitglieder der Gruppe:
- Braden, Nils
- Weber, Florian
Nicht-funktionale Anforderungen an das Modul
- Benutzbarkeit
- Performance
- Fehlertoleranz
- Verfügbarkeit
- Sicherheit (BSI)
- Datenschutz
- Barrierefreiheit (WAI)
- Benutzerdokumentation
- WIKI
Reverse-Engineering
Link zur Dokumentation mit doxygen: http://n.pentabarf.de/MSP/doxygen
Datenbank
Tabelle Filelist: Hier werden Dateien/Links oder Ordner dargestellt
- name = Nutzer-Dateiname
- link = Link-Adresse
- orig_filename= realer Dateiname
- extension = Dateiendung
- parent_object = ein in der Fileliste übergeordnetes Objekt
- description = beschreibender Text
- userID = ID Uploader
- size = Dateigröße in Byte
- create_time = Timestamp
- counter = Anzahl der Aufrufe
- courseID = Kurs
- thumbnail = Thumbnail
- type = enum mit Typ der Datei
- visible_type = Sichtbarkeit
- start_time = Sichtbarkeitszeitraum Start
- end_time = Sichtbarkeitszeitraum Ende
- student_write = Berechtigung
Tabelle filelog:
Upload Log
- userID = Nutzer ID
- fileID = ID aus filelist
- date = Upload Datum
Tabelle filetreelayout:
Ordnerstruktur Layout
- userID = Nutzer ID
- folderID = Ordner ID
Tabelle filevisible:
Sichtbarkeit
- fildeID = ID aus filelist
- userID = Nutzer ID
Metriken
- CodeCoverage-Analyse: http://oldmcweb.ol.funpic.de/temp/msp/codecov/
- Mit phpunit erstellte Metriken: http://n.pentabarf.de/MSP/metrics.xml
CacheGrind
PHPsniffer Analyse nach Zend code conventions
Siehe: http://framework.zend.com/manual/de/coding-standard.html
Analyse der Datenbankzugriffe
- Mitschnitt aller Datenbankzugriffe während der Ausführund der phpUnit-Tests: http://n.pentabarf.de/MSP/db-zugriffe.txt
Bei der Analyse der Mitschnitte ist deutlich zu sehen, dass in diesem Modul keinerlei unnötige Datenbankabfragen durchgeführt werden. Die Fülle an Abfragen im Mitschnitt entsteht nur durch häufiges Aktualisieren der Benutzer-Sitzung, was aber unabhängig von dem betrachteten Modul ist.
Aufgabenstellung
Das Modul "Ressourcen" soll hinsichtlich nicht-funktionaler Aspekte (wie oben aufgezählt) überarbeitet werden. Im Detail sind die Anforderungen des Kunden zu erfüllen, sofern die Arbeitsbelastung für 2CrP angemessen ist.
Walkthrough
Beim Walkthrough am Montag den 23.11.2009 wurde besprochen, welchen Teilen des Moduls wir uns besonders widmen und welche Bugs und Features wir im Fokus haben sollten. Dabei entstand folgende Liste an Aufgaben, sortiert nach Wichtigkeit (Einschätzung des Kunden):
- Datenanzeige Sortierung
- 1.Kriterium Datum (neuste zuerst)
- 2.Alphabetisch
- Daten auf Kursebene
- Button zum rekursiven Herunterladen
- Sichtbarkeit für alle Inhalte rekursiv ändern
- Schreibrechte rekursiv setzen
- Ordner in anderen Kurs kopieren
- Gesamtübersicht aller angelegten Dateien (Datenauszug
- Dateigröße in Mb/Kb (menschenlesbar)
- Downloadstatistik
- Prozentzahl, keine Fließkomma-Darstellung
- Counter prüfen / anpassen
- Download-Statistik-Übersicht, Zahlen kontrollieren
- Dateien Ablage
- prüfen ob konsistent immer der Unix-Zeitstempel verwendet wird
- Link-Checker zur Suche nicht verlinkter Dateien
Überarbeitung des Code-Styles
Aufgrund der Einschränkung, dass nur geprüfter Code auf dem SVN-Server eingecheckt werden kann mussten alle Stil-Verstöße im Modul behoben werden. Der komplette Code des Moduls ist jetzt in einem Zustand, der vom Style-Check als "valide" angesehen wird. Das bedeutet:
Es sind alle...
- ...Zeilen kürzer als 120 zeichen
- ...Variablen im CamelCase-Format
- ...Mehrzeiligen Statements durch Klammer am Ende der letzten und einzelne Klammer in der nächsten Zeile gegliedert
- ...Funktionen mit Sichtbarkeits-Modifier versehen
(Auflistung der wichtigsten Punkte)
Dokumentation der Änderungen und Features
Link-Checker für Dead-Files/-Links
- Wurde für einzelne Kurse implementiert. Auf diese Weise können die Methoden flexibler genutzt werden.
- Findet Verwendung beim Kurs-Dozent um dort ungültige Einträge in der Datenbank zu finde. Diese könne dann manuell gelöscht werden um Fehler z.B. beim Export zu vermeiden.
- Findet Anwendung für den Administrator, dieser kann auf diese Weise bei der Archivierung eines Kurses überflüssige Dateien auffinden und so Speicherplatz sparen.
- Siehe hierzu auch die weitere Behandlung des Features im Rahmen der Projektwoche unter MSP-Projektwoche-FWbr-NBr#Feature
Rekursiv auf alle Ordner anwendbare Funktionen
Ordner rekursiv in Kurse auf Ordnerebene kopieren
- Hierbei kann jeder Ordner mit Ausnahme der Root-Ebene in einen anderen Kurs kopiert werden, wobei die Schreibrechte des Benutzer natürlich überprüft werden.
- Die Verwendung des Oberordners wurde in der Implementierung nicht vorgesehen, da sehr umfangreiche Änderungen des Codes nötig gewesen wären. E-Study unterscheidet hier zwischen Ordnern und Hauptordnern, wobei Hauptordner einfach nur Ordner auf der obersten Ebene sind. Allerdigns beziehen sich die hier genannten Funktionen auf alle Hauptordner, weshalb noch eine Ebene über den Hauptordnern benötigt wurde, welche mit der OrdnerID "0" geschaffen wurde. Diese ID ist natürlich nicht imganzen System eindeutig, was dazu führt, dass an vielen Stellen zusätzliche Maßnahmen zur Behandlung neuer Ordner mit dieser ID nötig gewesen wären.
- Bei der Implementierung wurde eine neue Kopierfunktion implementiert, da die bereits vorhandene Kopierfunktion für Dateien sehr stark mit HTML-Code durchsetzt ist und so nur mit großem Aufwand hätte wiederverwended werden können.
- Für die Darstellung der Kopiermaske konnte jedoch die bereits vorhandene Maske des Dateikopierens verwendet werden.
Schreibrechte rekursiv ändern
- Dieses Feature ermöglicht es Dozenten, mit einem Klick im Root-Ordner die Zugriffsrechte auf alle Dateien im Kurs rekursiv zu ändern.
- Es werden zwei Buttons zum Ändern der Rechte angezeigt, Schreibrechte für Studenten geben und entziehen.
Sichtbarkeit rekursiv ändern
- Dieses Feature ermöglicht es Dozenten, in einem Arbeitsschritt alle Dateien eines Kurses für Dozenten, Dozenten+Tutoren oder Studenten sichtbar zu machen oder zu verstecken.
- Hierbei wird hauptsächlich auf die schon vorhandene Implementierung der Rechteverwaltung zurückgegriffen. Einzig die Anzeige des Buttons und das rekursiv Durchlaufen aller Ordner sind in diesem Fall neu.
Sortierung der Datensätze
- Die Sortierung der angezeigten Dateien wurde so angepasst, dass immer die neusten Datensätze zuerst angezeigt werden und als zweites Kriterium nach dem Namen sortiert wird.
Statistiken
- Hierbei wurde die Darstellung von Dateigrößen von Bytes in eine menschenlesbare Einheit geändert (Mb/Kb) geändert.
- Hierzu wurde eine bereits vorhandene Funktion aus Tools verwendet.
Liste der angepassten Dateien
Diese Auflistung enthält alle im Rahmen dieses Projekts geänderten Dateien des Moduls. Der erste Link führt jeweils direkt zur Datei in der zuletzt bearbeiteten Revision, der zweite führt zu einem Side-by-side-Vergleich der Dateien zu Beginn und Ende unserer Arbeit.
Ordner: /ressourcen/
- filemanager.php (diff)
- statistik.php (diff) (nur Styleänderungen vorgenommen)
- auto.inc.php (diff) (nur Styleänderungen vorgenommen)
- insert.php (diff)
- insertfile.php (diff)
- edit.php (diff) (nur Styleänderungen vorgenommen)
Ordner: /ressourcen/classes
- class.userdataresources.inc.php (diff)
- class.insert.inc.php (diff)
- class.edit.inc.php (diff) (nur Styleänderungen vorgenommen)
- class.filemanger.inc.php (diff)
- class.insertNotenliste.inc.php (diff) (nur Styleänderungen vorgenommen)
- class.ressourceautomation.inc.php (diff) (nur Styleänderungen vorgenommen)
- class.ressourcendb.inc.php (diff) (nur Styleänderungen vorgenommen)
Ordner: /ressourcen/classes/archiver
- class.zipprovider.inc.php (diff) (nur Styleänderungen vorgenommen)
- class.zipvisitor.inc.php (diff)
- interface.resourcevisitor.inc.php (diff) (nur Styleänderungen vorgenommen)
- interface.archiveprovider.inc.php (diff) (nur Styleänderungen vorgenommen)
Ordner: /ressourcen/classes/filemanager
- class.file.inc.php (diff)
- class.resource.inc.php (diff) (nur Styleänderungen vorgenommen)
- class.folder.inc.php?rev=3321 (diff)
Ordner: /ressourcen/templates
- filelist_entry.html (diff) (nur Styleänderungen vorgenommen)
- filelist_statistic.html (diff) (nur Styleänderungen vorgenommen)
- filelist_entry_statistic.html (diff) (nur Styleänderungen vorgenommen)
- copyfolder.html (neu hinzugefügt)
- foldertree.html (diff)
- filelist.html (diff) (nur Styleänderungen vorgenommen)
Gruppenseite des Teams in der Projektwoche
- --Braden-NBr 21:14, 3. Jan. 2010 (CET)
- --Weber-FWe2f 21:17, 3. Jan. 2010 (CET)