MediaWiki REL1_33
UploadFromStash.php
Go to the documentation of this file.
1<?php
31 protected $mFileKey;
33 protected $mFileProps;
34 protected $mSourceType;
35
36 // an instance of UploadStash
37 private $stash;
38
39 // LocalFile repo
40 private $repo;
41
47 public function __construct( $user = false, $stash = false, $repo = false ) {
48 // user object. sometimes this won't exist, as when running from cron.
49 $this->user = $user;
50
51 if ( $repo ) {
52 $this->repo = $repo;
53 } else {
54 $this->repo = RepoGroup::singleton()->getLocalRepo();
55 }
56
57 if ( $stash ) {
58 $this->stash = $stash;
59 } else {
60 if ( $user ) {
61 wfDebug( __METHOD__ . " creating new UploadStash instance for " . $user->getId() . "\n" );
62 } else {
63 wfDebug( __METHOD__ . " creating new UploadStash instance with no user\n" );
64 }
65
66 $this->stash = new UploadStash( $this->repo, $this->user );
67 }
68 }
69
74 public static function isValidKey( $key ) {
75 // this is checked in more detail in UploadStash
76 return (bool)preg_match( UploadStash::KEY_FORMAT_REGEX, $key );
77 }
78
83 public static function isValidRequest( $request ) {
84 // this passes wpSessionKey to getText() as a default when wpFileKey isn't set.
85 // wpSessionKey has no default which guarantees failure if both are missing
86 // (though that should have been caught earlier)
87 return self::isValidKey( $request->getText( 'wpFileKey', $request->getText( 'wpSessionKey' ) ) );
88 }
89
95 public function initialize( $key, $name = 'upload_file', $initTempFile = true ) {
102 $metadata = $this->stash->getMetadata( $key );
103 $this->initializePathInfo( $name,
104 $initTempFile ? $this->getRealPath( $metadata['us_path'] ) : false,
105 $metadata['us_size'],
106 false
107 );
108
109 $this->mFileKey = $key;
110 $this->mVirtualTempPath = $metadata['us_path'];
111 $this->mFileProps = $this->stash->getFileProps( $key );
112 $this->mSourceType = $metadata['us_source_type'];
113 }
114
118 public function initializeFromRequest( &$request ) {
119 // sends wpSessionKey as a default when wpFileKey is missing
120 $fileKey = $request->getText( 'wpFileKey', $request->getText( 'wpSessionKey' ) );
121
122 // chooses one of wpDestFile, wpUploadFile, filename in that order.
123 $desiredDestName = $request->getText(
124 'wpDestFile',
125 $request->getText( 'wpUploadFile', $request->getText( 'filename' ) )
126 );
127
128 $this->initialize( $fileKey, $desiredDestName );
129 }
130
134 public function getSourceType() {
135 return $this->mSourceType;
136 }
137
142 public function getTempFileSha1Base36() {
143 return $this->mFileProps['sha1'];
144 }
145
150 public function unsaveUploadedFile() {
151 return $this->stash->removeFile( $this->mFileKey );
152 }
153
157 public function postProcessUpload() {
158 parent::postProcessUpload();
159 $this->unsaveUploadedFile();
160 }
161}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
static singleton()
Get a RepoGroup instance.
Definition RepoGroup.php:61
UploadBase and subclasses are the backend of MediaWiki's file uploads.
getRealPath( $srcPath)
initializePathInfo( $name, $tempPath, $fileSize, $removeTempFile=false)
Initialize the path information.
Implements uploading from previously stored file.
getTempFileSha1Base36()
Get the base 36 SHA1 of the file.
static isValidKey( $key)
static isValidRequest( $request)
initializeFromRequest(&$request)
unsaveUploadedFile()
Remove a temporarily kept file stashed by saveTempUploadedFile().
postProcessUpload()
Remove the database record after a successful upload.
__construct( $user=false, $stash=false, $repo=false)
initialize( $key, $name='upload_file', $initTempFile=true)
UploadStash is intended to accomplish a few things:
const KEY_FORMAT_REGEX
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction you ll probably need to make sure the header is varied on $request
Definition hooks.txt:2843
return true to allow those checks to and false if checking is done & $user
Definition hooks.txt:1510
processing should stop and the error should be shown to the user * false
Definition hooks.txt:187