MediaWiki REL1_40
CreateFileOp.php
Go to the documentation of this file.
1<?php
26class CreateFileOp extends FileOp {
27 protected function allowedParams() {
28 return [
29 [ 'content', 'dst' ],
30 [ 'overwrite', 'overwriteSame', 'headers' ],
31 [ 'dst' ]
32 ];
33 }
34
35 protected function doPrecheck( array &$predicates ) {
36 $status = StatusValue::newGood();
37
38 // Check if the source data is too big
39 $maxBytes = $this->backend->maxFileSizeInternal();
40 if ( strlen( $this->getParam( 'content' ) ) > $maxBytes ) {
41 $status->fatal( 'backend-fail-maxsize', $this->params['dst'], $maxBytes );
42
43 return $status;
44 }
45 // Check if an incompatible destination file exists
46 $status->merge( $this->precheckDestExistence( $predicates ) );
47 $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache()
48
49 // Update file existence predicates if the operation is expected to be allowed to run
50 if ( $status->isOK() ) {
51 $predicates[self::ASSUMED_EXISTS][$this->params['dst']] = true;
52 $predicates[self::ASSUMED_SIZE][$this->params['dst']] = $this->sourceSize;
53 $predicates[self::ASSUMED_SHA1][$this->params['dst']] = $this->sourceSha1;
54 }
55
56 return $status; // safe to call attempt()
57 }
58
59 protected function doAttempt() {
60 if ( $this->overwriteSameCase ) {
61 $status = StatusValue::newGood(); // nothing to do
62 } else {
63 // Create the file at the destination
64 $status = $this->backend->createInternal( $this->setFlags( $this->params ) );
65 }
66
67 return $status;
68 }
69
70 protected function getSourceSize() {
71 return strlen( $this->params['content'] );
72 }
73
74 protected function getSourceSha1Base36() {
75 return Wikimedia\base_convert( sha1( $this->params['content'] ), 16, 36, 31 );
76 }
77
78 public function storagePathsChanged() {
79 return [ $this->params['dst'] ];
80 }
81}
Create a file in the backend with the given content.
getSourceSize()
precheckDestExistence() helper function to get the source file size.
doPrecheck(array &$predicates)
getSourceSha1Base36()
precheckDestExistence() helper function to get the source file SHA-1.
allowedParams()
Get the file operation parameters.
storagePathsChanged()
Get a list of storage paths written to for this operation.
FileBackend helper class for representing operations.
Definition FileOp.php:37
const ASSUMED_EXISTS
Definition FileOp.php:72
string bool $sourceSha1
Definition FileOp.php:58
getParam( $name)
Get the value of the parameter with the given name.
Definition FileOp.php:131
const ASSUMED_SIZE
Definition FileOp.php:73
const ASSUMED_SHA1
Definition FileOp.php:71
setFlags(array $params)
Adjust params to FileBackendStore internal file calls.
Definition FileOp.php:318
bool $destExists
Definition FileOp.php:64
int bool $sourceSize
Definition FileOp.php:56
precheckDestExistence(array $predicates)
Check for errors with regards to the destination file already existing.
Definition FileOp.php:359