MediaWiki fundraising/REL1_35
|
Implements uploading from chunks. More...
Public Member Functions | |||||||
__construct (User $user, $stash=false, $repo=false) | |||||||
@noinspection PhpMissingParentConstructorInspection | |||||||
addChunk ( $chunkPath, $chunkSize, $offset) | |||||||
Add a chunk to the temporary directory. | |||||||
concatenateChunks () | |||||||
Append the final chunk and ready file for parent::performUpload() | |||||||
continueChunks ( $name, $key, $webRequestUpload) | |||||||
Continue chunk uploading. | |||||||
getOffset () | |||||||
Get the offset at which the next uploaded chunk will be appended to. | |||||||
stashFile (User $user=null) | |||||||
If the user does not supply all necessary information in the first upload form submission (either by accident or by design) then we may want to stash the file temporarily, get more information, and publish the file later.This method will stash a file in a temporary directory for later processing, and save the necessary descriptive info into the database. This method returns the file object, which also has a 'fileKey' property which can be passed through a form or API request to find this stashed file again.
| |||||||
tryStashFile (User $user, $isPartial=false) | |||||||
Like stashFile(), but respects extensions' wishes to prevent the stashing.verifyUpload() must be called before calling this method (unless $isPartial is true).Upload stash exceptions are also caught and converted to an error status.
| |||||||
Public Member Functions inherited from UploadFromFile | |||||||
getSourceType () | |||||||
initialize ( $name, $webRequestUpload) | |||||||
Initialize from a filename and a WebRequestUpload. | |||||||
initializeFromRequest (&$request) | |||||||
verifyUpload () | |||||||
Public Member Functions inherited from UploadBase | |||||||
__construct () | |||||||
Stable to call. | |||||||
checkSvgScriptCallback ( $element, $attribs, $data=null) | |||||||
checkWarnings ( $user=null) | |||||||
Check for non fatal problems with the file. | |||||||
cleanupTempFile () | |||||||
If we've modified the upload file we need to manually remove it on exit to clean up. | |||||||
convertVerifyErrorToStatus ( $error) | |||||||
fetchFile () | |||||||
Fetch the file. | |||||||
getFileSize () | |||||||
Return the file size. | |||||||
getImageInfo ( $result) | |||||||
Gets image info about the file just uploaded. | |||||||
getLocalFile () | |||||||
Return the local file and initializes if necessary. | |||||||
getRealPath ( $srcPath) | |||||||
getStashFile () | |||||||
getTempFileSha1Base36 () | |||||||
Get the base 36 SHA1 of the file Stable to override. | |||||||
getTempPath () | |||||||
getTitle () | |||||||
Returns the title of the file to be uploaded. | |||||||
getVerificationErrorCode ( $error) | |||||||
initializePathInfo ( $name, $tempPath, $fileSize, $removeTempFile=false) | |||||||
isEmptyFile () | |||||||
Return true if the file is empty. | |||||||
performUpload ( $comment, $pageText, $watch, $user, $tags=[], ?string $watchlistExpiry=null) | |||||||
Really perform the upload. | |||||||
postProcessUpload () | |||||||
Perform extra steps after a successful upload. | |||||||
validateName () | |||||||
Verify that the name is valid and, if necessary, that we can overwrite. | |||||||
verifyPermissions ( $user) | |||||||
Alias for verifyTitlePermissions. | |||||||
verifyTitlePermissions ( $user) | |||||||
Check whether the user can edit, upload and create the image. | |||||||
zipEntryCallback ( $entry) | |||||||
Callback for ZipDirectoryReader to detect Java class files. | |||||||
Public Attributes | |
UploadStash | $stash |
User | $user |
Public Attributes inherited from UploadBase | |
const | EMPTY_FILE = 3 |
const | FILE_TOO_LARGE = 12 |
const | FILENAME_TOO_LONG = 14 |
const | FILETYPE_BADTYPE = 9 |
const | FILETYPE_MISSING = 8 |
const | HOOK_ABORTED = 11 |
const | ILLEGAL_FILENAME = 5 |
const | MIN_LENGTH_PARTNAME = 4 |
const | OK = 0 |
const | OVERWRITE_EXISTING_FILE = 7 |
const | SUCCESS = 0 |
const | VERIFICATION_ERROR = 10 |
const | WINDOWS_NONASCII_FILENAME = 13 |
Protected Member Functions | |
doStashFile (User $user=null) | |
Calls the parent doStashFile and updates the uploadsession table to handle "chunks". | |
Protected Member Functions inherited from UploadBase | |
detectScriptInSvg ( $filename, $partial) | |
runUploadStashFileHook (User $user) | |
setTempFile ( $tempPath, $fileSize=null) | |
verifyFile () | |
Verifies that it's ok to include the uploaded file. | |
verifyMimeType ( $mime) | |
Verify the MIME type. | |
verifyPartialFile () | |
A verification routine suitable for partial files. | |
Protected Attributes | |
$mChunkIndex | |
$mFileKey | |
$mOffset | |
$mVirtualTempPath | |
Protected Attributes inherited from UploadFromFile | |
WebRequestUpload | $mUpload = null |
Protected Attributes inherited from UploadBase | |
string[] | $mBlackListedExtensions |
string null | $mDesiredDestName |
string null | $mDestName |
array null | $mFileProps |
int null | $mFileSize |
string null | $mFilteredName |
string null | $mFinalExtension |
bool null | $mJavaDetected |
LocalFile null | $mLocalFile |
string null | $mRemoveTempFile |
string null | $mSourceType |
UploadStashFile null | $mStashFile |
string null | $mSVGNSError |
string | $mTempPath |
Local file system path to the file to upload (or a local copy) | |
Title bool | $mTitle = false |
int | $mTitleError = 0 |
TempFSFile null | $tempFileObj |
Wrapper to handle deleting the temp file. | |
Private Member Functions | |
getChunkFileKey ( $index=null) | |
getChunkIndex () | |
Get the current Chunk index. | |
getChunkStatus () | |
Get the chunk db state and populate update relevant local values. | |
getVirtualChunkLocation ( $index) | |
Returns the virtual chunk location: | |
outputChunk ( $chunkPath) | |
Output the chunk to disk. | |
updateChunkStatus () | |
Update the chunk db table with the current status: | |
verifyChunk () | |
Verify that the chunk isn't really an evil html file. | |
Private Attributes | |
LocalRepo | $repo |
Additional Inherited Members | |
Static Public Member Functions inherited from UploadFromFile | |
static | isValidRequest ( $request) |
Static Public Member Functions inherited from UploadBase | |
static | checkFileExtension ( $ext, $list) |
Perform case-insensitive match against a list of file extensions. | |
static | checkFileExtensionList ( $ext, $list) |
Perform case-insensitive match against a list of file extensions. | |
static | checkSvgExternalDTD ( $type, $publicId, $systemId) |
Verify that DTD urls referenced are only the standard dtds. | |
static | checkSvgPICallback ( $target, $data) |
Callback to filter SVG Processing Instructions. | |
static | checkXMLEncodingMissmatch ( $file) |
Check a whitelist of xml encodings that are known not to be interpreted differently by the server's xml parser (expat) and some common browsers. | |
static | createFromRequest (&$request, $type=null) |
Create a form of UploadBase depending on wpSourceType and initializes it. | |
static | detectScript ( $file, $mime, $extension) |
Heuristic for detecting files that could contain JavaScript instructions or things that may look like HTML to a browser and are thus potentially harmful. | |
static | detectVirus ( $file) |
Generic wrapper function for a virus scanner program. | |
static | getExistsWarning ( $file) |
Helper function that does various existence checks for a file. | |
static | getFilenamePrefixBlacklist () |
Get a list of blacklisted filename prefixes from [[MediaWiki:Filename-prefix-blacklist]]. | |
static | getMaxPhpUploadSize () |
Get the PHP maximum uploaded file size, based on ini settings. | |
static | getMaxUploadSize ( $forType=null) |
Get MediaWiki's maximum uploaded file size for given type of upload, based on $wgMaxUploadSize. | |
static | getSessionStatus (User $user, $statusKey) |
Get the current status of a chunked upload (used for polling) | |
static | isAllowed (UserIdentity $user) |
Returns true if the user can use this upload module or else a string identifying the missing permission. | |
static | isEnabled () |
Returns true if uploads are enabled. | |
static | isThrottled ( $user) |
Returns true if the user has surpassed the upload rate limit, false otherwise. | |
static | isThumbName ( $filename) |
Helper function that checks whether the filename looks like a thumbnail. | |
static | makeWarningsSerializable ( $warnings) |
Convert the warnings array returned by checkWarnings() to something that can be serialized. | |
static | setSessionStatus (User $user, $statusKey, $value) |
Set the current status of a chunked upload (used for polling) | |
static | splitExtensions ( $filename) |
Split a file into a base name and all dot-delimited 'extensions' on the end. | |
static | userCanReUpload (User $user, File $img) |
Check if a user is the last uploader. | |
static | verifyExtension ( $mime, $extension) |
Checks if the MIME type of the uploaded file matches the file extension. | |
Static Protected Attributes inherited from UploadBase | |
static | $safeXmlEncodings |
Implements uploading from chunks.
Definition at line 33 of file UploadFromChunks.php.
UploadFromChunks::__construct | ( | User | $user, |
$stash = false, | |||
$repo = false ) |
@noinspection PhpMissingParentConstructorInspection
Setup local pointers to stash, repo and user (similar to UploadFromStash)
User | $user | |
UploadStash | bool | $stash | Default: false |
FileRepo | bool | $repo | Default: false |
Definition at line 55 of file UploadFromChunks.php.
References $repo, $stash, $user, User\getId(), and wfDebug().
UploadFromChunks::addChunk | ( | $chunkPath, | |
$chunkSize, | |||
$offset ) |
Add a chunk to the temporary directory.
string | $chunkPath | Path to temporary chunk file |
int | $chunkSize | Size of the current chunk |
int | $offset | Offset of current chunk ( mutch match database chunk offset ) |
Definition at line 238 of file UploadFromChunks.php.
References UploadBase\$mTempPath, UploadBase\getMaxUploadSize(), getOffset(), MWException\msg(), outputChunk(), updateChunkStatus(), and verifyChunk().
UploadFromChunks::concatenateChunks | ( | ) |
Append the final chunk and ready file for parent::performUpload()
Definition at line 148 of file UploadFromChunks.php.
References $ext, FileRepo\DELETE_SOURCE, FileBackend\extensionFromPath(), getChunkIndex(), getOffset(), UploadBase\getVerificationErrorCode(), getVirtualChunkLocation(), UploadBase\OK, UploadBase\runUploadStashFileHook(), UploadBase\setTempFile(), UploadFromFile\verifyUpload(), wfDebug(), and wfDebugLog().
UploadFromChunks::continueChunks | ( | $name, | |
$key, | |||
$webRequestUpload ) |
Continue chunk uploading.
string | $name | |
string | $key | |
WebRequestUpload | $webRequestUpload |
Definition at line 130 of file UploadFromChunks.php.
References getChunkStatus(), UploadBase\getRealPath(), and UploadBase\initializePathInfo().
|
protected |
Calls the parent doStashFile and updates the uploadsession table to handle "chunks".
User | null | $user |
Reimplemented from UploadBase.
Definition at line 103 of file UploadFromChunks.php.
References UploadBase\$mStashFile, $user, outputChunk(), and updateChunkStatus().
|
private |
Definition at line 376 of file UploadFromChunks.php.
References getChunkIndex().
Referenced by getVirtualChunkLocation(), and outputChunk().
|
private |
Get the current Chunk index.
Definition at line 322 of file UploadFromChunks.php.
References $mChunkIndex.
Referenced by concatenateChunks(), getChunkFileKey(), and updateChunkStatus().
|
private |
Get the chunk db state and populate update relevant local values.
Definition at line 296 of file UploadFromChunks.php.
Referenced by continueChunks().
UploadFromChunks::getOffset | ( | ) |
Get the offset at which the next uploaded chunk will be appended to.
Definition at line 334 of file UploadFromChunks.php.
References $mOffset.
Referenced by addChunk(), concatenateChunks(), and updateChunkStatus().
|
private |
Returns the virtual chunk location:
int | $index |
Definition at line 221 of file UploadFromChunks.php.
References getChunkFileKey().
Referenced by concatenateChunks().
|
private |
Output the chunk to disk.
string | $chunkPath |
UploadChunkFileException |
Definition at line 349 of file UploadFromChunks.php.
References getChunkFileKey().
Referenced by addChunk(), and doStashFile().
UploadFromChunks::stashFile | ( | User | $user = null | ) |
If the user does not supply all necessary information in the first upload form submission (either by accident or by design) then we may want to stash the file temporarily, get more information, and publish the file later.This method will stash a file in a temporary directory for later processing, and save the necessary descriptive info into the database. This method returns the file object, which also has a 'fileKey' property which can be passed through a form or API request to find this stashed file again.
User | null | $user |
UploadChunkVerificationException |
Reimplemented from UploadBase.
Definition at line 90 of file UploadFromChunks.php.
References $user, verifyChunk(), and wfDeprecated().
UploadFromChunks::tryStashFile | ( | User | $user, |
$isPartial = false ) |
Like stashFile(), but respects extensions' wishes to prevent the stashing.verifyUpload() must be called before calling this method (unless $isPartial is true).Upload stash exceptions are also caught and converted to an error status.
User | $user | |
bool | $isPartial | Pass true if this is a part of a chunked upload (not a complete file). |
Reimplemented from UploadBase.
Definition at line 75 of file UploadFromChunks.php.
References $user, MWException\msg(), and verifyChunk().
|
private |
Update the chunk db table with the current status:
Definition at line 276 of file UploadFromChunks.php.
References getChunkIndex(), getOffset(), and wfDebug().
Referenced by addChunk(), and doStashFile().
|
private |
Verify that the chunk isn't really an evil html file.
UploadChunkVerificationException |
Definition at line 389 of file UploadFromChunks.php.
References UploadBase\$mDesiredDestName, $mFileKey, $res, and UploadBase\verifyPartialFile().
Referenced by addChunk(), stashFile(), and tryStashFile().
|
protected |
Definition at line 42 of file UploadFromChunks.php.
Referenced by getChunkIndex().
|
protected |
Definition at line 43 of file UploadFromChunks.php.
Referenced by verifyChunk().
|
protected |
Definition at line 41 of file UploadFromChunks.php.
Referenced by getOffset().
|
protected |
Definition at line 44 of file UploadFromChunks.php.
|
private |
Definition at line 35 of file UploadFromChunks.php.
Referenced by __construct().
UploadStash UploadFromChunks::$stash |
Definition at line 37 of file UploadFromChunks.php.
Referenced by __construct().
User UploadFromChunks::$user |
Definition at line 39 of file UploadFromChunks.php.
Referenced by __construct(), doStashFile(), stashFile(), and tryStashFile().