DOCLimbasSOAP

Aus Limbas Wiki

Wechseln zu: Navigation, Suche

<-- 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;
}
Persönliche Werkzeuge
Werkzeuge
LANGUAGES