MediaWiki  master
UploadFromChunks Class Reference

Implements uploading from chunks. More...

Inheritance diagram for UploadFromChunks:
Collaboration diagram for UploadFromChunks:

Public Member Functions

 __construct (User $user, $stash=false, $repo=false)
 Setup local pointers to stash, repo and user (similar to UploadFromStash) More...
 
 addChunk ($chunkPath, $chunkSize, $offset)
 Add a chunk to the temporary directory. More...
 
 concatenateChunks ()
 Append the final chunk and ready file for parent::performUpload() More...
 
 continueChunks ($name, $key, $webRequestUpload)
 Continue chunk uploading. More...
 
 getOffset ()
 Get the offset at which the next uploaded chunk will be appended to. More...
 
 getVirtualChunkLocation ($index)
 Returns the virtual chunk location: More...
 
 stashFile (User $user=null)
 {} More...
 
 stashFileGetKey ()
 {} More...
 
 stashSession ()
 {} More...
 
 tryStashFile (User $user, $isPartial=false)
 {} More...
 
- Public Member Functions inherited from UploadFromFile
 getSourceType ()
 
 initialize ($name, $webRequestUpload)
 Initialize from a filename and a WebRequestUpload. More...
 
 initializeFromRequest (&$request)
 
 verifyUpload ()
 
- Public Member Functions inherited from UploadBase
 __construct ()
 
 checkSvgScriptCallback ($element, $attribs, $data=null)
 
 checkWarnings ()
 Check for non fatal problems with the file. More...
 
 cleanupTempFile ()
 If we've modified the upload file we need to manually remove it on exit to clean up. More...
 
 convertVerifyErrorToStatus ($error)
 
 fetchFile ()
 Fetch the file. More...
 
 getFileSize ()
 Return the file size. More...
 
 getImageInfo ($result)
 Gets image info about the file just uploaded. More...
 
 getLocalFile ()
 Return the local file and initializes if necessary. More...
 
 getRealPath ($srcPath)
 
 getSourceType ()
 Returns the upload type. More...
 
 getStashFile ()
 
 getTempFileSha1Base36 ()
 Get the base 36 SHA1 of the file. More...
 
 getTempPath ()
 
 getTitle ()
 Returns the title of the file to be uploaded. More...
 
 getVerificationErrorCode ($error)
 
 initializeFromRequest (&$request)
 Initialize from a WebRequest. More...
 
 initializePathInfo ($name, $tempPath, $fileSize, $removeTempFile=false)
 Initialize the path information. More...
 
 isEmptyFile ()
 Return true if the file is empty. More...
 
 performUpload ($comment, $pageText, $watch, $user, $tags=[])
 Really perform the upload. More...
 
 postProcessUpload ()
 Perform extra steps after a successful upload. More...
 
 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. More...
 
 stashFileGetKey ()
 Stash a file in a temporary directory, returning a key which can be used to find the file again. More...
 
 stashSession ()
 alias for stashFileGetKey, for backwards compatibility More...
 
 tryStashFile (User $user, $isPartial=false)
 Like stashFile(), but respects extensions' wishes to prevent the stashing. More...
 
 validateName ()
 Verify that the name is valid and, if necessary, that we can overwrite. More...
 
 verifyPermissions ($user)
 Alias for verifyTitlePermissions. More...
 
 verifyTitlePermissions ($user)
 Check whether the user can edit, upload and create the image. More...
 
 verifyUpload ()
 Verify whether the upload is sane. More...
 
 zipEntryCallback ($entry)
 Callback for ZipDirectoryReader to detect Java class files. More...
 

Protected Member Functions

 doStashFile (User $user=null)
 Calls the parent doStashFile and updates the uploadsession table to handle "chunks". More...
 
- Protected Member Functions inherited from UploadBase
 detectScriptInSvg ($filename, $partial)
 
 doStashFile (User $user=null)
 Implementation for stashFile() and tryStashFile(). More...
 
 runUploadStashFileHook (User $user)
 
 setTempFile ($tempPath, $fileSize=null)
 
 verifyFile ()
 Verifies that it's ok to include the uploaded file. More...
 
 verifyMimeType ($mime)
 Verify the MIME type. More...
 
 verifyPartialFile ()
 A verification routine suitable for partial files. More...
 

Protected Attributes

 $mChunkIndex
 
 $mFileKey
 
 $mOffset
 
 $mVirtualTempPath
 
- Protected Attributes inherited from UploadFromFile
WebRequestUpload $mUpload = null
 
