X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fattachmentlistitem.php;h=2d484fb6a8e1de797c572305edec477a850d2d6d;hb=refs%2Fheads%2Fupstream-changes%2Fgoogle-analytics-removal;hp=132b2002edd23a78e4593e2f6a79edfd437234f5;hpb=f1c4c64cd976e9026af2aabf1816ffbefaa2414e;p=quix0rs-gnu-social.git diff --git a/lib/attachmentlistitem.php b/lib/attachmentlistitem.php index 132b2002ed..2d484fb6a8 100644 --- a/lib/attachmentlistitem.php +++ b/lib/attachmentlistitem.php @@ -105,9 +105,24 @@ class AttachmentListItem extends Widget } function showRepresentation() { + $enclosure = $this->attachment->getEnclosure(); + if (Event::handle('StartShowAttachmentRepresentation', array($this->out, $this->attachment))) { - if (!empty($this->attachment->mimetype)) { - $mediatype = common_get_mime_media($this->attachment->mimetype); + if (!empty($enclosure->mimetype)) { + // First, prepare a thumbnail if it exists. + $thumb = null; + try { + // Tell getThumbnail that we can show an animated image if it has one (4th arg, "force_still") + $thumb = $this->attachment->getThumbnail(null, null, false, false); + } catch (UseFileAsThumbnailException $e) { + $thumb = null; + } catch (UnsupportedMediaException $e) { + // FIXME: Show a good representation of unsupported/unshowable images + $thumb = null; + } + + // Then get the kind of mediatype we're dealing with + $mediatype = common_get_mime_media($enclosure->mimetype); // FIXME: Get proper mime recognition of Ogg files! If system has 'mediainfo', this should do it: // $ mediainfo --inform='General;%InternetMediaType%' @@ -117,27 +132,24 @@ class AttachmentListItem extends Widget switch ($mediatype) { // Anything we understand as an image, if we need special treatment, do it in StartShowAttachmentRepresentation case 'image': - try { - // Tell getThumbnail that we can show an animated image if it has one (4th arg, "force_still") - $thumb = $this->attachment->getThumbnail(null, null, false, false); + if ($thumb instanceof File_thumbnail) { $this->out->element('img', $thumb->getHtmlAttrs(['class'=>'u-photo', 'alt' => ''])); - } catch (UseFileAsThumbnailException $e) { - $this->out->element('img', array('class'=>'u-photo', 'src' => $e->file->getUrl(), 'alt' => $e->file->title)); - } catch (UnsupportedMediaException $e) { - // FIXME: Show a good representation of unsupported/unshowable images + } else { + $this->out->element('img', array('class'=>'u-photo', 'src' => $this->attachment->getUrl(), 'alt' => $this->attachment->getTitle())); } + unset($thumb); // there's no need carrying this along after this break; // HTML5 media elements case 'audio': case 'video': - try { - $thumb = $this->attachment->getThumbnail(); + if ($thumb instanceof File_thumbnail) { $poster = $thumb->getUrl(); - unset ($thumb); - } catch (Exception $e) { + unset($thumb); // there's no need carrying this along after this + } else { $poster = null; } + $this->out->elementStart($mediatype, array('class'=>"attachment_player u-{$mediatype}", 'poster'=>$poster, @@ -149,6 +161,7 @@ class AttachmentListItem extends Widget break; default: + unset($thumb); // there's no need carrying this along switch ($this->attachment->mimetype) { case 'text/html': if (!empty($this->attachment->filename)