Server-Module erstellen: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Vertrag erstellen)
(Vertrag erstellen)
Zeile 22: Zeile 22:
  
 
== Vertrag erstellen ==
 
== Vertrag erstellen ==
Sie benötigen eine Methode <code>Create($id)</code>. Diese erhält die ID des Vertrages als Argument und soll den Vertrag einrichten. Zunächst sollten Sie <code>$this->loadOptions($id)</code> ausführen, um die Vertragsdetails zu laden. Wenn Sie die Kundendaten benötigen, können Sie mit <code>$u = $this->getClient($id)</code> eine [[Interaktion mit Objekten#Kunden|Instanz der Klasse ''User']] abrufen.
+
Sie benötigen eine Methode <code>Create($id)</code>. Diese erhält die ID des Vertrages als Argument und soll den Vertrag einrichten. Zunächst sollten Sie <code>$this->loadOptions($id)</code> ausführen, um die Vertragsdetails zu laden. Wenn Sie die Kundendaten benötigen, können Sie mit <code>$u = $this->getClient($id)</code> eine [[Interaktion mit Objekten#Kunden|Instanz der Klasse ''User'']] abrufen.
  
 
Ein Zugriff auf Modul-Einstellungen ist mit <code>$this->getOption("SHORT_NAME")</code> möglich. Als Rückgabe der Funktion wird ein zweidimensionales Array erwartet. Im Erfolgsfall enthält das Array an erster Stelle <code>true</code> und an zweiter Stelle ein Array mit Vertragsdetails. Im Fehlerfall muss an erster Stelle <code>false</code> und an zweiter Stelle eine Fehlermeldung als String stehen.
 
Ein Zugriff auf Modul-Einstellungen ist mit <code>$this->getOption("SHORT_NAME")</code> möglich. Als Rückgabe der Funktion wird ein zweidimensionales Array erwartet. Im Erfolgsfall enthält das Array an erster Stelle <code>true</code> und an zweiter Stelle ein Array mit Vertragsdetails. Im Fehlerfall muss an erster Stelle <code>false</code> und an zweiter Stelle eine Fehlermeldung als String stehen.

Version vom 12. Oktober 2018, 11:59 Uhr

Um Hosting-Produkte automatisch einzurichten, können Sie auch eigene Server-Module schreiben.

Dateistruktur

Ein Server-Modul bekommt ein eigenes Verzeichnis unter modules/provisioning. 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 Provisioning erbt.

Attribute

Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens protected sein dürfen:

  • $name gibt einen Anzeigenamen für das Modul an
  • $short gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen

Konfiguration

Es wird eine Methode Config($id, $product = true) benötigt, diese bekommt eine Produkt-ID ($product = true) oder Vertrags-ID ($product = false) als Argument. Hier können Sie Form-Elemente erstellen. Bitte geben Sie Eingabefelder die CSS-Klasse prov-settings und ein Attribut data-setting mit dem Kurznamen der Einstellung, damit die Daten per Ajax übernommen werden können.

Beispiel:

<input type="text" data-setting="domain" value="<?=$this->getOption("domain");?>" placeholder="sourceway.de" class="form-control prov_settings" />

Sie können auch die Server-Verbindung prüfen lassen oder Daten vom Server abrufen - Beispiele hierzu finden Sie in den verschiedenen mitgelieferten Server-Modulen.

Vertrag erstellen

Sie benötigen eine Methode Create($id). Diese erhält die ID des Vertrages als Argument und soll den Vertrag einrichten. Zunächst sollten Sie $this->loadOptions($id) ausführen, um die Vertragsdetails zu laden. Wenn Sie die Kundendaten benötigen, können Sie mit $u = $this->getClient($id) eine Instanz der Klasse User abrufen.

Ein Zugriff auf Modul-Einstellungen ist mit $this->getOption("SHORT_NAME") möglich. Als Rückgabe der Funktion wird ein zweidimensionales Array erwartet. Im Erfolgsfall enthält das Array an erster Stelle true und an zweiter Stelle ein Array mit Vertragsdetails. Im Fehlerfall muss an erster Stelle false und an zweiter Stelle eine Fehlermeldung als String stehen.

Vertrag löschen

...

Vertrag sperren / entsperren

...

Paket wechseln

...

Modul-Ausgabe

...

E-Mailvariablen

...

Eigene Funktionen

...

API-Integration

...

Beispiel-Code

...