X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Flibs%2Ffilebackend%2Ffileop%2FStoreFileOp.php;h=b8cfbf6bdfaf364729eb411e9c164e5950779a8f;hb=9bbb26ffbd16edbaccce27461730fa9e172aa048;hp=69ae47f42821ddb1d7caf1636b7b3a6c258bcd7f;hpb=1b4dbef5fe2274885aed004791d9f4c120adba2a;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/filebackend/fileop/StoreFileOp.php b/includes/libs/filebackend/fileop/StoreFileOp.php index 69ae47f428..b8cfbf6bdf 100644 --- a/includes/libs/filebackend/fileop/StoreFileOp.php +++ b/includes/libs/filebackend/fileop/StoreFileOp.php @@ -21,6 +21,8 @@ * @ingroup FileBackend */ +use Wikimedia\AtEase\AtEase; + /** * Store a file into the backend from a file on the file system. * Parameters for this operation are outlined in FileBackend::doOperations(). @@ -36,26 +38,21 @@ class StoreFileOp extends FileOp { protected function doPrecheck( array &$predicates ) { $status = StatusValue::newGood(); - // Check if the source file exists on the file system + + // Check if the source file exists in the file system and is not too big if ( !is_file( $this->params['src'] ) ) { $status->fatal( 'backend-fail-notexists', $this->params['src'] ); return $status; - // Check if the source file is too big - } elseif ( filesize( $this->params['src'] ) > $this->backend->maxFileSizeInternal() ) { - $status->fatal( 'backend-fail-maxsize', - $this->params['dst'], $this->backend->maxFileSizeInternal() ); - $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] ); - - return $status; - // Check if a file can be placed/changed at the destination - } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) { - $status->fatal( 'backend-fail-usable', $this->params['dst'] ); - $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] ); + } + // Check if the source file is too big + $maxBytes = $this->backend->maxFileSizeInternal(); + if ( filesize( $this->params['src'] ) > $maxBytes ) { + $status->fatal( 'backend-fail-maxsize', $this->params['dst'], $maxBytes ); return $status; } - // Check if destination file exists + // Check if an incompatible destination file exists $status->merge( $this->precheckDestExistence( $predicates ) ); $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache() if ( $status->isOK() ) { @@ -68,18 +65,20 @@ class StoreFileOp extends FileOp { } protected function doAttempt() { - if ( !$this->overwriteSameCase ) { + if ( $this->overwriteSameCase ) { + $status = StatusValue::newGood(); // nothing to do + } else { // Store the file at the destination - return $this->backend->storeInternal( $this->setFlags( $this->params ) ); + $status = $this->backend->storeInternal( $this->setFlags( $this->params ) ); } - return StatusValue::newGood(); + return $status; } protected function getSourceSha1Base36() { - Wikimedia\suppressWarnings(); + AtEase::suppressWarnings(); $hash = sha1_file( $this->params['src'] ); - Wikimedia\restoreWarnings(); + AtEase::restoreWarnings(); if ( $hash !== false ) { $hash = Wikimedia\base_convert( $hash, 16, 36, 31 ); }