- Protected Attributes inherited from UploadBase
 $mBlackListedExtensions
 
 $mDesiredDestName
 
 $mFilteredName
 
 $mJavaDetected
 
 $mLocalFile
 
string $mTempPath
 Local file system path to the file to upload (or a local copy) More...
 
 $mTitle = false
 
TempFSFile null $tempFileObj
 Wrapper to handle deleting the temp file. More...
 

Private Member Functions

 getChunkFileKey ($index=null)
 
 getChunkIndex ()
 Get the current Chunk index. More...
 
 getChunkStatus ()
 Get the chunk db state and populate update relevant local values. More...
 
 outputChunk ($chunkPath)
 Output the chunk to disk. More...
 
 updateChunkStatus ()
 Update the chunk db table with the current status: More...
 
 verifyChunk ()
 Verify that the chunk isn't really an evil html file. More...
 

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. More...
 
static checkFileExtensionList ($ext, $list)
 Perform case-insensitive match against a list of file extensions. More...
 
static checkSvgExternalDTD ($type, $publicId, $systemId)
 Verify that DTD urls referenced are only the standard dtds. More...
 
static checkSvgPICallback ($target, $data)
 Callback to filter SVG Processing Instructions. More...
 
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. More...
 
static createFromRequest (&$request, $type=null)
 Create a form of UploadBase depending on wpSourceType and initializes it. More...
 
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. More...
 
static detectVirus ($file)
 Generic wrapper function for a virus scanner program. More...
 
static getExistsWarning ($file)
 Helper function that does various existence checks for a file. More...
 
static getFilenamePrefixBlacklist ()
 Get a list of blacklisted filename prefixes from [[MediaWiki:Filename-prefix-blacklist]]. More...
 
static getMaxPhpUploadSize ()
 Get the PHP maximum uploaded file size, based on ini settings. More...
 
static getMaxUploadSize ($forType=null)
 Get the MediaWiki maximum uploaded file size for given type of upload, based on $wgMaxUploadSize. More...
 
static getSessionStatus (User $user, $statusKey)
 Get the current status of a chunked upload (used for polling) More...
 
static isAllowed ($user)
 Returns true if the user can use this upload module or else a string identifying the missing permission. More...
 
static isEnabled ()
 Returns true if uploads are enabled. More...
 
static isThrottled ($user)
 Returns true if the user has surpassed the upload rate limit, false otherwise. More...
 
static isThumbName ($filename)
 Helper function that checks whether the filename looks like a thumbnail. More...
 
static isValidRequest ($request)
 Check whether a request if valid for this handler. More...
 
static setSessionStatus (User $user, $statusKey, $value)
 Set the current status of a chunked upload (used for polling) More...
 
static splitExtensions ($filename)
 Split a file into a base name and all dot-delimited 'extensions' on the end. More...
 
static userCanReUpload (User $user, File $img)
 Check if a user is the last uploader. More...
 
static verifyExtension ($mime, $extension)
 Checks if the MIME type of the uploaded file matches the file extension. More...
 
- Public Attributes inherited from UploadBase
 $mDestName
 
 $mFileProps
 
 $mFileSize
 
 $mFinalExtension
 
 $mRemoveTempFile
 
 $mSourceType
 
 $mStashFile
 
 $mSVGNSError
 
 $mTitleError = 0
 
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
 
- Static Protected Attributes inherited from UploadBase
static $safeXmlEncodings
 

Detailed Description

Implements uploading from chunks.

Author
Michael Dale

Definition at line 30 of file UploadFromChunks.php.

Constructor & Destructor Documentation

UploadFromChunks::__construct ( User  $user,
  $stash = false,
  $repo = false 
)

Setup local pointers to stash, repo and user (similar to UploadFromStash)

Parameters
User$user
UploadStash | bool$stashDefault: false
FileRepo | bool$repoDefault: false

Definition at line 45 of file UploadFromChunks.php.

References $repo, $user, User\getId(), RepoGroup\singleton(), user, and wfDebug().

Member Function Documentation

UploadFromChunks::addChunk (   $chunkPath,
  $chunkSize,
  $offset 
)

Add a chunk to the temporary directory.

Parameters
string$chunkPathPath to temporary chunk file
int$chunkSizeSize of the current chunk
int$offsetOffset of current chunk ( mutch match database chunk offset )
Returns
Status

Definition at line 252 of file UploadFromChunks.php.

References $e, UploadBase\$mTempPath, $status, UploadBase\getMaxUploadSize(), getOffset(), MWException\msg(), StatusValue\newFatal(), outputChunk(), updateChunkStatus(), and verifyChunk().

UploadFromChunks::continueChunks (   $name,
  $key,
  $webRequestUpload 
)

