Deutschland United States United Kingdom
ContentLion - Open Source CMS

FTP Tool
FTP Connect

Durch diese API können andere Plugins Dateien per FTP verteilen. Es wurde viel Wert darauf gelegt, dass die FTP-Nutzerdaten nicht für die zugreifenden Plugins erreichbar sind.

oder: CMS herunterladen

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 bei upload.
  • mkdir($dir) Legt einen Ordner auf dem FTP-Server an. Dir muss mit einem Slash beginnen
  • chmod($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;
    }
}
?>