diff --git a/core/trunk/core/class/class_resource.php b/core/trunk/core/class/class_resource.php index 131733d7db6f20d58c908ab47385da84ce628134..8ef170dbede5b9101e7c20685ac8b2fedd4c41d1 100644 --- a/core/trunk/core/class/class_resource.php +++ b/core/trunk/core/class/class_resource.php @@ -153,6 +153,7 @@ if(!$this->check_basic_fields($data)) { $_SESSION['error'] = $this->error; + echo $this->error;exit; return false; } else diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php index 3a111ee103b62c9719e80747a0b99262c27e8732..169a285f974d134d07be7fe70e2239db6900ad8b 100755 --- a/core/trunk/core/class/resources_controler.php +++ b/core/trunk/core/class/resources_controler.php @@ -59,53 +59,90 @@ class resources_controler ##################################### public function storeResource($encodedFile, $data, $collId, $table, $fileFormat, $status) { - $func = new functions(); - $data = $func->object2array($data); - $returnCode = 0; - $db = new dbquery(); - $db->connect(); - //copy sended file on tmp - $fileContent = base64_decode($encodedFile); - $random = rand(); - $fileName = 'tmp_file_' . $random . '.' . $fileFormat; - $Fnm = $_SESSION['config']['tmppath'] . $fileName; - $inF = fopen($Fnm,"w"); - fwrite($inF, $fileContent); - fclose($inF); - //store resource on docserver - $docserverControler = new docservers_controler(); - $fileInfos = array( - 'tmpDir' => $_SESSION['config']['tmppath'], - 'size' => filesize($Fnm), - 'format' => $fileFormat, - 'tmpFileName' => $fileName, - ); - //print_r($fileInfos); - $storeResult = array(); - $storeResult = $docserverControler->storeResourceOnDocserver( - $collId, $fileInfos - ); - //print_r($storeResult);exit; - //store resource metadata in database - $resource = new resource(); - $data = $this->prepareStorage( - $data, - $storeResult['docserver_id'], - $status, - $fileFormat - ); - unlink($Fnm); - //var_dump($data);exit; - $resId = $resource->load_into_db( - $table, - $storeResult['destination_dir'], - $storeResult['file_destination_name'], - $storeResult['path_template'], - $storeResult['docserver_id'], - $data, - $_SESSION['config']['databasetype'] - ); - return $resId; + try { + $func = new functions(); + $data = $func->object2array($data); + for ($i=0; $i < count($data);$i++) { + $data[$i]['column'] = strtolower($data[$i]['column']); + } + $returnCode = 0; + $db = new dbquery(); + $db->connect(); + //copy sended file on tmp + $fileContent = base64_decode($encodedFile); + $random = rand(); + $fileName = 'tmp_file_' . $random . '.' . $fileFormat; + $Fnm = $_SESSION['config']['tmppath'] . $fileName; + $inF = fopen($Fnm,"w"); + fwrite($inF, $fileContent); + fclose($inF); + //store resource on docserver + $docserverControler = new docservers_controler(); + $fileInfos = array( + 'tmpDir' => $_SESSION['config']['tmppath'], + 'size' => filesize($Fnm), + 'format' => $fileFormat, + 'tmpFileName' => $fileName, + ); + //print_r($fileInfos); + $storeResult = array(); + $storeResult = $docserverControler->storeResourceOnDocserver( + $collId, $fileInfos + ); + if (!empty($storeResult['error'])) { + $returnResArray = array( + 'returnCode' => (int) -3, + 'resId' => '', + 'error' => $storeResult['error'], + ); + return $returnResArray; + } + //print_r($storeResult);exit; + //store resource metadata in database + $resource = new resource(); + + $data = $this->prepareStorage( + $data, + $storeResult['docserver_id'], + $status, + $fileFormat + ); + unlink($Fnm); + //var_dump($data);exit; + $resId = $resource->load_into_db( + $table, + $storeResult['destination_dir'], + $storeResult['file_destination_name'], + $storeResult['path_template'], + $storeResult['docserver_id'], + $data, + $_SESSION['config']['databasetype'] + ); + if (!is_numeric($resId)) { + $returnResArray = array( + 'returnCode' => (int) -2, + 'resId' => '', + 'error' => 'Pb with SQL insertion : ' .$resId , + ); + return $returnResArray; + } + if ($resId == 0) { + $resId = ''; + } + $returnResArray = array( + 'returnCode' => (int) 0, + 'resId' => $resId, + 'error' => '', + ); + return $returnResArray; + } catch (Exception $e) { + $returnResArray = array( + 'returnCode' => (int) -1, + 'resId' => '', + 'error' => 'unknown error' . $e->getMessage(), + ); + return $returnResArray; + } } private function prepareStorage($data, $docserverId, $status, $fileFormat) @@ -217,210 +254,57 @@ class resources_controler } ##################################### - ## Web Service de versement de données issue du gros scanner + ## Store datas of the resource in extension table ##################################### - public function storeAttachmentResource($resId, $collId, $encodedContent, $fileFormat, $fileName) + public function storeExtResource($resId, $data, $table) { - require_once 'core/class/class_request.php'; - require_once 'core/class/class_resource.php'; - require_once 'core/class/docservers_controler.php'; - require_once 'core/class/class_security.php'; - $sec = new security(); - $table = $sec->retrieve_table_from_coll($collId); - $db = new request(); - $db->connect(); - $query = 'select res_id from ' . $table . ' where res_id = ' - . $resId; - $db->query($query); - if ($db->nb_result() == 0) { - $status = 'ko'; - $error .= 'res_id inexistant'; - } else { - $fileContent = base64_decode($encodedContent); - $tmpFileName = 'tmp_file_ws_' - . rand() . "_" . md5($fileContent) - . "." . strtolower($fileFormat); - $Fnm = $_SESSION['config']['tmppath'] . $tmpFileName; - $inF = fopen($Fnm, "w"); - fwrite($inF, $fileContent); - fclose($inF); - $docserverControler = new docservers_controler(); - $docserver = $docserverControler->getDocserverToInsert( - $collId + try { + $func = new functions(); + $data = $func->object2array($data); + $queryExtFields = '('; + $queryExtValues = '('; + for ($i=0; $i < count($data);$i++) { + //COLUMN + $data[$i]['column'] = strtolower($data[$i]['column']); + $queryExtFields .= $data[$i]['column'] . ','; + //VALUE + if ($data[$i]['type'] == 'string' || $data[$i]['type'] == 'date') { + $queryExtValues .= "'" . $data[$i]['value'] . "',"; + } else { + $queryExtValues .= $data[$i]['value'] . ","; + } + } + $queryExtFields = preg_replace('/,$/', ',res_id)', $queryExtFields); + $queryExtValues = preg_replace( + '/,$/', ',' . $resId . ')', $queryExtValues ); - if (empty($docserver)) { - $status = 'ko'; - $error = _DOCSERVER_ERROR . ' : ' - . _NO_AVAILABLE_DOCSERVER . ". " . _MORE_INFOS . "."; + $queryExt = " insert into " . $table . " " . $queryExtFields + . ' values ' . $queryExtValues ; + $returnCode = 0; + $db = new dbquery(); + $db->connect(); + if ($db->query($queryExt)) { + $returnResArray = array( + 'returnCode' => (int) 0, + 'resId' => $resId, + 'error' => '', + ); } else { - $newSize = $docserverControler->checkSize( - $docserver, $_SESSION['upfile']['size'] + $returnResArray = array( + 'returnCode' => (int) -2, + 'resId' => '', + 'error' => 'Pb with SQL insertion', ); - if ($newSize == 0) { - $status = 'ko'; - $error = _DOCSERVER_ERROR . ' : ' - . _NOT_ENOUGH_DISK_SPACE . ". " . _MORE_INFOS . "."; - } else { - $fileInfos = array( - "tmpDir" => $_SESSION['config']['tmppath'], - "size" => filesize($Fnm), - "format" => strtolower($fileFormat), - "tmpFileName" => $tmpFileName, - ); - $storeResult = array(); - $storeResult = $docserverControler->storeResourceOnDocserver( - $collId, $fileInfos - ); - if (isset($storeResult['error']) && $storeResult['error'] <> '') { - $status = 'ko'; - $error = $storeResult['error']; - } else { - unlink($Fnm); - $resAttach = new resource(); - $_SESSION['data'] = array(); - array_push( - $_SESSION['data'], - array( - 'column' => "typist", - 'value' => $_SESSION['user']['UserId'], - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "format", - 'value' => strtolower($fileFormat), - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "docserver_id", - 'value' => $storeResult['docserver_id'], - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "status", - 'value' => 'NEW', - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "offset_doc", - 'value' => ' ', - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "logical_adr", - 'value' => ' ', - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "title", - 'value' => strtolower($fileName), - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "coll_id", - 'value' => $collId, - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "res_id_master", - 'value' => $resId, - 'type' => "integer", - ) - ); - if ($_SESSION['origin'] == "scan") { - array_push( - $_SESSION['data'], - array( - 'column' => "scan_user", - 'value' => $_SESSION['user']['UserId'], - 'type' => "string", - ) - ); - array_push( - $_SESSION['data'], - array( - 'column' => "scan_date", - 'value' => $req->current_datetime(), - 'type' => "function", - ) - ); - } - array_push( - $_SESSION['data'], - array( - 'column' => "type_id", - 'value' => 0, - 'type' => "int", - ) - ); - $id = $resAttach->load_into_db( - 'res_attachments', - $storeResult['destination_dir'], - $storeResult['file_destination_name'] , - $storeResult['path_template'], - $storeResult['docserver_id'], $_SESSION['data'], - $_SESSION['config']['databasetype'] - ); - if ($id == false) { - $status = 'ko'; - $error = $resAttach->get_error(); - } else { - $status = 'ok'; - if ($_SESSION['history']['attachadd'] == "true") { - $users = new history(); - $view = $sec->retrieve_view_from_coll_id( - $collId - ); - $users->add( - $view, $resId, "ADD", 'attachadd', - ucfirst(_DOC_NUM) . $id . ' ' - . _NEW_ATTACH_ADDED . ' ' . _TO_MASTER_DOCUMENT - . $resId, - $_SESSION['config']['databasetype'], - 'apps' - ); - $users->add( - RES_ATTACHMENTS_TABLE, $id, "ADD",'attachadd', - _NEW_ATTACH_ADDED . " (" . $fileName - . ") ", - $_SESSION['config']['databasetype'], - 'attachments' - ); - } - } - } - } } + return $returnResArray; + } catch (Exception $e) { + $returnResArray = array( + 'returnCode' => (int) -1, + 'resId' => '', + 'error' => 'unknown error' . $e->getMessage(), + ); + return $returnResArray; } - $returnArray = array( - 'status' => $status, - 'value' => $id, - 'error' => $error, - ); - return $returnArray; } function Demo_searchResources($searchParams) diff --git a/core/trunk/core/class/web_service/class_web_service.php b/core/trunk/core/class/web_service/class_web_service.php index 47348a33170ed53468a3077633ae41245edab418..99415192095cb164ef30c9da144485e140450658 100644 --- a/core/trunk/core/class/web_service/class_web_service.php +++ b/core/trunk/core/class/web_service/class_web_service.php @@ -191,9 +191,11 @@ class webService { $soapServer = new MySoapServer(); $xmlRPC = new MyXmlRPCServer(); $wsMode = explode('/', $_SERVER['QUERY_STRING']); - //echo $_SERVER['QUERY_STRING'];exit; + if (isset($wsMode[0]) && !empty($wsMode[0])) { $wsMode = $wsMode[0]; + } else { + $wsMode = 'RAS'; } $wsMode = explode('&', $wsMode); if (isset($wsMode[0]) && !empty($wsMode[0])) { diff --git a/core/trunk/core/class/ws.php b/core/trunk/core/class/ws.php index 69bc6f3223b5c6b1da6f9116da4e893ad1d98074..1510a53fc7aee5c8afe4206991f01b22f4445bb3 100755 --- a/core/trunk/core/class/ws.php +++ b/core/trunk/core/class/ws.php @@ -34,7 +34,7 @@ $SOAP_typedef['returnViewResource'] = array('status'=>'string', 'file_content'=>'string', 'tmp_path'=>'string', 'file_path'=>'string', - 'called_by_ws'=>'string', + 'called_by_ws'=>'boolean', 'error'=>'string' ); $SOAP_dispatch_map['docserverSave'] = array( @@ -181,7 +181,9 @@ $SOAP_dispatch_map['userGet'] = array( ## Web Service de versement de données issue du gros scanner ##################################### $SOAP_typedef['arrayOfData'] = array( - 'arrayOfDataContent' => '{urn:MySoapServer}arrayOfDataContent', + array( + 'arrayOfDataContent' => '{urn:MySoapServer}arrayOfDataContent' + ) ); $SOAP_typedef['arrayOfDataContent'] = array( @@ -190,6 +192,12 @@ $SOAP_typedef['arrayOfDataContent'] = array( 'type' => 'string', ); +$SOAP_typedef['returnResArray'] = array( + 'returnCode'=> 'int', + 'resId' => 'string', + 'error' => 'string' +); + $SOAP_dispatch_map['storeResource'] = array( 'in' => array( 'encodedFile' => 'string', @@ -198,21 +206,19 @@ $SOAP_dispatch_map['storeResource'] = array( 'table' => 'string', 'fileFormat' => 'string', 'status' => 'string', -), - 'out' => array('out' => 'string'), + ), + 'out' => array('out' => '{urn:MySoapServer}returnResArray'), 'method' => "core#resources::storeResource", ); -$SOAP_dispatch_map['storeAttachmentResource'] = array( +$SOAP_dispatch_map['storeExtResource'] = array( 'in' => array( - 'resId' => 'int', - 'collId' => 'string', - 'encodedContent' => 'string', - 'fileFormat' => 'string', - 'fileName' => 'string', -), - 'out' => array('out' => '{urn:MySoapServer}returnArray'), - 'method' => "core#resources::storeAttachmentResource", + 'resId' => 'long', + 'data' => '{urn:MySoapServer}arrayOfData', + 'table' => 'string', + ), + 'out' => array('out' => '{urn:MySoapServer}returnResArray'), + 'method' => "core#resources::storeExtResource", ); $SOAP_typedef['searchParams'] = array(