Only use saved thumbnails for notice list attachment thumbs -- don't attempt to search enclosures for photo types. We now save thumbs directly for oEmbed photos that don't list a separate thumb entry (like Flickr), so it's not needed. Keeps things cleaner :D

This commit is contained in:
Brion Vibber 2010-11-12 14:03:57 -08:00
parent 2c4313467f
commit 2c33fdd2fb

View File

@ -218,56 +218,31 @@ class AttachmentListItem extends Widget
function showRepresentation() { function showRepresentation() {
$thumb = $this->getThumbInfo(); $thumb = $this->getThumbInfo();
if ($thumb) { if ($thumb) {
$thumb = $this->sizeThumb($thumb);
$this->out->element('img', array('alt' => '', 'src' => $thumb->url, 'width' => $thumb->width, 'height' => $thumb->height)); $this->out->element('img', array('alt' => '', 'src' => $thumb->url, 'width' => $thumb->width, 'height' => $thumb->height));
} }
} }
/** /**
* Pull a thumbnail image reference for the given file. * Pull a thumbnail image reference for the given file, and if necessary
* In order we check: * resize it to match currently thumbnail size settings.
* 1) file_thumbnail table (thumbnails found via oEmbed)
* 2) image URL from direct dereference or oEmbed 'photo' type URL
* 3) ???
* *
* @return mixed object with (url, width, height) properties, or false * @return File_Thumbnail or false/null
*/ */
function getThumbInfo() function getThumbInfo()
{ {
$thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id); $thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id);
if ($thumbnail) { if ($thumbnail) {
return $thumbnail; $maxWidth = common_config('attachments', 'thumb_width');
} $maxHeight = common_config('attachments', 'thumb_height');
$enc = $this->attachment->getEnclosure();
if ($enc) {
switch ($enc->mimetype) {
case 'image/gif':
case 'image/png':
case 'image/jpg':
case 'image/jpeg':
$thumb = (object)array();
$thumb->url = $enc->url;
// @fixme use the given width/height aspect
$thumb->width = common_config('attachments', 'thumb_width');
$thumb->height = common_config('attachments', 'thumb_height');
return $thumb;
}
}
return false;
}
function sizeThumb($thumbnail) {
$maxWidth = 100;
$maxHeight = 75;
if ($thumbnail->width > $maxWidth) { if ($thumbnail->width > $maxWidth) {
$thumb = clone($thumbnail); $thumb = clone($thumbnail);
$thumb->width = $maxWidth; $thumb->width = $maxWidth;
$thumb->height = intval($thumbnail->height * $maxWidth / $thumbnail->width); $thumb->height = intval($thumbnail->height * $maxWidth / $thumbnail->width);
return $thumb; return $thumb;
} else {
return $thumbnail;
} }
} }
return $thumbnail;
}
/** /**
* start a single notice. * start a single notice.