Briefversand-Module erstellen: Unterschied zwischen den Versionen
Aus sourceDESK Wiki
(Die Seite wurde neu angelegt: „== Grundaufbau == ... == Methoden == ...“) |
|||
Zeile 1: | Zeile 1: | ||
+ | Sie können ein eigenes [[Briefversand]]-Modul erstellen, um einen neuen [[Briefversand]]-Anbieter an sourceDESK anzubinden. | ||
+ | |||
== Grundaufbau == | == Grundaufbau == | ||
− | ... | + | Ein Briefversand-Modul bekommt ein eigenes Verzeichnis unter ''modules/letter''. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung ''.php'' befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse ''LetterProvider'' erbt. |
+ | |||
+ | == Attribute == | ||
+ | Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens ''protected'' sein dürfen: | ||
+ | |||
+ | * ''$short'' gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen | ||
+ | * ''$name'' gibt einen Anzeigenamen für das Modul an | ||
+ | * ''$version'' definiert die Version des Moduls | ||
== Methoden == | == Methoden == | ||
− | ... | + | Folgende Methoden können definiert werden: |
+ | |||
+ | * ''getSettings()'' gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) ''$this->options'' zugegriffen werden | ||
+ | * ''getTypes()'' soll ein Array verfügbarer Brief-Typen und die dazugehörigen Typen zurückgeben, die implementiert werden müssen | ||
+ | * ''sendLetter($pdfPath, $color, $country, $type)'' erhält den Pfad zum PDF, einen Boolean, der angibt ob in Farbe gedruckt werden soll, das Land des Empfängers und den Brief-Typen übergeben - diese Methode veranlasst sodann den Versand des Briefes | ||
+ | |||
+ | == Beispiel-Code == | ||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | |||
+ | class OnlineBrief24 extends LetterProvider { | ||
+ | protected $short = "onlinebrief24"; | ||
+ | protected $name = "onlinebrief24"; | ||
+ | protected $version = "1.0"; | ||
+ | |||
+ | public function getSettings() { | ||
+ | return Array( | ||
+ | "obun" => Array("type" => "email", "name" => "E-Mailadresse"), | ||
+ | "obpw" => Array("type" => "password", "name" => "Passwort"), | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | public function sendLetter($pdfPath, $color = true, $country = "DE", $type = 0) { | ||
+ | if (!array_key_exists($type, $this->getTypes())) { | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | $filename = ($color ? "1" : "0") . "10" . ($country == "DE" ? "1" : "3") . $type . "00000000-" . basename($pdfPath) . ".pdf"; | ||
+ | |||
+ | $sftp = new phpseclib\Net\SFTP('api.letterei-onlinebrief.de'); | ||
+ | if (!$sftp->login($this->options->obun, $this->options->obpw)) { | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | $sftp->chdir('upload/api'); | ||
+ | if (!$sftp->put($filename, $pdfPath, NET_SFTP_LOCAL_FILE)) { | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | return true; | ||
+ | } | ||
+ | |||
+ | public function getTypes() { | ||
+ | return Array( | ||
+ | "0" => "Normaler Brief", | ||
+ | "1" => "Einschreiben Einwurf", | ||
+ | "2" => "Einschreiben", | ||
+ | "3" => "Einschreiben Eigenhändig", | ||
+ | ); | ||
+ | } | ||
+ | } | ||
+ | </source> |
Aktuelle Version vom 10. Oktober 2018, 08:34 Uhr
Sie können ein eigenes Briefversand-Modul erstellen, um einen neuen Briefversand-Anbieter an sourceDESK anzubinden.
Inhaltsverzeichnis
Grundaufbau
Ein Briefversand-Modul bekommt ein eigenes Verzeichnis unter modules/letter. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung .php befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse LetterProvider erbt.
Attribute
Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens protected sein dürfen:
- $short gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen
- $name gibt einen Anzeigenamen für das Modul an
- $version definiert die Version des Moduls
Methoden
Folgende Methoden können definiert werden:
- getSettings() gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) $this->options zugegriffen werden
- getTypes() soll ein Array verfügbarer Brief-Typen und die dazugehörigen Typen zurückgeben, die implementiert werden müssen
- sendLetter($pdfPath, $color, $country, $type) erhält den Pfad zum PDF, einen Boolean, der angibt ob in Farbe gedruckt werden soll, das Land des Empfängers und den Brief-Typen übergeben - diese Methode veranlasst sodann den Versand des Briefes
Beispiel-Code
<?php class OnlineBrief24 extends LetterProvider { protected $short = "onlinebrief24"; protected $name = "onlinebrief24"; protected $version = "1.0"; public function getSettings() { return Array( "obun" => Array("type" => "email", "name" => "E-Mailadresse"), "obpw" => Array("type" => "password", "name" => "Passwort"), ); } public function sendLetter($pdfPath, $color = true, $country = "DE", $type = 0) { if (!array_key_exists($type, $this->getTypes())) { return false; } $filename = ($color ? "1" : "0") . "10" . ($country == "DE" ? "1" : "3") . $type . "00000000-" . basename($pdfPath) . ".pdf"; $sftp = new phpseclib\Net\SFTP('api.letterei-onlinebrief.de'); if (!$sftp->login($this->options->obun, $this->options->obpw)) { return false; } $sftp->chdir('upload/api'); if (!$sftp->put($filename, $pdfPath, NET_SFTP_LOCAL_FILE)) { return false; } return true; } public function getTypes() { return Array( "0" => "Normaler Brief", "1" => "Einschreiben Einwurf", "2" => "Einschreiben", "3" => "Einschreiben Eigenhändig", ); } }