FTP Tool
FTP Connect
Das Plugin, welches eine FTP-Verbindung nutzen möchte, muss hierzu einen eigenen Seitentyp anlegen. Dieser wird aber nicht wie üblich von der Klasse Editor, sondern von der Klasse Plugin_FTPConnect_Page geerbt. Auch muss nicht mehr die Funktion display überschrieben werden, sondern folgende:
- onConnect: Wird aufgerufen, wenn die Verbindung hergestellt wurde. Hier kann vom Plugin der Upload gestartet werden.
- getDescription: Gibt einen String zurück, der dem User beim Eingeben der Serverdaten angezeigt wird
- getDirDescription: Gibt einen String zurück, der den User auffordert, ein Verzeichnis zu wählen (z.B. "Wählen Sie das Verzeichnis Ihrer ContentLion Installation)
- allowConnect: Gibt einen Boolean zurück. Kommt hier true zurück, wird das Upload-Formular angezeigt. Bei false eben nicht.
Am wichtigsten ist die Funktion onConnect, da hier der eigentliche Upload statt findet. Dabei können folgende Funktionen genutzt werden:
upload($url, $destination)
Lädt eine Datei auf dem FTP-Server hoch. Die Url kann entweder ein lokaler Pfad, oder auch eine externe Url sein. Das $destination ist dann der Zielpfad auf dem Server. Dieser muss mit einem Slash beginnen.upload_folder($source, $destination)
Lädt einen kompletten Ordner vom Webserver auf dem FTP-Server hoch. Diesmal sind nur lokale Dateien möglich. Der $source muss ein absoulter Pfad sein. Destination wie beiupload
.mkdir($dir)
Legt einen Ordner auf dem FTP-Server an. Dir muss mit einem Slash beginnenchmod($path, $value)
Überschreibt die Datei-/Ordnerrechte auf dem FTP-Server. So kann man zum Beispiel Ordner für Uploads mit den Rechten 777 belegen.
Komplettbeispiel
<?PHP class Plugin_Example_Upload extends Plugin_FTPConnect_Page{ public function onConnect() { $this->mkdir("/backup"); $this->upload_folder(Settings::getValue("root"),"/backup"); } public function getDirDescription(){ return "Wohin soll das Backup gesichert werden?"; } public function getDescription(){ return "Sichert die ContentLion Installation"; } public function allowConnect() { return true; } } ?>