Preparing File for dynamic thumbnail generation.

This commit is contained in:
Mikael Nordfeldth 2014-04-21 11:35:42 +02:00
parent 43a3f5ea90
commit b3bf036975
3 changed files with 36 additions and 20 deletions

View File

@ -130,14 +130,11 @@ class AttachmentAction extends Action
parent::handle(); parent::handle();
if (empty($this->attachment->filename)) { if (empty($this->attachment->filename)) {
// if it's not a local file, gtfo // if it's not a local file, gtfo
common_redirect($this->attachment->url, 303); common_redirect($this->attachment->url, 303);
} else {
$this->showPage();
} }
$this->showPage();
} }
/** /**

View File

@ -40,9 +40,18 @@ if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); }
*/ */
class Attachment_thumbnailAction extends AttachmentAction 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() function showCore()
{ {
$file_thumbnail = File_thumbnail::getKV('file_id', $this->attachment->id); // Returns a File_thumbnail object or throws exception if not available
if (empty($file_thumbnail->url)) { $thumbnail = $this->attachment->getThumbnail($this->thumb_w, $this->thumb_h, $this->thumb_a);
return; $this->element('img', array('src' => $thumbnail->getUrl(), 'alt' => 'Thumbnail'));
}
$this->element('img', array('src' => $file_thumbnail->url, 'alt' => 'Thumbnail'));
} }
} }

View File

@ -24,9 +24,6 @@ if (!defined('GNUSOCIAL')) { exit(1); }
*/ */
class File extends Managed_DataObject 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 $__table = 'file'; // table name
public $id; // int(4) primary_key not_null public $id; // int(4) primary_key not_null
public $url; // varchar(255) unique_key public $url; // varchar(255) unique_key
@ -38,9 +35,6 @@ class File extends Managed_DataObject
public $filename; // varchar(255) public $filename; // varchar(255)
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP 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() public static function schemaDef()
{ {
return array( return array(
@ -439,11 +433,29 @@ class File extends Managed_DataObject
/** /**
* Get the attachment's thumbnail record, if any. * 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 * @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() public function getPath()