Briefversand-Module erstellen: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(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&auml;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.

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&auml;ndig",
		);
	}
}