Save a thumbnail image when uploading an image file into the file attachments system. Currently hardcoded to 100x75, needs aspect-sensitivity etc.
This commit is contained in:
parent
dc497ed090
commit
c36fecb794
@ -48,12 +48,34 @@ class File_thumbnail extends Memcached_DataObject
|
|||||||
return array(false, false, false);
|
return array(false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveNew($data, $file_id) {
|
/**
|
||||||
|
* Save oEmbed-provided thumbnail data
|
||||||
|
*
|
||||||
|
* @param object $data
|
||||||
|
* @param int $file_id
|
||||||
|
*/
|
||||||
|
public static function saveNew($data, $file_id) {
|
||||||
|
self::saveThumbnail($file_id,
|
||||||
|
$data->thumbnail_url,
|
||||||
|
$data->thumbnail_width,
|
||||||
|
$data->thumbnail_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save a thumbnail record for the referenced file record.
|
||||||
|
*
|
||||||
|
* @param int $file_id
|
||||||
|
* @param string $url
|
||||||
|
* @param int $width
|
||||||
|
* @param int $height
|
||||||
|
*/
|
||||||
|
static function saveThumbnail($file_id, $url, $width, $height)
|
||||||
|
{
|
||||||
$tn = new File_thumbnail;
|
$tn = new File_thumbnail;
|
||||||
$tn->file_id = $file_id;
|
$tn->file_id = $file_id;
|
||||||
$tn->url = $data->thumbnail_url;
|
$tn->url = $url;
|
||||||
$tn->width = intval($data->thumbnail_width);
|
$tn->width = intval($width);
|
||||||
$tn->height = intval($data->thumbnail_height);
|
$tn->height = intval($height);
|
||||||
$tn->insert();
|
$tn->insert();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,11 +48,14 @@ class MediaFile
|
|||||||
{
|
{
|
||||||
if ($user == null) {
|
if ($user == null) {
|
||||||
$this->user = common_current_user();
|
$this->user = common_current_user();
|
||||||
|
} else {
|
||||||
|
$this->user = $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->filename = $filename;
|
$this->filename = $filename;
|
||||||
$this->mimetype = $mimetype;
|
$this->mimetype = $mimetype;
|
||||||
$this->fileRecord = $this->storeFile();
|
$this->fileRecord = $this->storeFile();
|
||||||
|
$this->thumbnailRecord = $this->storeThumbnail();
|
||||||
|
|
||||||
$this->fileurl = common_local_url('attachment',
|
$this->fileurl = common_local_url('attachment',
|
||||||
array('attachment' => $this->fileRecord->id));
|
array('attachment' => $this->fileRecord->id));
|
||||||
@ -102,6 +105,38 @@ class MediaFile
|
|||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate and store a thumbnail image for the uploaded file, if applicable.
|
||||||
|
*
|
||||||
|
* @return File_thumbnail or null
|
||||||
|
*/
|
||||||
|
function storeThumbnail()
|
||||||
|
{
|
||||||
|
if (substr($this->mimetype, 0, strlen('image/')) != 'image/') {
|
||||||
|
// @fixme video thumbs would be nice!
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$image = new ImageFile($this->fileRecord->id,
|
||||||
|
File::path($this->filename));
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Unsupported image type.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$outname = File::filename($this->user->getProfile(), 'thumb-' . $this->filename, $this->mimetype);
|
||||||
|
$outpath = File::path($outname);
|
||||||
|
|
||||||
|
$width = 100;
|
||||||
|
$height = 75;
|
||||||
|
|
||||||
|
$image->resizeTo($outpath, $width, $height);
|
||||||
|
File_thumbnail::saveThumbnail($this->fileRecord->id,
|
||||||
|
File::url($outname),
|
||||||
|
$width,
|
||||||
|
$height);
|
||||||
|
}
|
||||||
|
|
||||||
function rememberFile($file, $short)
|
function rememberFile($file, $short)
|
||||||
{
|
{
|
||||||
$this->maybeAddRedir($file->id, $short);
|
$this->maybeAddRedir($file->id, $short);
|
||||||
|
Loading…
Reference in New Issue
Block a user