From 65609e761c6b7a5c2fa9afccecb8a4ec3f789f94 Mon Sep 17 00:00:00 2001
From: Cyril Vazquez <cyril.vazquez@maarch.org>
Date: Thu, 30 May 2013 08:01:37 +0000
Subject: [PATCH]

---
 core/trunk/core/class/resources_controler.php | 97 ++++++++++++++++---
 1 file changed, 84 insertions(+), 13 deletions(-)

diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php
index 5d9fdbcc3e3..6b8636cc2da 100755
--- a/core/trunk/core/class/resources_controler.php
+++ b/core/trunk/core/class/resources_controler.php
@@ -153,19 +153,90 @@ class resources_controler
         $fileFormat, 
         $status
     ) {       
-        $encodedContent = base64_encode(file_get_contents($fileURI, FILE_BINARY));
-        
-        $returnResArray = $this->storeResource(
-            $encodedContent,
-            $data, 
-            $collId, 
-            $table, 
-            $fileFormat, 
-            $status
-        );
-        
-        return $returnResArray;
-        
+        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 = file_get_contents($fileURI);
+            $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)
-- 
GitLab