Funktionsbeschreibungen Funktion „lmb_fileUpload()“ Geschätzte Lektüre: 5 Minuten lmb_fileUpload mixed lmb_fileUpload(array $file,numeric $level,array $relation=null, boolean $uploadfrom=false, array $dublicate=array(),boolen $verbose=false) Funktion zum Upload einer oder mehrerer Dateieni ins DMS (./limbas_src/extra/explorer/filestructure.lib) Zusammenfassung der Parameter: Informationen der hochgeladenen Datei über das array $file Zielordner Verknüpfungsparamter optionale Dateiquelle Behandlung von Dublikaten Parameter $file gültige Parameter einer hochgeladenen Datei $file[„file“] – string : absoluter Pfad der hochgeladenen Datei $file[„file_name“] : string -Name der Datei $file[„file_type“] : string – MIMETYPE der Datei $file[„file_archiv“] : boolean – true falls zip Archiv ausgepackt werden soll $level gültige Ordner ID in welche die Datei kopiert werden soll $relation Datensatz oder Datensätze zu welchem die Datei verknüpft werden soll. Es können Felder vom Typ Verknüpfung (field_type 11) sowie Upload (field_type 6) verwendet werden. $relation[„gtabid“][0] : Tabellen ID $relation[„fieldid“][0] : Feld ID $relation[„datid“][0] : Datensatz ID $uploadfrom autorisiert ein upload aus unterschiedlichen Quellen ohne vorheriges HTTP Upload 1 : import aus internem System 2 : import aus einem lokalem Pfad 3 : import aus externem Storage – ohne physikDublikatealische datei $dublicate behandelt das Vorgehen falls die Datei schon existiert. Die Dublikatsprüfung erfolgt über den Namen, den Ordner und falls vorhanden der Verknüpfung zu einem Datensatz. Der Parameter „typ“ definiert wie Datei behandelt werden soll. Der Parameter „subj“ kann optional einen Beschreibungstext bei Versionierung beinhalten. Über den Parameter „existingFileID“ kann eine Datei ID übergeben werden welche als Duplikat gefunden wurde. In manchen Fällen möchte man selbst prüfen ob und welche Datei als Duplikat existiert und kann die systeminterne Duplikatsuche überschreiben. Dies ist unter anderem für die Erweiterungs Funktion „lmb_extendedFileUpload“ relevant. $dublicate[„subj“] : version notice if versioning $dublicate[„existingFileID“] : [numeric] $dublicate[„typ“] : overwrite, rename, versioning, skip, ignore overwrite : Datei wird überschrieben, Name bleibt gleich rename : Datei wird umbenannt in Kopie von versioning : Datei wird versioniert, Name bleibt gleich skip : Datei wird nicht hochgeladen oder erzeugt ignore : Datei wird mit dem gleichen Namen gespeichert $verbose true : erzwingt eine detaillierte Ausgabe false : die Funktion gibt nur die Datensatz ID der importieren Datei an Rückgabewert Array aus den verarbeiteten Dateiinformationen falls $verbose = true $fl[„nextid“] : die vergebene Datensatznummer der Tabelle LDMB_FILES $fl[„filesize“] : die Dateigröße $fl[„filename“] : der endgültige Dateiname $fl[„level“] : Die Ordner ID $fl[‚mimetype_id‘] : die MimeType ID der Tabelle LMB_MIMETYPES $fl[‚mimetype‘] : der MimeType $fl[’secname‘] : der Physische Dateiname mit dem die Datei ins Dateisystem abgelegt wurde. $fl[„md5“] : der MD5 Prüfschlüssel der Datei $fl[„vpid“] : die Datensatz ID der referenz Datei falls die Datei versioniert wurde. Erweiterung Die Upload Funktion kann über die festgesetzte Funktion lmb_extendedFileUpload() umgeleitet werden. Dazu wird die Funktion lmb_extendedFileUpload() in einer Erweiterungsdatei benötigt. Ist diese vorhanden wird sie am Anfang des Uploadvorgangs ausgeführt. Sie kann TRUE oder FALSE zurückgeben. Bei TRUE wird die Datei entweder direkt verarbeitet oder die Parameter angepasst. Bei FALSE bricht der Uploadvorgang ab. mixed lmb_extendedFileUpload(array &$file, numeric &$level, array &$relation, array &$dublicate) Die Parameter können per Referenz direkt in der Funktion überschrieben werden. Folgende Parameter werden unterstützt: $file $level $relation $dublicate Beispiele Beispiel Dieses Beispiel nutzt die Umleitung über eine eigene Funktion ‚lmb_extendedFileUpload‘ function lmb_extendedFileUpload(&$file, &$level, &$relation, &$dublicate){ // falls in Ordner 4 hochgeladen wird, wird der Name der Datei geändert und der Zielordner geändert. if($level == 4){ $level = 5; $file["file_name"][0] = "myfile_NEW.pdf"; } // falls in Ordner 6 hochgeladen wird, wird die Datei versucht zu konvertieren. if($level == 6){ if($file["file_type"][0] == 'application/pdf' AND file_exists($file["file"][0])){ # IMACK_ConvertThumbs($file,$width=,$height=null,$prop=null,$dest_format=null,$dest_path=null IMACK_ConvertThumbs($file["file_type"][0],300,null,1,null,'/tmp/convert.png'); $file["file"][0] = '/tmp/convert.png'; } // Eigene Duplikatssuche im Ordner ID 4 anstatt Order 6 if($dublicate['existingFileID'][0] = check_duplicateFile($file["file_name"][0], 4)){ $dublicate['typ'][0] = 'overwrite'; } if(file_exists($file["file"][0])){ return true; }else{ return false; } } return true; } Beispiel Dieses Beispiel importiert eine zuvor hochgeladene Datei aus dem temp Ordner in das Limbas DMS. Dabei soll die Datei in den Ordner mit der ID 10 gelegt und den Namen myfile.pdf bekommen.Der Name soll automatisch umbenannt werden falls die Datei schon existiert. Nachdem die Datei importiert wurde soll sie zusätzlich zu einem spezifischen Datensatz verknüpft werden. Die Tabelle muss dazu ein Verknüpfungsfeld mit der Detaiexplorer Erweiterung besitzen. $level = 10; $file["file"][0] = '/tmp/htg55565765.tmp'; $file["file_name"][0] = myfile.pdf; $file["file_type"][0] = 'application/pdf'; $dublicate['type'][0] = 'rename'; $relation = array("datid" => $ID,"gtabid" => $gtab_id,"fieldid" => $field_id); $output = lmb_fileUpload($file,$level,relation,null,$dublicate); Beispiel Dieses Beispiel importiert analog zum obigen Beispiel eine Datei mit dem Unterschied das die Datei nicht hochgeladen werden musste also schon auf dem Dateisystem existiert. Der Parameter $uploadfrom forciert das die Datei importiert wird ohne das die Prüfung is_uploaded_file() ausgeführt wird. Falls sie im DMS schon existiert wird sie durch den Parameter $dublicate[‚type‘][0] = ’skip‘ ignoriert. $level = 10; $file["file"][0] = '/mnt/myfiles/mytest.pdf'; $file["file_name"][0] = mytest.pdf; $file["file_type"][0] = 'application/pdf'; $dublicate['type'][0] = 'skip'; $uploadfrom = 2; $output = lmb_fileUpload($file,$level,null,$uploadfrom,$dublicate);