- $thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id);
- if (!empty($thumbnail)) {
- $this->out->element('img', array('alt' => '', 'src' => $thumbnail->url, 'width' => $thumbnail->width, 'height' => $thumbnail->height));
+ $thumb = $this->getThumbInfo();
+ if ($thumb instanceof File_thumbnail) {
+ $this->out->element('img', array('alt' => '', 'src' => $thumb->getUrl(), 'width' => $thumb->width, 'height' => $thumb->height));
+ }
+ }
+
+ /**
+ * Pull a thumbnail image reference for the given file, and if necessary
+ * resize it to match currently thumbnail size settings.
+ *
+ * @return File_Thumbnail or false/null
+ */
+ function getThumbInfo()
+ {
+ $thumbnail = File_thumbnail::getKV('file_id', $this->attachment->id);
+ if ($thumbnail) {
+ $maxWidth = common_config('attachments', 'thumb_width');
+ $maxHeight = common_config('attachments', 'thumb_height');
+ if ($thumbnail->width > $maxWidth) {
+ $thumb = clone($thumbnail);
+ $thumb->width = $maxWidth;
+ $thumb->height = intval($thumbnail->height * $maxWidth / $thumbnail->width);
+ return $thumb;
+ }