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();
if (empty($this->attachment->filename)) {
// if it's not a local file, gtfo
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
{
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'));
}
}

View 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()