X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fupload%2FUploadFromUrl.php;h=6639c340aedbaaa170bff33fa23212911e050cff;hp=f897a796b9db8d77661e7076ea1f0ea15ef0d045;hb=e3bd13db0c285f312e31bb1b7271af4628cca80c;hpb=9e6032545bfb638963ac999420942b60ef82e240 diff --git a/includes/upload/UploadFromUrl.php b/includes/upload/UploadFromUrl.php index f897a796b9..6639c340ae 100644 --- a/includes/upload/UploadFromUrl.php +++ b/includes/upload/UploadFromUrl.php @@ -29,12 +29,11 @@ * @author Michael Dale */ class UploadFromUrl extends UploadBase { - protected $mAsync, $mUrl; - protected $mIgnoreWarnings = true; + protected $mUrl; protected $mTempPath, $mTmpHandle; - protected static $allowedUrls = array(); + protected static $allowedUrls = []; /** * Checks if the user is allowed to use the upload-by-URL feature. If the @@ -118,7 +117,7 @@ class UploadFromUrl extends UploadBase { public static function isAllowedUrl( $url ) { if ( !isset( self::$allowedUrls[$url] ) ) { $allowed = true; - Hooks::run( 'IsUploadAllowedFromUrl', array( $url, &$allowed ) ); + Hooks::run( 'IsUploadAllowedFromUrl', [ $url, &$allowed ] ); self::$allowedUrls[$url] = $allowed; } @@ -130,21 +129,12 @@ class UploadFromUrl extends UploadBase { * * @param string $name * @param string $url - * @param bool|string $async Whether the download should be performed - * asynchronous. False for synchronous, async or async-leavemessage for - * asynchronous download. * @throws MWException */ - public function initialize( $name, $url, $async = false ) { - global $wgAllowAsyncCopyUploads; - + public function initialize( $name, $url ) { $this->mUrl = $url; - $this->mAsync = $wgAllowAsyncCopyUploads ? $async : false; - if ( $async ) { - throw new MWException( 'Asynchronous copy uploads are no longer possible as of r81612.' ); - } - $tempPath = $this->mAsync ? null : $this->makeTemporaryFile(); + $tempPath = $this->makeTemporaryFile(); # File size and removeTempFile will be filled in later $this->initializePathInfo( $name, $tempPath, 0, false ); } @@ -186,13 +176,13 @@ class UploadFromUrl extends UploadBase { } /** - * Download the file (if not async) + * Download the file * - * @param array $httpOptions Array of options for MWHttpRequest. Ignored if async. + * @param array $httpOptions Array of options for MWHttpRequest. * This could be used to override the timeout on the http request. * @return Status */ - public function fetchFile( $httpOptions = array() ) { + public function fetchFile( $httpOptions = [] ) { if ( !Http::isValidURI( $this->mUrl ) ) { return Status::newFatal( 'http-invalid-url', $this->mUrl ); } @@ -203,11 +193,7 @@ class UploadFromUrl extends UploadBase { if ( !self::isAllowedUrl( $this->mUrl ) ) { return Status::newFatal( 'upload-copy-upload-invalid-url' ); } - if ( !$this->mAsync ) { - return $this->reallyFetchFile( $httpOptions ); - } - - return Status::newGood(); + return $this->reallyFetchFile( $httpOptions ); } /** @@ -256,7 +242,7 @@ class UploadFromUrl extends UploadBase { * @param array $httpOptions Array of options for MWHttpRequest * @return Status */ - protected function reallyFetchFile( $httpOptions = array() ) { + protected function reallyFetchFile( $httpOptions = [] ) { global $wgCopyUploadProxy, $wgCopyUploadTimeout; if ( $this->mTempPath === false ) { return Status::newFatal( 'tmp-create-error' ); @@ -272,7 +258,7 @@ class UploadFromUrl extends UploadBase { $this->mRemoveTempFile = true; $this->mFileSize = 0; - $options = $httpOptions + array( 'followRedirects' => true ); + $options = $httpOptions + [ 'followRedirects' => true ]; if ( $wgCopyUploadProxy !== false ) { $options['proxy'] = $wgCopyUploadProxy; @@ -287,7 +273,7 @@ class UploadFromUrl extends UploadBase { '<' . implode( ',', array_keys( array_filter( $options ) ) ) . '>' ); $req = MWHttpRequest::factory( $this->mUrl, $options, __METHOD__ ); - $req->setCallback( array( $this, 'saveTempFileChunk' ) ); + $req->setCallback( [ $this, 'saveTempFileChunk' ] ); $status = $req->execute(); if ( $this->mTmpHandle ) { @@ -300,7 +286,7 @@ class UploadFromUrl extends UploadBase { } wfDebugLog( 'fileupload', $status ); - if ( $status->isOk() ) { + if ( $status->isOK() ) { wfDebugLog( 'fileupload', 'Download by URL completed successfuly.' ); } else { wfDebugLog( @@ -311,91 +297,4 @@ class UploadFromUrl extends UploadBase { return $status; } - - /** - * Wrapper around the parent function in order to defer verifying the - * upload until the file really has been fetched. - * @return array|mixed - */ - public function verifyUpload() { - if ( $this->mAsync ) { - return array( 'status' => UploadBase::OK ); - } - - return parent::verifyUpload(); - } - - /** - * Wrapper around the parent function in order to defer checking warnings - * until the file really has been fetched. - * @return array - */ - public function checkWarnings() { - if ( $this->mAsync ) { - $this->mIgnoreWarnings = false; - - return array(); - } - - return parent::checkWarnings(); - } - - /** - * Wrapper around the parent function in order to defer checking protection - * until we are sure that the file can actually be uploaded - * @param User $user - * @return bool|mixed - */ - public function verifyTitlePermissions( $user ) { - if ( $this->mAsync ) { - return true; - } - - return parent::verifyTitlePermissions( $user ); - } - - /** - * Wrapper around the parent function in order to defer uploading to the - * job queue for asynchronous uploads - * @param string $comment - * @param string $pageText - * @param bool $watch - * @param User $user - * @return Status - */ - public function performUpload( $comment, $pageText, $watch, $user ) { - if ( $this->mAsync ) { - $sessionKey = $this->insertJob( $comment, $pageText, $watch, $user ); - - return Status::newFatal( 'async', $sessionKey ); - } - - return parent::performUpload( $comment, $pageText, $watch, $user ); - } - - /** - * @param string $comment - * @param string $pageText - * @param bool $watch - * @param User $user - * @return string - */ - protected function insertJob( $comment, $pageText, $watch, $user ) { - $sessionKey = $this->stashSession(); - $job = new UploadFromUrlJob( $this->getTitle(), array( - 'url' => $this->mUrl, - 'comment' => $comment, - 'pageText' => $pageText, - 'watch' => $watch, - 'userName' => $user->getName(), - 'leaveMessage' => $this->mAsync == 'async-leavemessage', - 'ignoreWarnings' => $this->mIgnoreWarnings, - 'sessionId' => session_id(), - 'sessionKey' => $sessionKey, - ) ); - $job->initializeSessionData(); - JobQueueGroup::singleton()->push( $job ); - - return $sessionKey; - } }