forked from GNUsocial/gnu-social
Preparing File for dynamic thumbnail generation.
This commit is contained in:
parent
43a3f5ea90
commit
b3bf036975
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user