DOCLimbasSOAP
Aus Limbas Wiki
<-- zurück zur Hauptseite
Inhaltsverzeichnis |
Installation
Die SOAP Funktionalität muß bei beiden Kommunikationspartnern von PHP zu 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
# Autentifikation
$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"];
// path to cookie file
$LIM["cookie_path"] = "/tmp/lmbsscookie";
// session name
$LIM["session_name"] = "limbas_".$LIM["username"];
// 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/";
// relative path to file cache
$LIM["cacheFolder"] = "cache/";
// relative path to data cache
$LIM["dbFolder"] = "db";
// the number of the ram disk (should be mounted manually by admin
$LIM["ramDisk"] = 15;
// if true file are cached and download fronm cache when available
$LIM["cacheFile"] = false;
// if true file are cached and download fronm 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 Array zurück
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
mixed cache_call_client ( Array $lmpar)
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 Umgebungsvariablen aus Limbas.
["getvars"] = array(['fresult']['gtab']['gfield']['umgvar']);
Parameter für auzuführende Aktion.
["action"] = ['gtab_erg']['explorer_main'];
$TABID der gewünschten Tabelle
["gtabid"] = number $TABID;
gewünschte Felder der Tabelle $TABID; Ohne Angabe werden alle Felder ausgelesen.
[$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.
["order"] = mixed [$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]
Beispiel
Dieses Beispiel gibt ein Ergebniss-Array der Tabelle mit der ID 1 und den Feldern der IDs [1,2,3,4,5,6] zurück.
Es wird die Seite [2] angezeigt mit max. 15 Treffern sortiert nach Feld ID 1.
$lmpar["use_noids"] = 0;
$lmpar[0]["getvars"] = array('fresult');
$lmpar[0]["action"] = "gtab_erg";
$lmpar[0]["gtabid"] = "1";
$lmpar[0]["order"] = "1";
$lmpar[0][1]["showfields"] = array(1,2,3,4,5,6);
$lmpar[0][1]["res_next"] = 2;
$lmpar[0][1]["count"] = 15;
Suchen
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
Beispiel
$gsr[1][2] = ""
$lmpar["use_noids"] = 0;
$lmpar[0]["getvars"] = array('fresult');
$lmpar[0]["action"] = "gtab_erg";
$lmpar[0]["gtabid"] = "1";
Verknüpfungen
Das Ergebniss-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 Such-Parameter kann auch auf die Verknüpfungstabellen angewendet werden.
[$VTABID]["showfields"] = array($FIELDID,$FIELDID);
Beispiel
Dieses Beispiel gibt ein Ergebniss-Array der Tabelle mit der ID 1 und den Feldern der IDs [1,2,3,4,5,6] sowie ein Unter-Array mit dem Ergebnis der Verknüpften Tabelle mit der ID 2 und den Feldern der IDs [1,2,3] zurück.
$lmpar["use_noids"] = 0;
$lmpar[0]["getvars"] = array('fresult');
$lmpar[0]["action"] = "gtab_erg";
$lmpar[0]["gtabid"] = "1";
$lmpar[0][1]["showfields"] = array(1,2,3,4,5,6);
$lmpar[0][2]["showfields"] = array(1,2,3);
schreiben
Über die SOAP Schnittstele können ebenfalls Daten geschrieben werden.
Datensatz anlegen
["gnup"][$FIELDID] = mixed value ["gtabid"] = numeric $TABID; ["action"] = "gtab_new"
Beispiel
Anlegen eines neuen Datensatzes der Tabelle mit der TabellenID 1 und füllen der Felder mit der FeldID 3 und 4
$lmpar[0]["gnup"][3] = "neuer" $lmpar[0]["gnup"][4] = "Datensatz" $lmpar[0]["gtabid"] = 1; $lmpar[0]["action"] = "gtab_new";
für weitere Aktionen steht der Rückgabewert "new_x" (new_0) auf dem Server zu Verfügung.
Datensatz löschen/archivieren
["gtabid"] = numeric $TABID; ["action"] = "gtab_hide" | "gtab_delete" ["id"] = numeric $DATAID
Beispiel
Dieses Beispiel löscht den Datensatz mit der ID 25 der Tabelle mit der TabellenID 1
$lmpar[0]["gtabid"] = 1; $lmpar[0]["action"] = "gtab_delete"; $lmpar[0]["id"] = 25;
Datensatz bearbeiten
["gup"]["$TABID,$FIELDID,$DATID] = mixed value ["gtabid"] = numeric $TABID; ["action"] = "gtab_change"
Beispiel
Hier werden 3 Felder mit der FeldID 3,4,5 der Tabelle mit der TabellenID 1 und der DatensatzID 25 geändert.
$lmpar[0]["gup"][1,3,25] = "hallo"; $lmpar[0]["gup"][1,4,25] = "ich"; $lmpar[0]["gup"][1,5,25] = "verstehs"; $lmpar[0]["gtabid"] = 1; $lmpar[0]["action"] = "gtab_change";
Datensatz verknüpfen
Hat man die jeweiligen IDs zweier Datensätze unterschiedlicher Tabellen können diese miteinander verknüpft werden. Die Verknüpfung definiert sich dabei durch den Fedltyp des jeweiligen Feldes. Dabei muß mindestens in einer Tabelle ein Feld mit dem Typ "Verknüpfung" definiert sein.
["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
["gtabid"] = numeric $TABID of source table ["action"] = "gtab_change"
Beispiel
Für den Datensatz ID 8 der Tabelle Kunde soll ein Datensatz ID 45 der Tabelle Ansprechpartner verknüpft werden. Tabelle Kunde hat die TABID 5; Es existiert in der Tabelle Kunde eine Verknüpfung zu Ansprechpartner durch das Feld Ansprechpartner mit der FIELDID 12.
["gnup"]["verknpf"][0] = 1 ["gnup"]["verkn_tabid"][0] = 5 ["gnup"]["verkn_fieldid"][0] = 12 ["gnup"]["verkn_ID"][0] = 8 ["gnup"]["verkn_add_ID"][0] = 45
["gtabid"] = 5 ["action"] = "gtab_change"
Dateien
Feldtyp "Datei-Upload"
Falls in der abgefragen Tabelle Felder vom Typ Upload enthalten sind werden als Ergebnis die Metadaten der Datei ausgegeben.
Ausgabe Beispiel
[6] => Array ( [id] => Array([0] => 2) [name] => Array([0] => screene7.png) [secname] => Array([0] => 2ca69e1e3a1e7) [mimetype] => Array([0] => image/png) [mimeid] => Array([0] => 196) [perm] => Array([0] => 0) [thumb_ok] => Array([0] => 1) [0] => screene7.png )
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
Beispiel
$lmpar[1]["getvars"] = array('fresult','filestruct'); # return result arrays, you can use (fresult,filestruct). fresult is needed for resultsets
$lmpar[1]["action"] = "explorer_main"; # you can use tables [gtab_erg] or filemanager [explorer_main]
$lmpar[1]['show_fields'] = array("19_16","19_25","19_19"); # IDs of requested fileds in tables, you can use files-table and meta-tables [tabid_field_id]
$lmpar[1]["LID"] = "2"; # ID of folder where searched
$lmpar[1]["typ"] = "1"; # type of filemanager, 1 = public directory, 2 = messages, 3 = tables, 4 = user directory, 5 = reports, 6 = dash, 7 = table relation; default = 1
$lmpar[1]["sub"] = "1"; # search in subfolders, 0 = no, 1 = yes; default = 0
$lmpar[1]["ffilter"]["viewmode"] = 1; # viewmodus, 1 = normal, 2 = serachengine; default = 1
$lmpar[1]["ffilter"]["anzahl"] = 50; # count of datasets seen in one page; default = [user_session]
$lmpar[1]["ffilter"]["page"] = 1; # current page-number; default = 1
$lmpar[1]["ffilter"]["content_ao"] = 1; # search and or, 1 = and, 2 = or; default = 1
$lmpar[1]["ffilter"]["content_cs"] = 0; # search part of the word; default = 1
Ordnerstructur
Falls über den Parameter "getvars" angefordert, ist die Ordnerstructur ist über das Array "filestruct" definiert. Die Ordnerstuktur wird als Liste ausgegeben. Über den Wert "level" wird der übergeordnete Order definert. level "0" bezeichnet das root-Verzeichniss
Ausgabe-Beispiel
Ausgabe für einen Ordner mit der ID 4
[view] => Array ([4] => 1)
[add] => Array ([4] => 1)
[addf] => Array ([4] => 1)
[del] => Array ([4] => 1)
[edit] => Array ([4] => 1)
[lock] => Array ([4] => 1)
[id] => Array ([4] => 4)
[name] => Array ([4] => Eigene Dateien)
[path] => Array ([4] => 0)
[level] => Array ([4] => 0)
[typ] => Array ( [4] => 4)
[fix] => Array ([4] => 1)
[readonly] => Array( [4] => 0)
[erstdatum] => Array ( [4] => 01.01.1970 01:00:01)
[editdatum] => Array ([4] => 01.01.1970 01:00:01)
[erstuser] => Array ([4] => 1)
[tab_id] => Array( [4] => 0)
[field_id] => Array ([4] => )
[tabid] => Array ([4] => 0)
Dateien hochladen
Beispiel
require("lib/include.lib");
function call_soap(){
$lmpar[1]["getvars"] = array('fresult');
$lmpar[1]["action"] = "explorer_main";
$lmpar[1]["LID"] = "58"; # ID of folder where the file shoud be uploaded
# you can upload more then one file at one time with the last array key
if($lmpar[1]["upload_file"]["content"][0] = base64_encode(file_get_contents("/mypath/test.jpg"))){ # you have to encode the filecontent to base64
$lmpar[1]["upload_file"]["name"][0] = "test.jpg"; # name of the file
$lmpar[1]["upload_file"]["mimetype"][0] = "image/jpeg"; # mimetype of file
$lmpar[1]["upload_file"]["dublicate"][0] = "overwrite"; # you can overwrite, rename, or versioning files
$lmpar[1]["upload_file"]["relation"][0] = null; #array("datid" => [datid], "gtabid" => [tableid], "fieldid" >= [fieldid]); # you can create a relation to a specific dataset
return call_client($lmpar);
}
}
$lmb = call_soap();
foreach($lmb[1]["ffile"]["id"] as $key => $value){
echo $lmb[1]["ffile"]["name"][$key].", ".$lmb[1]["ffile"]["mimetype"][$key]." - ";
}
Dateien runterladen
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 Soapaufruf-Parameter der die Größe des Thumbnails beschreibt.
$lmpar[0][TABID]["thumbsize"][FIELDID]
Als Ergebnis bekommen wir einen zusätzlichen Link als Ergebnis.
[link] => "URL ZUR DATEI"
Erweiterungen
Die Soap Schnittstelle von LIMBAS kan mit eigenen Erweiterungen ergänzt werden. Die Funktion muß in einer der Extension-Dateien names "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 []
Beispiel
$lmpar[0]["extension"]["myfunction"] = "hallo world"
Erweiterungs Funktion"
function myfunction($param_string=null,$param_array=null,$lmb=null){
return $param_string;
}
