X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FImages.php;h=98a6f8159abad63d32f73ea99fe83d382eec2a07;hp=adb75c2215f6d28f960d7f405671ade20188b8c5;hb=5d4ac076dc4f620fbb91944eead3e0af66216a03;hpb=c3862f3e019a1821de0bc59ca1faaa39befc1f6c diff --git a/DataObjects/Images.php b/DataObjects/Images.php index adb75c22..98a6f815 100644 --- a/DataObjects/Images.php +++ b/DataObjects/Images.php @@ -2,7 +2,7 @@ /** * Table Definition for Images */ -require_once 'DB/DataObject.php'; +class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php'; class Pman_Core_DataObjects_Images extends DB_DataObject { @@ -30,23 +30,20 @@ class Pman_Core_DataObjects_Images extends DB_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - function checkPerm($perm, $au) + function checkPerm($lvl, $au) { // default permissons are to // allow create / edit / if the user has if (!$au) { - - - return false; } $o = $this->object(); //print_r($o); - if (method_exists($o, 'hasPerm')) { + if (method_exists($o, 'checkPerm')) { // edit permissions on related object needed... - return $o->hasPerm( $perm == 'S' ? 'S' : 'E' , $au); + return $o->checkPerm( $lvl == 'S' ? 'S' : 'E' , $au); } @@ -109,6 +106,7 @@ class Pman_Core_DataObjects_Images extends DB_DataObject { // copy the file into the storage area.. if (!file_exists($file) || !filesize($file)) { + $this->err = "File $file did not exist or is 0 size"; return false; } @@ -268,12 +266,22 @@ class Pman_Core_DataObjects_Images extends DB_DataObject /// ctrl not used?? function onUpload($roo) { -// echo $_FILES['imageUpload']['type'];exit; + //print_r($_FILES); echo $_FILES['imageUpload']['type'];exit; if (empty($_FILES['imageUpload']['tmp_name']) || empty($_FILES['imageUpload']['name']) || empty($_FILES['imageUpload']['type']) ) { - $this->err = "Missing file details"; + + $emap = array( + 0=>"There is no error, the file uploaded with success", + 1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini", + 2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" , + 3=>"The uploaded file was only partially uploaded", + 4=>"No file was uploaded", + 6=>"Missing a temporary folder" + ); + $estr = (empty($_FILES['imageUpload']['error']) ? '?': $emap[$_FILES['imageUpload']['error']]); + $this->err = "Missing file details : Error=". $estr; return false; } @@ -327,6 +335,7 @@ class Pman_Core_DataObjects_Images extends DB_DataObject if (!$this->createFrom($_FILES['imageUpload']['tmp_name'])) { + $this->err = isset($this->err) ? $this->err : "createFrom Image failed"; return false; } return true; @@ -393,8 +402,8 @@ class Pman_Core_DataObjects_Images extends DB_DataObject } - function toRooArray($req = array()) { - // echo '
';print_r($req);exit;
+    function toRooArray($req) {
+        
         $ret= $this->toArray();
       
         static $ff = false;
@@ -406,7 +415,9 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
                     $ff->Pman_Images['public_baseURL'] : $ff->baseURL;
         
         if (!empty($req['query']['imagesize'])) {
-             $baseURL = isset($req['query']['imageBaseURL']) ? $req['query']['imageBaseURL'] : false;
+            // query/imageBaseURL ... depricated...? -- set it in config?
+            
+            $baseURL = isset($req['query']['imageBaseURL']) ? $req['query']['imageBaseURL'] : $ret['public_baseURL'];
             
             $ret['url'] = $this->URL(-1, '/Images/Download',$baseURL);
             
@@ -615,7 +626,7 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
 //        print_r(!$this->onUpload($this));
         
         if ( !$this->onUpload($this)) { 
-            $roo->jerr("File upload failed : ". (!empty($this->err) ? $this->err : ''));
+            $roo->jerr("File upload failed : error = ". (!empty($this->err) ? $this->err : ''));
         }
         
         $roo->addEvent("ADD", $this, $this->toEventString());
@@ -642,14 +653,9 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
         //$p->toEventString();
     }
     
-    function onUploadFromData($filename, $data, $roo)
+    function onUploadFromData($data, $roo)
     {
-        
-//        echo $_FILES['imageUpload']['type'];exit;
-        if (empty($_FILES['imageUpload']['tmp_name']) || 
-            empty($_FILES['imageUpload']['name']) || 
-            empty($_FILES['imageUpload']['type'])
-        ) {
+        if (empty($data)) {
             $this->err = "Missing file details";
             return false;
         }
@@ -657,7 +663,8 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
         if ($this->id) {
             $this->beforeDelete();
         }
-        if ( empty($this->ontable)) {
+        
+        if (empty($this->ontable)) {
             $this->err = "Missing  ontable";
             return false;
         }
@@ -677,11 +684,9 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
             
         }
         
-        
-        
         require_once 'File/MimeType.php';
         $y = new File_MimeType();
-        $this->mimetype = $_FILES['imageUpload']['type'];
+        
         if (in_array($this->mimetype, array(
                         'text/application',
                         'application/octet-stream',
@@ -691,90 +696,62 @@ class Pman_Core_DataObjects_Images extends DB_DataObject
                         'application/vnd.ms-excel',   /// sometimes windows reports csv as excel???
                         'application/csv-tab-delimited-table', // windows again!!?
                 ))) { // weird tyeps..
-            $inf = pathinfo($_FILES['imageUpload']['name']);
+            $inf = pathinfo($this->filename);
             $this->mimetype  = $y->fromExt($inf['extension']);
         }
         
-        
         $ext = $y->toExt(trim((string) $this->mimetype ));
         
-        $this->filename = empty($this->filename) ? 
-            $_FILES['imageUpload']['name'] : ($this->filename .'.'. $ext); 
-        
-        
+        if(array_pop(explode('.', $this->filename)) != $ext){
+            $this->filename = $this->filename .'.'. $ext; 
+        }
         
-        if (!$this->createFrom($_FILES['imageUpload']['tmp_name'])) {
+        if (!$this->createFromData($data)) {
             return false;
         }
+        
         return true;
          
     }
     
-    function createFromData($file, $filename=false)
-    {
-        // copy the file into the storage area..
-        if (!file_exists($file) || !filesize($file)) {
-            return false;
-        }
-        
-        $filename = empty($filename) ? $file : $filename;
-        
-        if (empty($this->mimetype)) {
-            require_once 'File/MimeType.php';
-            $y = new File_MimeType();
-            $this->mimetype = $y->fromFilename($filename);
-        }
+    function createFromData($data)
+    {   
         
         $this->mimetype= strtolower($this->mimetype);
         
         if (array_shift(explode('/', $this->mimetype)) == 'image') { 
         
-            $imgs = @getimagesize($file);
+            $imgs = @getimagesize($data);
             
-            if (empty($imgs) || empty($imgs[0]) || empty($imgs[1])) {
-                // it's a file!!!!
-            } else {
+            if (!empty($imgs) && !empty($imgs[0]) && !empty($imgs[1])) {
                 list($this->width , $this->height)  = $imgs;
             }
         }
         
-        $this->filesize = filesize($file);
         $this->created = date('Y-m-d H:i:s');
-         
         
-        if (empty($this->filename)) {
-            $this->filename = basename($filename);
-        }
-        
-        //DB_DataObject::debugLevel(1);
         if (!$this->id) {
             $this->insert();
         } else {
             $this->update();
         }
         
-        
-        
         $f = $this->getStoreName();
         $dest = dirname($f);
         if (!file_exists($dest)) {
-            // currently this is 0775 due to problems using shared hosing (FTP)
-            // it makes all the files unaccessable..
-            // you can normally solve this by giving the storedirectory better perms
-            // if needed on a dedicated server..
             $oldumask = umask(0);
             mkdir($dest, 0775, true);
             umask($oldumask);  
         }
         
-        copy($file,$f);
+        file_put_contents($f, file_get_contents("data://" . $data));
         
-        // fill in details..
+        $o = clone($this);
         
-        /* thumbnails */
+        $this->filesize = filesize($f);
+        
+        $this->update($o);
         
-     
-       // $this->createThumbnail(0,50);
         return true;
         
     }