Continue chunk uploading.

Parameters
string$name
string$key
WebRequestUpload$webRequestUpload

Definition at line 145 of file UploadFromChunks.php.

References $key, $name, getChunkStatus(), UploadBase\getRealPath(), and UploadBase\initializePathInfo().

UploadFromChunks::doStashFile ( User  $user = null)
protected

Calls the parent doStashFile and updates the uploadsession table to handle "chunks".

Parameters
User | null$user
Returns
UploadStashFile Stashed file

Definition at line 118 of file UploadFromChunks.php.

References UploadBase\$mStashFile, $user, outputChunk(), and updateChunkStatus().

UploadFromChunks::getChunkFileKey (   $index = null)
private

Definition at line 390 of file UploadFromChunks.php.

References getChunkIndex().

Referenced by getVirtualChunkLocation(), and outputChunk().

UploadFromChunks::getChunkIndex ( )
private

Get the current Chunk index.

Returns
int Index of the current chunk

Definition at line 336 of file UploadFromChunks.php.

References $mChunkIndex.

Referenced by concatenateChunks(), getChunkFileKey(), and updateChunkStatus().

UploadFromChunks::getChunkStatus ( )
private

Get the chunk db state and populate update relevant local values.

Definition at line 310 of file UploadFromChunks.php.

Referenced by continueChunks().

UploadFromChunks::getOffset ( )

Get the offset at which the next uploaded chunk will be appended to.

Returns
int Current byte offset of the chunk file set

Definition at line 348 of file UploadFromChunks.php.

References $mOffset.

Referenced by addChunk(), concatenateChunks(), and updateChunkStatus().

UploadFromChunks::getVirtualChunkLocation (   $index)

Returns the virtual chunk location:

Parameters
int$index
Returns
string

Definition at line 235 of file UploadFromChunks.php.

References getChunkFileKey().

Referenced by concatenateChunks().

UploadFromChunks::outputChunk (   $chunkPath)
private

Output the chunk to disk.

Parameters
string$chunkPath
Exceptions
UploadChunkFileException
Returns
Status

Definition at line 363 of file UploadFromChunks.php.

References getChunkFileKey().

Referenced by addChunk(), and doStashFile().

UploadFromChunks::stashFile ( User  $user = null)

{}

Exceptions
UploadChunkVerificationException
Deprecated:
since 1.28 Use tryStashFile() instead

Definition at line 84 of file UploadFromChunks.php.

References $user, verifyChunk(), and wfDeprecated().

UploadFromChunks::stashFileGetKey ( )

{}

Exceptions
UploadChunkVerificationException
Deprecated:
since 1.28

Definition at line 95 of file UploadFromChunks.php.

References verifyChunk(), and wfDeprecated().

UploadFromChunks::stashSession ( )

{}

Exceptions
UploadChunkVerificationException
Deprecated:
since 1.28

Definition at line 106 of file UploadFromChunks.php.

References verifyChunk(), and wfDeprecated().

UploadFromChunks::tryStashFile ( User  $user,
  $isPartial = false 
)

{}

Definition at line 69 of file UploadFromChunks.php.

References $e, MWException\msg(), StatusValue\newFatal(), and verifyChunk().

UploadFromChunks::updateChunkStatus ( )
private

Update the chunk db table with the current status:

Definition at line 290 of file UploadFromChunks.php.

References getChunkIndex(), getOffset(), and wfDebug().

Referenced by addChunk(), and doStashFile().

UploadFromChunks::verifyChunk ( )
private

Verify that the chunk isn't really an evil html file.

Exceptions
UploadChunkVerificationException

Definition at line 403 of file UploadFromChunks.php.

References UploadBase\$mDesiredDestName, $mFileKey, $res, and UploadBase\verifyPartialFile().

Referenced by addChunk(), stashFile(), stashFileGetKey(), stashSession(), and tryStashFile().

Member Data Documentation

UploadFromChunks::$mChunkIndex
protected

Definition at line 32 of file UploadFromChunks.php.

Referenced by getChunkIndex().

UploadFromChunks::$mFileKey
protected

Definition at line 33 of file UploadFromChunks.php.

Referenced by verifyChunk().

UploadFromChunks::$mOffset
protected

Definition at line 31 of file UploadFromChunks.php.

Referenced by getOffset().

UploadFromChunks::$mVirtualTempPath
protected

Definition at line 34 of file UploadFromChunks.php.

LocalRepo UploadFromChunks::$repo
private

Definition at line 36 of file UploadFromChunks.php.

Referenced by __construct().


The documentation for this class was generated from the following file: