SOAP Schnittstelle

Geschätzte Lektüre: 16 Minuten

Installation

Die SOAP Funktionalität muss bei beiden Kommunikationspartnern von PHP zur Verfügung stehen. (–with-soap) Für LIMBAS stehen vorbereitete Funktionen für den Client und den Server bereit. Die Serverfunktionen sind unter extra/soap/server.php zu finden. Für den Client kann man das komplette „public“ Verzeichnis als Vorlage verwenden. Alle Grundeinstellungen sind dort unter lib/config.lib anpassbar.

Konfiguration

# Authentication
$LIM["username"] = "limbasusername";
$LIM["pass"] = "pass";
// absolute path to LIMBAS
$LIM["lmpath"] = "/usr/local/httpd/htdocs/limbas_2/dependent";  
// Serveraddress to Limbas
$LIM["lim_server"] = "192.168.10.20"; 
// Server URL to LIMBAS
$LIM["lim_urlPath"] = "/limbas_2/dependent"; 
$LIM["lim_url"] = "http://" . $LIM["lim_server"] . "/" . $LIM["lim_urlPath"];
// session name
$LIM["session_name"] = "limbas_".rtrim(base64_encode($LIM["username"]),"=");
$LIM["session_soap_name"] = $LIM["session_name"];
// soap activ / inactiv
$LIM["use_soap"] = 1; 
// cookie activ / inactiv
$LIM["use_cookie"] = 0; 
// name of cacheCookie
$LIM["cookieCache_name"] = "cacheCookie";
// absolute path to public root
$LIM["cache_home"] = "/usr/local/limbas/htdocs/limbas_2/public/";
// absolute path to cookie file
 $LIM["cookie_path"] = $LIM["cache_home"]."/cache/".$LIM["cookieCache_name"];
// relative path to file cache
$LIM["cacheFolder"] = "cache/";
// relative path to data cache
$LIM["dbFolder"] = "db"; 
// the number of the ram disk (should be set manually by admin   
$LIM["ramDisk"] = 15;
// if true files are cached and downloaded from the cache when available   
$LIM["cacheFile"] = false;
// if true files are cached and downloaded from the cache when available   
$LIM["cacheQuery"] = false;
// Max size in MB for the cache
$LIM["cacheSizeLimit"] = 200; 
// seconds without checking if a new version of the file exists
$LIM["cacheMinExpiration"] =  48 * 60 * 60; 
// %
$LIM["cacheToFree"] = 20; 
// for md5 encryption of url
$LIM["key"] = "PASWORD";
define("DEBUG",false);

Funktionen

call_client

call_client – initialisiert die SOAP-Abfrage
Diese Funktion führt eine Anfrage auf den SOAP Server aus und gibt ein Ergebnis zurück. Das Ergebnis kann entweder ein Array oder ein einfaches „true“ oder „false“ sein. Dabei gilt „true“ für Erfolg und „false“ für einen Fehler. Ist ein Fehler aufgetreten wird ein zusätzliches Array-Element „error“ mit dem möglichen Fehlermeldungen ausgegeben.

mixed call_client  ( Array $lmpar)

cache_call_client

cache_call_client – initialisiert die SOAP-Abfrage und cached deren Inhalt
Diese Funktion führt eine Anfrage auf den SOAP Server aus und gibt ein Ergebnis Array zurück. Diese Funktion ist bis auf das Caching identisch zu „call_client“

mixed cache_call_client  ( Array $lmpar)

Die Funktionen call_client und cache_call_client können auch in einem Aufruf gemischt werden.


Parameter Definition von $lmpar

Das Array $lmpar definiert die Parameter-Eigenschaften.
Durch [$lmpar[0]] .. [$lmpar[1]] können mit nur einem SOAP Aufruf mehrere Anfragen auf einmal übergeben werden.
Eine einzige Anfrage wird durch [$lmpar[0]] definiert.


Allgemein

Nutze reale Tabellen und Feldnamen anstatt IDs (gilt Global)

["use_noids"] = boolean $use_noids

Parameter für Rückgabe von globalen Variablen aus Limbas.

["getvars"] = array('fresult'[,'gtab'][,'gfield'][,'umgvar'][,'gselect'][,'userdat'][,'groupdat'][,'gmimetypes'][,'greminder'][,'workflow']);

Parameter für auszuführende Aktion.

["action"] = ['gtab_erg']['explorer_main'];

$TABID der gewünschten Tabelle

["gtabid"] = number $TABID;

gewünschte Felder der Tabelle $TABID; Angabe erforderlich!.

[$TABID]["showfields"] = array($FIELDID,$FIELDID...)

Parameter für Suchkriterien (siehe „Suchen“)

[$TABID]["gsr"] = array($gsr)

zeige Anzahl Treffer; Ohne Angabe wird die LIMBAS Defaulteinstellung übernommen.

[$TABID]["count"] = number $count

zeige Seite; Ohne Angabe wird die erste Seite angezeigt.

[$TABID]["res_next"] = number $page

Sortierung; Ohne Angabe wird nach der LIMBAS Defaulteinstellung sortiert.

[$gtabid]["order"] = Array ['$FIELDID,ASC']

Limitierung des Feldinhalts der Felder des Typs Text oder Long
Lange Inhalte können so schon serverseitig begrenzt werden.

[$TABID]["fieldlimit"][$FIELDID] = number $digits

Thumbnail Generierung von Bildern der Felder des Typs upload Bilder können so schon serverseitig verkleinert werden.

[$TABID]["thumbsize"][$FIELDID] = mixed [$width] [$width x $height] [$width x] [x $height]

Wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um (-> htmlentities)

[$TABID]["noencode"] = 1

Beispiele

Suchen

Tabellen filtern

Suchkriterien werden über den Parameter [„gsr“] definiert.
Es können max. so viele und oder Suchen über ein Feld gelegt werden wie in der $umgvar[„searchcount“] angegeben.

["gsr"][$TABID][$FIELDID][$listid] = mixed $seachrvalue
$gsrres = $gsr[$gtabid][$key][$key1];			# searchvalue
$gsstxt = $gsr[$gtabid][$key]["txt"][$key1];		# text sensitive		
$gssnum = $gsr[$gtabid][$key]["num"][$key1];		# numeric
$gsscs = $gsr[$gtabid][$key]["cs"][$key1];		# case sensitive
$gsandor = $gsr[$gtabid][$key]["andor"][$key1]; 	# and or
$gsstring = $gsr[$gtabid][$key]["string"][$key1];	# find all words
$gsneg = $gsr[$gtabid][$key]["neg"][$key1];		# negotiation
$gsr[$gtabid]['ID'] = ;				# get record with specific ID

Beispiel

Wiedervorlage filtern

Datensätze die mit Wiedervorlagen versehen sind können mit zusätzlichen Suchkriterien gefiltert werden:

  • reminder : # Wiedervorlagen ID
  • reminder_group : # Gruppe die die Wiedervorlage zugewiesen wurde (group_id)
  • reminder_user : # User dem die Wiedervorlage zugewiesen wurde (user_id)
  • reminder_create : # User der die Wiedervorlage erstellt hat (user_id | user_name)
  • reminder_date : # Datum der Wiedervorlage (date)
  • reminder_from : # von Datum (date)
  • reminder_to : # bis Datum (date)

Verknüpfungen

Rekursives Ergebnis

Das Ergebnis-Array kann um Inhalte verknüpfter Tabellen ergänzt werden.
Dabei ist $VTABID die Tabellen ID der verknüpften Tabelle. Es können mehrere Tabellen sowie rekursive Unterverknüpfungen angegeben werden. Tabellen mit Verknüpfungen mit sich selbst lösen sich komplett auf. Der Suchparameter kann auch auf die Verknüpfungstabellen angewendet werden.

Gibt die Anzahl der Verknüpften Datensätze aus:

[$VTABID]["showfields"] = array($FIELDID,$FIELDID);

Gibt ein Array mit den IDs der verknüpften Datensätze aus:

$lmpar[0][$gtabid]["relationval"] = 1;

Verknüpfungsergebnis

Eine Tabellenabfrage kann auf existierende Verknüpfungen gefiltert werden. Also beispielsweise alle Korrespondenzen einer bestimmten Person.

[$VTABID]["relation"]["gtabid"] = $GTABID;
[$VTABID]["relation"]["fieldid"] = $FIELDID;
[$VTABID]["relation"]["ID"] = $ID;
[$VTABID]["relation"]["type"] = [1][2];

Beispiel

In diesem Beispiel soll die Tabelle Auftrag die ID 1 und die Tabelle Kunde die ID 2 haben. Kunde ist über das Feld mit der ID 10 zu Auftrag verknüpft.

Schreiben

Über die SOAP Schnittstelle können ebenfalls Daten geschrieben werden.

Datensatz anlegen

["gnup"][$FIELDID] = mixed value
["gtabid"] = numeric $TABID;
["action"] = "gtab_new"

Für weitere Aktionen steht der Rückgabewert „new_x“ (new_0) auf dem Server zur Verfügung.

Datensatz löschen/archivieren

["gtabid"] = numeric $TABID;
["action"] = "gtab_hide" | "gtab_delete"
["id"] = numeric $DATAID

Datensatz bearbeiten

["gup"][$TABID,$FIELDID,$DATID] = mixed value;
["gtabid"] = numeric $TABID;
["action"] = "gtab_change"

Datensatz verknüpfen / Verknüpfung löschen

Hat man die jeweiligen ID´s zweier Datensätze unterschiedlicher Tabellen, für die eine Verknüpfung besteht, können diese miteinander verknüpft werden. Die Verknüpfung definiert sich dabei durch die Feld-ID des jeweiligen Feldes. Dabei muss mindestens in einer Tabelle ein Feld mit dem Typ „Verknüpfung“ definiert sein. Der Parameter „verkn_add_ID“ erstellt eine Verknüpfung; wobei „verkn_del_ID“ eine Verknüpfung löscht. Wohlgemerkt, nur die Verknüpfungen, nicht die damit verbundenen Datensätze.

["gnup"]["verknpf"][] = 1
["gnup"]["verkn_tabid"][] = numeric $TABID of source table
["gnup"]["verkn_fieldid"][] = numeric $FIELDID of source table
["gnup"]["verkn_ID"][] = numeric $DATID of source table
["gnup"]["verkn_add_ID"][] = numeric/Array) $DATID of destination table / create relation
["gnup"]["verkn_del_ID"][] = (numeric/Array) $DATID of destination table / drop relation
["gnup"]["verkn_linkParam"][] = array() # special params for extended fields; array("FIELDNAME_1"=>"CONTENT_1","FIELDNAME_2"=>"CONTENT_2")
["gtabid"] = numeric $TABID of source table
["action"] = "gtab_change"

Wiedervorlage

Wiedervorlage suchen

Wiedervorlage anlegen

Wiedervorlage löschen

Dateien

Inhalte vom Feldtyp „Datei-Upload“

Falls in der abgefragten Tabelle Felder vom Typ Upload enthalten sind, werden als Ergebnis die Metadaten der Datei ausgegeben.

Einfacher Datei Upload

Der einfache Dateiupload ermöglicht das Hochladen von Dateien in das „/tmp“ Verzeichnis des Servers damit diese dort weiterverarbeitet werden können. Dieser Dateiupload hat nichts mit der DMS Funktionalität von Limbas zu tun. Um eine Datei in das Limbas-DMS zu laden kann die entsprechende DMS Dateiupload Funktion genutzt werden.

Der Inhalt der hochzuladenden Dateien muss mit base64_encode codiert werden. Die Namen der Dateien sind frei wählbar.

DMS

Dateiabfrage

Die Abfrage des DMS Systems erfolgt über die action „explorer_main“.

["action"] = "explorer_main"
["LID"] = numeric $folderID
["typ"] = numeric
["sub"] = boolean
["ffilter"] = array

Ordnerstruktur

Falls über den Parameter „getvars“ angefordert, ist die Ordnerstruktur über das Array „filestruct“ definiert. Die Ordnerstuktur wird als Liste ausgegeben. Über den Wert „level“ wird der übergeordnete Order definiert. level „0“ bezeichnet das root-Verzeichnis.

Dateien hochladen

Dateien herunterladen

Um den Inhalt einer Datei abzurufen ist der Umweg über den LIMBAS Proxy notwendig. Dazu benötigen wir nur die „ID“ der Datei, welche über das Ausgabe-Array verfügbar ist. Die „proxy.php“ ist Teil des LIMBAS SOAP Clients. Eine URL zum Abruf einer Datei kann folgendermaßen erstellt werden:

$url = base64_encode("main.php?action=download&ID=2");
$md5 = md5($LIM["key"].$url);
$url = proxy.php?key=$md5&url=$url

direkter Backend Zugang

Falls ein direkter Zugriff auf das LIMBAS Backend verfügbar ist, kann der vereinfachte Download Aufruf genutzt werden:

$url = "main.php?action=download&ID=2";

Zusätzlich können Bilder in Thumbnails konvertiert werden. Dazu benötigen wir einen weiteren Soap-Aufruf-Parameter, der die Größe des Thumbnails beschreibt.

$lmpar[0][TABID]["thumbsize"][FIELDID]

Als Ergebnis bekommen wir einen zusätzlichen Link.

[link] => "URL ZUR DATEI"

Dateien hochladen und über erweiterten FileManager verknüpfen

Um eine hochgeladene Datei direkt mit einem Datensatz über den extendedFileManager zu verknüpfen, muss folgender Code im obigen Beispiel (Datei hochladen) ergänzt werden:

$lmpar[0]["upload_file"]["link"]["verkn_tabid"][0] = $tabid; //Zieltabelle
$lmpar[0]["upload_file"]["link"]["verkn_fieldid"][0] = $fieldid; //Zielfeld
$lmpar[0]["upload_file"]["link"]["verkn_ID"][0] = $datid; //Zieldatensatz

Erweiterungen

Die Soap Schnittstelle von LIMBAS kann mit eigenen Erweiterungen ergänzt werden. Diese müssen in einer der Extension-Dateien Namens „ext_soap.inc“ liegen. Die Funktion hat drei optionale Parameter:

  • $param_string = gesamter Parameter als String
  • $param_array = Parameter als Array getrennt durch „,“
  • $lmb = aktuelles SOAP Ausgabe-Array

Die Soap-Rückgabe ist der Rückgabewert der Funktion.

Der Aufruf geschieht durch:

$lmpar[0]["extension"][function] = params []
Share this Doc

SOAP Schnittstelle

Or copy link

CONTENTS