]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Preparing File for dynamic thumbnail generation.
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 21 Apr 2014 09:35:42 +0000 (11:35 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 21 Apr 2014 10:33:26 +0000 (12:33 +0200)
actions/attachment.php
actions/attachment_thumbnail.php
classes/File.php

index b532b81d88438ddbf5a91b3a5e854129137531fb..30499c15f4764b71296d71745cca07101f54d9ec 100644 (file)
@@ -130,14 +130,11 @@ class AttachmentAction extends Action
         parent::handle();
 
         if (empty($this->attachment->filename)) {
-
             // if it's not a local file, gtfo
-
             common_redirect($this->attachment->url, 303);
-
-        } else {
-            $this->showPage();
         }
+
+        $this->showPage();
     }
 
     /**
index 93df840d56a10046f7f938e8a96aadde5dade9a6..6e8baeee7aa75324826817cb4d7284c7f86d4511 100644 (file)
@@ -40,9 +40,18 @@ if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
  */
 class Attachment_thumbnailAction extends AttachmentAction
 {
-    protected function handle()
+    protected $thumb_w = null;  // max width
+    protected $thumb_h = null;  // max height
+    protected $thumb_a = null;  // "aspect ratio" (more like "square", 1 or 0)
+
+    protected function prepare(array $args=array())
     {
-        $this->showPage();
+        parent::prepare($args);
+
+        foreach (array('w', 'h', 'a') as $attr) {
+            $this->{"thumb_$attr"} = $this->arg($attr);
+        }
+        return true;
     }
 
     /**
@@ -67,10 +76,8 @@ class Attachment_thumbnailAction extends AttachmentAction
      */
     function showCore()
     {
-        $file_thumbnail = File_thumbnail::getKV('file_id', $this->attachment->id);
-        if (empty($file_thumbnail->url)) {
-            return;
-        }
-        $this->element('img', array('src' => $file_thumbnail->url, 'alt' => 'Thumbnail'));
+        // Returns a File_thumbnail object or throws exception if not available
+        $thumbnail = $this->attachment->getThumbnail($this->thumb_w, $this->thumb_h, $this->thumb_a);
+        $this->element('img', array('src' => $thumbnail->getUrl(), 'alt' => 'Thumbnail'));
     }
 }
index f58a75d9d31e6dad7e2d170c0225483d8c48dcf9..7748fe83f9fd30223ac77d3bddb5119e1102e771 100644 (file)
@@ -24,9 +24,6 @@ if (!defined('GNUSOCIAL')) { exit(1); }
  */
 class File extends Managed_DataObject
 {
-    ###START_AUTOCODE
-    /* the code below is auto generated do not remove the above tag */
-
     public $__table = 'file';                            // table name
     public $id;                              // int(4)  primary_key not_null
     public $url;                             // varchar(255)  unique_key
@@ -38,9 +35,6 @@ class File extends Managed_DataObject
     public $filename;                        // varchar(255)
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
-    /* the code above is auto generated do not remove the tag below */
-    ###END_AUTOCODE
-
     public static function schemaDef()
     {
         return array(
@@ -439,11 +433,29 @@ class File extends Managed_DataObject
     /**
      * Get the attachment's thumbnail record, if any.
      *
+     * @param $width  int   Max width of thumbnail in pixels
+     * @param $height int   Max height of thumbnail in pixels. If null, set to $width
+     *
      * @return File_thumbnail
      */
-    function getThumbnail()
+    public function getThumbnail($width=null, $height=null)
     {
-        return File_thumbnail::getKV('file_id', $this->id);
+        if ($width === null) {
+            $width = common_config('attachments', 'thumb_width');
+            $height = common_config('attachments', 'thumb_height');
+            $square = common_config('attachments', 'thumb_square');
+        } elseif ($height === null) {
+            $square = true;
+        }
+
+        $params = array('file_id'=> $this->id,
+                        'width'  => $width,
+                        'height' => $square ? $width : $height);
+        $thumb = File_thumbnail::pkeyGet($params);
+        if ($thumb === null) {
+            // generate a new thumbnail for desired parameters
+        }
+        return $thumb;
     }
 
     public function getPath()