MTrackWeb/Image.php
authorAlan Knowles <alan@akkbhome.com>
Mon, 11 Apr 2011 14:33:38 +0000 (22:33 +0800)
committerAlan Knowles <alan@akkbhome.com>
Mon, 11 Apr 2011 14:33:38 +0000 (22:33 +0800)
MTrackWeb/Image.php

index c430ac0..57c14b0 100644 (file)
@@ -9,4 +9,123 @@
  *
  * Crazy but true..
  *
- */
\ No newline at end of file
+ */
+
+/**
+ * view permission should be required on the underlying object...
+ * 
+ * 
+ * Use Cases:
+ * 
+ * Images/{ID}/fullname.xxxx
+ * 
+ * (valid thumbs 200, 400)...?
+ * Images/Thumb/200/{ID}/fullname.xxxx
+ * == force a download..
+ * Images/Download/{ID}/fullname.xxxx
+ * 
+ */
+require_once  'Pman.php';
+class Pman_Images extends Pman
+{
+    function getAuth()
+    {
+        parent::getAuth(); // load company!
+        //return true;
+        $au = $this->getAuthUser();
+        //if (!$au) {
+        //    die("Access denied");
+       // }
+        $this->authUser = $au;
+        
+        return true;
+    }
+    
+    function get($s) // determin what to serve!!!!
+    {
+        $this->as_mimetype = '' ;
+        
+        $bits= explode('/', $s);
+        $id = 0;
+        // without id as first part...
+        if (!empty($bits[0]) && $bits[0] == 'Thumb') {
+            $this->thumb = true;
+            $this->as_mimetype = 'image/jpeg';
+            $this->size = empty($bits[1]) ? '0x0' : $bits[1];
+            $id = empty($bits[2]) ? 0 :   $bits[2];
+            
+        } else if (!empty($bits[0]) && $bits[0] == 'Download') {
+            $this->method = 'attachment';
+            $id = empty($bits[1]) ? 0 :   $bits[1];
+            
+        } else  if (!empty($bits[1]) && $bits[1] == 'Thumb') { // with id as first part.
+            $this->thumb = true;
+            $this->as_mimetype = 'image/jpeg';
+            $this->size = empty($bits[2]) ? '0x0' : $bits[2];
+            $id = empty($bits[3]) ? 0 :   $bits[3];
+            
+        } else {
+            $id = empty($bits[0]) ? 0 :  $bits[0];
+        }
+        
+        $id = (int) $id;
+         
+       
+        $img = DB_DataObjecT::factory('Images');
+        if (!$id || !$img->get($id)) {
+             
+            header('Location: ' . $this->rootURL . '/Pman/templates/images/file-broken.png?reason=' .
+                urlencode("id does not exist, or is invalid"));
+        }
+        $this->serve($img);
+        exit;
+    }
+    var $thumb = false;
+    var $asmimetype = false;
+    var $method = 'inline';
+    function serve($img)
+    {
+        require_once 'File/Convert.php';
+        if (!file_exists($img->getStoreName())) {
+            //print_r($img);exit;
+            header('Location: ' . $this->rootURL . '/Pman/templates/images/file-broken.png?reason=' .
+                urlencode("Original file was missing : " . $img->getStoreName()));
+    
+        }
+        
+        $x = new File_Convert($img->getStoreName(), $img->mimetype);
+        if (empty($this->as_mimetype)) {
+            $this->as_mimetype  = $img->mimetype;
+        }
+        if (!$this->thumb) {
+            $x->convert( $this->as_mimetype);
+            $x->serve($this->method);
+            exit;
+        }
+        
+        $this->validateSize();
+        $x->convert( $this->as_mimetype, $this->size);
+        $x->serve();
+        exit;
+        
+        
+        
+        
+    }
+    function validateSize()
+    {
+        if (!in_array($this->size, array(
+               
+                '100', 
+                '100x100', 
+                '150', 
+                '150x150', 
+                '200', 
+                '200x0',
+                '200x200',  
+                '400x0'
+            ))) {
+            die("invalid scale - ".$this->size);
+        }
+    }
+}
\ No newline at end of file