Schnittstellen 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-AbfrageDiese 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 InhaltDiese 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 LongLange 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 Beispiel 1: fresult: Dieses Beispiel gibt ein Ergebnis-Array der Tabelle mit der ID 1 und den Feldern der ID´s [1,2,3,4,5,6] zurück.Es wird die Seite [2] angezeigt mit max. 15 Treffern sortiert nach Feld ID 2 aufsteigend und Feld 3 absteigend. $lmpar["use_noids"] = 0; $lmpar[0]["getvars"] = array('fresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gtabid"] = "1"; $lmpar[0][1]["order"][0] = "2,ASC"; $lmpar[0][1]["order"][1] = "3,DESC"; $lmpar[0][1]["showfields"] = array(1,2,3,4,5,6); $lmpar[0][1]["res_next"] = 2; $lmpar[0][1]["count"] = 15; Beispiel 2: fresult mit use_noids: Dieses Beispiel gibt ein Ergebnis-Array der Tabelle mit dem Namen [‚KUNDEN‘] und den Feldern [‚NAME‘,’VORNAME‘,’STRASSE‘] zurück.Die IDs können mit den reellen Tabellen oder Feldnamen angegeben werden. Die Ausgabe ist ebenfalls mit den reellen Namen anstatt den IDs. $lmpar["use_noids"] = 1; $lmpar[0]["getvars"] = array('fresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gtabid"] = "KUNDEN"; $lmpar[0]['KUNDEN']["showfields"] = array('NAME','VORNAME','STRASSE'); Beispiel 3: gresult: Dieses Beispiel gibt ein vereinfachtes Ergebnis-Array der Tabelle mit der ID 1 aller berechtigten Felder zurück.Die Nutzung von Verknüpfungen oder use_noids ist nicht möglich. $lmpar[0]["getvars"] = array('gresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gtabid"] = "1"; 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 Beispiel 1: Liefert alle Datensätze der Tabelle Kunden (tabid 4) deren Ort (fieldid 5) „Madrid“ ist. $gsr[4][5][0] = "Madrid"; $gsr[4][5]['txt'][0] = 1; $lmpar["use_noids"] = 0; $lmpar[0]["getvars"] = array('fresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gsr"] = $gsr; $lmpar[0]["gtabid"] = "4"; Beispiel 2: Liefert alle Datensätze der Tabelle ‚Kunden‘ deren ‚Ort‘ „Madrid“ ist. $gsr['Kunden']['Ort'][0] = "Madrid"; $gsr['Kunden']['Ort']['txt'][0] = 1; $lmpar["use_noids"] = 1; $lmpar[0]["getvars"] = array('fresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gsr"] = $gsr; $lmpar[0]["gtabid"] = 'Kunden'; Beispiel 3: Liefert den Datensatz der Tabelle Kunden (tabid 4) mit der ID 10. $gsr[4]['ID'] = 10: $lmpar[0]["getvars"] = array('fresult'); $lmpar[0]["action"] = "gtab_erg"; $lmpar[0]["gsr"] = $gsr; $lmpar[0]["gtabid"] = "4"; 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) Beispiel $lmpart[$gtabid]["reminder"] = 2 $lmpart[$gtabid]["reminder_group"] = 4 $lmpart[$gtabid]["reminder_user"] = 1 $lmpart[$gtabid]["reminder_create"] = 1 $lmpart[$gtabid]["reminder_create"] = 'Meier' $lmpart[$gtabid]["reminder_date"] = '01.01.2013' $lmpart[$gtabid]["reminder_from"] = '>= 01.01.2013' $lmpart[$gtabid]["reminder_to"] = '<= 15.01.2013' 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; Beispiel Dieses Beispiel gibt ein Ergebnis-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 ID’s [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); 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. Beispiel 1: Dieses Beispiel gibt ein Ergebnis-Array der Tabelle Auftrag welche mit Kunde der Datensatz-ID 134 verknüpft ist. $lmpar[0]["gtabid"] = 1; $lmpar[0][1]["relation"]["gtabid"] = 2; $lmpar[0][1]["relation"]["fieldid"] = 10; $lmpar[0][1]["relation"]["ID"] = 134; $lmpar[0][1]["relation"]["type"] = 2; Beispiel 2: Dieses Beispiel gibt ein Ergebnis-Array der Tabelle Kunde welche mit Auftrag der Datensatz-ID 20 verknüpft ist. $lmpar[0]["gtabid"] = 2; $lmpar[0][1]["relation"]["gtabid"] = 2; $lmpar[0][1]["relation"]["fieldid"] = 10; $lmpar[0][1]["relation"]["ID"] = 20; $lmpar[0][1]["relation"]["type"] = 1; Schreiben Über die SOAP Schnittstelle 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 Tabellen ID 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 zur 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 Example: 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 / 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" Beispiel A 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" Beispiel B Es soll ein Datensatz der Tabelle Ansprechpartner angelegt werden und gleichzeitig mit dem Kunden der Datensatz ID 8 verknüpft werden. Die Tabelle Ansprechpartner hat die TABID 6; Es existiert in der Tabelle Ansprechpartner eine Verknüpfung oder eine rückwärtige Verknüpfung zu Kunde welche durch das Feld Kunde mit der FIELDID 10 der Tabelle Ansprechpartner definiert ist. Die Zuweisung erfolgt durch den Wert ’new‘ der Parameter [„verkn_ID“] oder [„verkn_add_ID“]. $lmpar[0]["gtabid"] = 6; $lmpar[0]["action"] = "gtab_new"; $lmpar[0]["gnup"][2] = "Hans" $lmpar[0]["gnup"][3] = "Meier" $lmpar[0]["gnup"]["verknpf"][0] = 1 $lmpar[0]["gnup"]["verkn_tabid"][0] = 6 $lmpar[0]["gnup"]["verkn_fieldid"][0] = 10 $lmpar[0]["gnup"]["verkn_ID"][0] = 8 $lmpar[0]["gnup"]["verkn_add_ID"][0] = 'new' Wiedervorlage Wiedervorlage suchen Beispiel $lmpar[0]["action"] = 'reminder'; $lmpar[0]["getReminder"]['gtabid']; # tableid (int) $lmpar[0]["getReminder"]['ID']; # dataset ID (int) $lmpar[0]["getReminder"]['category']; # reminder category (int) $lmpar[0]["getReminder"]['wfl_inst']; # workflow instance (int) $lmpar[0]["getReminder"]['active']; # show reminders where become active after given date, if not set date is now() (date) Wiedervorlage anlegen Beispiel $lmpar[0]["action"] = "reminder" $lmpar[0]["addReminder"]['to_user']; # destination user list as array (array) $lmpar[0]["addReminder"]['to_group']; # destination group list as array (array) $lmpar[0]["addReminder"]['date']; # when reminder becomes active (date) $lmpar[0]["addReminder"]['gtabid']; # tableid (int) $lmpar[0]["addReminder"]['ID']; # dataset ID (int) $lmpar[0]["addReminder"]['category']; # reminder category (int) $lmpar[0]["addReminder"]['wfl_inst']; # workflow instance (int) $lmpar[0]["addReminder"]['content']; # short description $lmpar[0]["addReminder"]['desc']; # long description Wiedervorlage löschen Beispiel $lmpar[0]["action"] = "reminder" $lmpar[0]["dropReminder"]['gtabid']; # tableid (int) $lmpar[0]["dropReminder"]['ID']; # reminder ID, drop directly (int) $lmpar[0]["dropReminder"]['category']; # reminder category (int) $lmpar[0]["dropReminder"]['dat_id']; # dataset ID (int) $lmpar[0]["dropReminder"]['wfl_inst']; # workflow instance (int) $lmpar[0]["dropReminder"]['active']; # delete only reminders where become active after given date $lmpar[0]["dropReminder"]['extension'] # special extension parameters (array) 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. 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 ) 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. Beispiel ["action"] = "file_upload"; ["file"]["content"][0] = base64_encode(file_get_contents('path/to/file')); ["file"]["file"][0] = 'SomeFileName'; 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 $lmpar[1]["verkn_ID"] = 0; # Relation ID of linked table 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. 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 than 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]." - "; } Hinweis: Die Verknüpfung (relation) ist keine Verknüpfung über den FileManager, da es sich hier um den Feldtyp „Datei-Upload“ handelt. 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 [] Beispiel $lmpar[0]["extension"]["myfunction"] = "hallo world" Erweiterungs Funktion function myfunction($param_string=null,$param_array=null,$lmb=null){ return $param_string; } Eine weitere Erweiterung ist die Verwendung von get_gresult (::: get_gresult()) über SOAP. Dabei ist zu beachten, dass der Name der zu bauenden Funktion aus dem Prefix „extSoap“ sowie dem key besteht. In diesem Fall „extSoap“ + „myfunc1“. Die Funktion hat zwei Parameter: $val = zur SQL-Abfrage zu verwendende Werte $lmb = aktuelles SOAP Ausgabe-Array. Beispiel $fnkt['myfunc1'] = array('Kunden','2'); $lmpart[$gtabid]["extension"] = $fnkt function extSoapmyfunc1($val,$lmb) { $ext ['from'][0] = $val[0]; $ext ['where'][0] = "KundenNr" = $val[1]; return $ext; }