Morgen!
Ich bin gerade dabei eine Klasse, aufbauend auf einer Klasse, die Verbindungen zu einem FTP-Server herstellt, zu schreiben. Diese Klasse soll bei der Verwaltung bzw. Installation von Packages, die auf einem anderen Server liegen, helfen. Bei den Vorüberlegungen für eine solche Klasse haben sich mir einige Fragen gestellt. Doch erst zu den bisherigen Überlegungen.
Die Klasse soll folgende Funktionen enthalten:- die *.csv-Datei auslesen, in der die Repository-Server stehen
- von diesen Servern die control.csv mit den Package-Informationen auslesen
- die Package-Informationen zerlegen und als Array zurückgeben
- einen Download auf den eigenen Server von ungeschützten Packages ermöglichen
- einen Download auf den eigenen Server von geschützten Packages ermöglichen
- einen Upload von neuen Packages ermöglichen
- in die control.csv die neuen Package-Informationen eintragen
- einen Repository-Server in die Liste hinzufügen
Nun steht natürlich die Überlegung im Raum, ob man nicht diese Aufgaben in zwei Klassen aufteilen sollte oder nicht. Eine Klasse, die für die Übertragung der Packages zuständig ist und eine Klasse die für den Programmierer neuer Pakete den Upload und die Änderungen in den Konfigurations- und Informations-Dateien erleichtert.
Des weiteren könnte man sich überlegen, ob man nicht noch eine übergeordnete Klasse
ExtendedRepository anlegt, die auf meiner TarHandler Klasse aufbaut. Diese Klasse würde dann die heruntergeladenen Packages (im *.tar-Format) in einen gleichnamigen Ordner entpacken. Das weitere Verfahren mit diesen Dateien soll nun nicht Teil meiner Überlegungen sein.
Nun zu den Problemen, die sich mir bei meinen Gedanken offenbart haben.
Es wird eine *.csv-Datei geben, die die Informationen für alle bekannten Repository-Server enthält. Sollte dies tatsächlich eine *.csv-Datei sein? Wie soll diese Datei aufgebaut sein? Was darf wie in dieser Datei stehen? Bei alledem ist zu beachten, dass es geschützte und öffentliche Repository-Server geben soll. Zudem würde ich mich nebst der Vorschläge für die Strukturierung dieser Datei auch über Hilfe für den passenden RegEx-Code freuen.
Auf jedem der Repository Server liegt nebst den Packages noch eine Datei control.csv, die die Informationen zu den einzelnen Packages enthält. Im Folgenden habe ich eine Beispiel-Datei gebastelt und würde nun gerne von euch wissen, ob die dort enthaltenen Informationen ausreichend sind und wie hier der Regex-Code aufgebaut sein müsste.
control.csv
package: nested-sets
version: 1.0.1
depends: navigation-tool, ranking-tool, article-tool
suggests: button-designer
installed-Size: 5
author: Andreas Wilhelm <andreas@mail.de>
description: package that is base for navigation-management
Das kursiv geschriebene gibt es für jedes Package. Die Informationen werden durch einen Absatz von einander sichtbar getrennt.
Die einzelnen Packages sind, wie bereits erwähnt Tarballs, die, wahrscheinlich von einer Klasse ExtendedRepository heruntergeladen und in einer gleichnamigen Ordner temporär entpackt werden. Ist dies geschehen wird eine, in diesem Ordner enthaltene, install.php aufgerufen, die alle benötigten Datenbanken erstellt, Einträge vornimmt, Rechte zuweist etc. und abschließend den Ordner und sich selbst löscht (wenn das geht).
Wo ich gerade bei den Packages bin fällt mir ein, dass ich noch nicht wirklich eine Ahnung habe, wie ich eine Datei vom einen Server auf den anderen übertragen soll, ohne diese Meldung für den Client zu erzeugen. Wie kann ich also eine Bestätigung durch den Client verhindern?
Wäre euch sehr dankbar für Ideen und Anregungen sowie Hilfe bei den verschiedenen Fragen.
MfG, Andy