MediaWiki  1.34.4
CreateFileOp.php
Go to the documentation of this file.
1 <?php
26 class 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  if ( $status->isOK() ) {
49  // Update file existence predicates
50  $predicates['exists'][$this->params['dst']] = true;
51  $predicates['sha1'][$this->params['dst']] = $this->sourceSha1;
52  }
53 
54  return $status; // safe to call attempt()
55  }
56 
57  protected function doAttempt() {
58  if ( $this->overwriteSameCase ) {
59  $status = StatusValue::newGood(); // nothing to do
60  } else {
61  // Create the file at the destination
62  $status = $this->backend->createInternal( $this->setFlags( $this->params ) );
63  }
64 
65  return $status;
66  }
67 
68  protected function getSourceSha1Base36() {
69  return Wikimedia\base_convert( sha1( $this->params['content'] ), 16, 36, 31 );
70  }
71 
72  public function storagePathsChanged() {
73  return [ $this->params['dst'] ];
74  }
75 }
FileOp\$sourceSha1
string $sourceSha1
Definition: FileOp.php:61
CreateFileOp\doAttempt
doAttempt()
Definition: CreateFileOp.php:57
FileOp
FileBackend helper class for representing operations.
Definition: FileOp.php:36
FileOp\$destExists
bool $destExists
Definition: FileOp.php:67
FileOp\setFlags
setFlags(array $params)
Adjust params to FileBackendStore internal file calls.
Definition: FileOp.php:346
CreateFileOp\getSourceSha1Base36
getSourceSha1Base36()
precheckDestExistence() helper function to get the source file SHA-1.
Definition: CreateFileOp.php:68
FileOp\getParam
getParam( $name)
Get the value of the parameter with the given name.
Definition: FileOp.php:139
CreateFileOp\doPrecheck
doPrecheck(array &$predicates)
Definition: CreateFileOp.php:35
CreateFileOp\allowedParams
allowedParams()
Get the file operation parameters.
Definition: CreateFileOp.php:27
StatusValue\newGood
static newGood( $value=null)
Factory function for good results.
Definition: StatusValue.php:81
CreateFileOp\storagePathsChanged
storagePathsChanged()
Get a list of storage paths written to for this operation.
Definition: CreateFileOp.php:72
FileOp\precheckDestExistence
precheckDestExistence(array $predicates)
Check for errors with regards to the destination file already existing.
Definition: FileOp.php:376
CreateFileOp
Create a file in the backend with the given content.
Definition: CreateFileOp.php:26