LoadMonitor: Avoid "host not replicating?" log messages by checking "is static"
[lhc/web/wiklou.git] / includes / specials / SpecialUploadStash.php
index 1cec116..9573f33 100644 (file)
@@ -145,14 +145,14 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        if ( $handler ) {
                                $params = $handler->parseParamString( $paramString );
 
-                               return array( 'file' => $file, 'type' => $type, 'params' => $params );
+                               return [ 'file' => $file, 'type' => $type, 'params' => $params ];
                        } else {
                                throw new UploadStashBadPathException( 'No handler found for ' .
                                        "mime {$file->getMimeType()} of file {$file->getPath()}" );
                        }
                }
 
-               return array( 'file' => $file, 'type' => $type );
+               return [ 'file' => $file, 'type' => $type ];
        }
 
        /**
@@ -181,7 +181,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * Scale a file (probably with a locally installed imagemagick, or similar)
         * and output it to STDOUT.
         * @param File $file
-        * @param array $params Scaling parameters ( e.g. array( width => '50' ) );
+        * @param array $params Scaling parameters ( e.g. [ width => '50' ] );
         * @param int $flags Scaling flags ( see File:: constants )
         * @throws MWException|UploadStashFileNotFoundException
         * @return bool Success
@@ -227,7 +227,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * client to cache it forever.
         *
         * @param File $file
-        * @param array $params Scaling parameters ( e.g. array( width => '50' ) );
+        * @param array $params Scaling parameters ( e.g. [ width => '50' ] );
         * @param int $flags Scaling flags ( see File:: constants )
         * @throws MWException
         * @return bool Success
@@ -253,10 +253,10 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        '/' . rawurlencode( $scalerThumbName );
 
                // make a curl call to the scaler to create a thumbnail
-               $httpOptions = array(
+               $httpOptions = [
                        'method' => 'GET',
                        'timeout' => 5 // T90599 attempt to time out cleanly
-               );
+               ];
                $req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions, __METHOD__ );
                $status = $req->execute();
                if ( !$status->isOK() ) {
@@ -288,8 +288,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                }
 
                return $file->getRepo()->streamFile( $file->getPath(),
-                       array( 'Content-Transfer-Encoding: binary',
-                               'Expires: Sun, 17-Jan-2038 19:14:07 GMT' )
+                       [ 'Content-Transfer-Encoding: binary',
+                               'Expires: Sun, 17-Jan-2038 19:14:07 GMT' ]
                );
        }
 
@@ -306,6 +306,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                if ( $size > self::MAX_SERVE_BYTES ) {
                        throw new SpecialUploadStashTooLargeException();
                }
+               // Cancel output buffering and gzipping if set
+               wfResetOutputBuffers();
                self::outputFileHeaders( $contentType, $size );
                print $content;
 
@@ -367,14 +369,15 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
                $context = new DerivativeContext( $this->getContext() );
                $context->setTitle( $this->getPageTitle() ); // Remove subpage
-               $form = new HTMLForm( array(
-                       'Clear' => array(
+               $form = HTMLForm::factory( 'ooui', [
+                       'Clear' => [
                                'type' => 'hidden',
                                'default' => true,
                                'name' => 'clear',
-                       )
-               ), $context, 'clearStashedUploads' );
-               $form->setSubmitCallback( array( __CLASS__, 'tryClearStashedUploads' ) );
+                       ]
+               ], $context, 'clearStashedUploads' );
+               $form->setSubmitDestructive();
+               $form->setSubmitCallback( [ __CLASS__, 'tryClearStashedUploads' ] );
                $form->setSubmitTextMsg( 'uploadstash-clear' );
 
                $form->prepareForm();
@@ -382,25 +385,39 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
                // show the files + form, if there are any, or just say there are none
                $refreshHtml = Html::element( 'a',
-                       array( 'href' => $this->getPageTitle()->getLocalURL() ),
+                       [ 'href' => $this->getPageTitle()->getLocalURL() ],
                        $this->msg( 'uploadstash-refresh' )->text() );
                $files = $this->stash->listFiles();
                if ( $files && count( $files ) ) {
                        sort( $files );
                        $fileListItemsHtml = '';
+                       $linkRenderer = $this->getLinkRenderer();
                        foreach ( $files as $file ) {
-                               // TODO: Use Linker::link or even construct the list in plain wikitext
-                               $fileListItemsHtml .= Html::rawElement( 'li', array(),
-                                       Html::element( 'a', array( 'href' =>
-                                               $this->getPageTitle( "file/$file" )->getLocalURL() ), $file )
+                               $itemHtml = $linkRenderer->makeKnownLink(
+                                       $this->getPageTitle( "file/$file" ),
+                                       $file
                                );
+                               try {
+                                       $fileObj = $this->stash->getFile( $file );
+                                       $thumb = $fileObj->generateThumbName( $file, [ 'width' => 220 ] );
+                                       $itemHtml .=
+                                               $this->msg( 'word-separator' )->escaped() .
+                                               $this->msg( 'parentheses' )->rawParams(
+                                                       $linkRenderer->makeKnownLink(
+                                                               $this->getPageTitle( "thumb/$file/$thumb" ),
+                                                               $this->msg( 'uploadstash-thumbnail' )->text()
+                                                       )
+                                               )->escaped();
+                               } catch ( Exception $e ) {
+                               }
+                               $fileListItemsHtml .= Html::rawElement( 'li', [], $itemHtml );
                        }
-                       $this->getOutput()->addHtml( Html::rawElement( 'ul', array(), $fileListItemsHtml ) );
+                       $this->getOutput()->addHTML( Html::rawElement( 'ul', [], $fileListItemsHtml ) );
                        $form->displayForm( $formResult );
-                       $this->getOutput()->addHtml( Html::rawElement( 'p', array(), $refreshHtml ) );
+                       $this->getOutput()->addHTML( Html::rawElement( 'p', [], $refreshHtml ) );
                } else {
-                       $this->getOutput()->addHtml( Html::rawElement( 'p', array(),
-                               Html::element( 'span', array(), $this->msg( 'uploadstash-nofiles' )->text() )
+                       $this->getOutput()->addHTML( Html::rawElement( 'p', [],
+                               Html::element( 'span', [], $this->msg( 'uploadstash-nofiles' )->text() )
                                . ' '
                                . $refreshHtml
                        ) );