DOCLimbasSOAP

Aus Limbas Wiki

Wechseln zu: Navigation, Suche

Admin-Dokumentation / Hauptseite


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

# Autentication
$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

Example:

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;


Example:

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');


Example:

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

Example:

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";


Example:

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';


Example:

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

Example:

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üpfungs Ergebnis

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.

Example:

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;
Example:

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

Example:

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

Example:

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

Example:

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

Example:

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

Example:
 $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

Example:
 $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

Example:
 $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

Example:
 ["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

Example:

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

Example:
$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;
}