X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fmedia%2FMediaTransformOutput.php;h=41b09e6b486ef3d9fbaaaf452c3956fcd8927dc1;hb=5086bae49ce3615885099e4a2922536406f52a69;hp=c49d3f2094869ae6f0966d3e62c27934ff2bdd4f;hpb=0182f3fb638750850b7a34018730e77f2fffd048;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/media/MediaTransformOutput.php b/includes/media/MediaTransformOutput.php index c49d3f2094..41b09e6b48 100644 --- a/includes/media/MediaTransformOutput.php +++ b/includes/media/MediaTransformOutput.php @@ -27,30 +27,44 @@ * @ingroup Media */ abstract class MediaTransformOutput { - /** - * @var File + /** @var array Associative array mapping optional supplementary image files + * from pixel density (eg 1.5 or 2) to additional URLs. */ - var $file; + public $responsiveUrls = array(); - var $width, $height, $url, $page, $path, $lang; + /** @var File object */ + protected $file; - /** - * @var array Associative array mapping optional supplementary image files - * from pixel density (eg 1.5 or 2) to additional URLs. - */ - public $responsiveUrls = array(); + /** @var int Image width */ + protected $width; + + /** @var int Image height */ + protected $height; + + /** @var string URL path to the thumb */ + protected $url; + + /** @var bool|string */ + protected $page; + + /** @var bool|string Filesystem path to the thumb */ + protected $path; + + /** @var bool|string Language code, false if not set */ + protected $lang; + /** @var bool|string Permanent storage path */ protected $storagePath = false; /** - * @return integer Width of the output box + * @return int Width of the output box */ public function getWidth() { return $this->width; } /** - * @return integer Height of the output box + * @return int Height of the output box */ public function getHeight() { return $this->height; @@ -123,7 +137,7 @@ abstract class MediaTransformOutput { * thumbnail is to be handled client-side only, or if * transformation was deferred via TRANSFORM_LATER. * - * @return Bool + * @return bool */ public function hasFile() { // If TRANSFORM_LATER, $this->path will be false. @@ -135,7 +149,7 @@ abstract class MediaTransformOutput { * Check if the output thumbnail is the same as the source. * This can occur if the requested width was bigger than the source. * - * @return Bool + * @return bool */ public function fileIsSource() { return ( !$this->isError() && $this->path === null ); @@ -156,6 +170,7 @@ abstract class MediaTransformOutput { $be = $this->file->getRepo()->getBackend(); // The temp file will be process cached by FileBackend $fsFile = $be->getLocalReference( array( 'src' => $this->path ) ); + return $fsFile ? $fsFile->getPath() : false; } else { return $this->path; // may return false @@ -166,13 +181,14 @@ abstract class MediaTransformOutput { * Stream the file if there were no errors * * @param array $headers Additional HTTP headers to send on success - * @return Bool success + * @return bool Success */ public function streamFile( $headers = array() ) { if ( !$this->path ) { return false; } elseif ( FileBackend::isStoragePath( $this->path ) ) { $be = $this->file->getRepo()->getBackend(); + return $be->streamFile( array( 'src' => $this->path, 'headers' => $headers ) )->isOK(); } else { // FS-file return StreamFile::stream( $this->getLocalCopyPath(), $headers ); @@ -182,9 +198,8 @@ abstract class MediaTransformOutput { /** * Wrap some XHTML text in an anchor tag with the given attributes * - * @param $linkAttribs array - * @param $contents string - * + * @param array $linkAttribs + * @param string $contents * @return string */ protected function linkWrap( $linkAttribs, $contents ) { @@ -197,7 +212,7 @@ abstract class MediaTransformOutput { /** * @param $title string - * @param $params string|array Query parameters to add + * @param string|array $params Query parameters to add * @return array */ public function getDescLinkAttribs( $title = null, $params = array() ) { @@ -224,6 +239,7 @@ abstract class MediaTransformOutput { if ( $title ) { $attribs['title'] = $title; } + return $attribs; } } @@ -241,11 +257,10 @@ class ThumbnailImage extends MediaTransformOutput { * $parameters should include, as a minimum, (file) 'width' and 'height'. * It may also include a 'page' parameter for multipage files. * - * @param $file File object + * @param File $file * @param string $url URL path to the thumb - * @param $path String|bool|null: filesystem path to the thumb + * @param string|bool $path Filesystem path to the thumb * @param array $parameters Associative array of parameters - * @private */ function __construct( $file, $url, $path = false, $parameters = array() ) { # Previous parameters: @@ -300,6 +315,8 @@ class ThumbnailImage extends MediaTransformOutput { * desc-query String, description link query params * override-width Override width attribute. Should generally not set * override-height Override height attribute. Should generally not set + * no-dimensions Boolean, skip width and height attributes (useful if + * set in CSS) * custom-url-link Custom URL to link to * custom-title-link Custom Title object to link to * custom target-link Value of the target attribute, for custom-target-link @@ -336,13 +353,17 @@ class ThumbnailImage extends MediaTransformOutput { $linkAttribs['rel'] = $options['parser-extlink-rel']; } } elseif ( !empty( $options['custom-title-link'] ) ) { + /** @var Title $title */ $title = $options['custom-title-link']; $linkAttribs = array( 'href' => $title->getLinkURL(), 'title' => empty( $options['title'] ) ? $title->getFullText() : $options['title'] ); } elseif ( !empty( $options['desc-link'] ) ) { - $linkAttribs = $this->getDescLinkAttribs( empty( $options['title'] ) ? null : $options['title'], $query ); + $linkAttribs = $this->getDescLinkAttribs( + empty( $options['title'] ) ? null : $options['title'], + $query + ); } elseif ( !empty( $options['file-link'] ) ) { $linkAttribs = array( 'href' => $this->file->getURL() ); } else { @@ -352,9 +373,11 @@ class ThumbnailImage extends MediaTransformOutput { $attribs = array( 'alt' => $alt, 'src' => $this->url, - 'width' => $this->width, - 'height' => $this->height ); + if ( empty( $options['no-dimensions'] ) ) { + $attribs['width'] = $this->width; + $attribs['height'] = $this->height; + } if ( !empty( $options['valign'] ) ) { $attribs['style'] = "vertical-align: {$options['valign']}"; } @@ -377,7 +400,6 @@ class ThumbnailImage extends MediaTransformOutput { return $this->linkWrap( $linkAttribs, Xml::element( 'img', $attribs ) ); } - } /** @@ -386,7 +408,11 @@ class ThumbnailImage extends MediaTransformOutput { * @ingroup Media */ class MediaTransformError extends MediaTransformOutput { - var $htmlMsg, $textMsg, $width, $height, $url, $path; + /** @var string HTML formatted version of the error */ + private $htmlMsg; + + /** @var string Plain text formatted version of the error */ + private $textMsg; function __construct( $msg, $width, $height /*, ... */ ) { $args = array_slice( func_get_args(), 3 );