MediaWiki master
UploadFromUrl Class Reference

Implements uploading from a HTTP resource. More...

Inherits UploadBase.

Collaboration diagram for UploadFromUrl:

Public Member Functions

 canFetchFile ()
 verify we can actually download the file
 
 fetchFile ( $httpOptions=[])
 Download the file.
 
 getSourceType ()
 
 getUrl ()
 Get the URL of the file to be uploaded.
 
 initialize ( $name, $url)
 Entry point for API upload.
 
 initializeFromRequest (&$request)
 Entry point for SpecialUpload.
 
 saveTempFileChunk ( $req, $buffer)
 Callback: save a chunk of the result of a HTTP request to the temporary file.
 
- Public Member Functions inherited from UploadBase
 __construct ()
 
 checkSvgScriptCallback ( $element, $attribs, $data=null)
 
 checkWarnings ( $user=null)
 Check for non fatal problems with the file.
 
 cleanupTempFile ()
 If we've modified the upload file, then we need to manually remove it on exit to clean up.
 
 convertVerifyErrorToStatus ( $error)
 
 fetchFile ()
 Fetch the file.
 
 getDesiredDestName ()
 Get the desired destination name.
 
 getFileSize ()
 Return the file size.
 
 getImageInfo ( $result=null)
 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.
 
 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.
 
 tryStashFile (User $user, $isPartial=false)
 Like stashFile(), but respects extensions' wishes to prevent the stashing.
 
 validateName ()
 Verify that the name is valid and, if necessary, that we can overwrite.
 
 verifyPermissions (Authority $performer)
 Alias for verifyTitlePermissions.
 
 verifyTitlePermissions (Authority $performer)
 Check whether the user can edit, upload and create the image.
 
 verifyUpload ()
 Verify whether the upload is sensible.
 
 zipEntryCallback ( $entry)
 Callback for ZipDirectoryReader to detect Java class files.
 

Static Public Member Functions

static getCacheKey ( $params)
 Provides a caching key for an upload from url set of parameters Used to set the status of an async job in UploadFromUrlJob and retreive it in frontend clients like ApiUpload.
 
static getCacheKeyFromRequest (&$request)
 Get the caching key from a web request.
 
static isAllowed (Authority $performer)
 Checks if the user is allowed to use the upload-by-URL feature.
 
static isAllowedHost ( $url)
 Checks whether the URL is for an allowed host The domains in the allowlist can include wildcard characters (*) in place of any of the domain levels, e.g.
 
static isAllowedUrl ( $url)
 Checks whether the URL is not allowed.
 
static isEnabled ()
 Checks if the upload from URL feature is enabled.
 
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 an allowed list 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 disallowed 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 a given type of upload, based on $wgMaxUploadSize.
 
static getSessionStatus (UserIdentity $user, $statusKey)
 Get the current status of a chunked upload (used for polling).
 
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 (UserIdentity $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 unserializeWarnings ( $warnings)
 Convert the serialized warnings array created by makeWarningsSerializable() back to the output of checkWarnings().
 
static userCanReUpload (Authority $performer, 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.
 

Protected Member Functions

 makeTemporaryFile ()
 Create a new temporary file in the URL subdirectory of wfTempDir().
 
 reallyFetchFile ( $httpOptions=[])
 Download the file, save it to the temporary file and update the file size and set $mRemoveTempFile to true.
 
- Protected Member Functions inherited from UploadBase
 detectScriptInSvg ( $filename, $partial)
 
 doStashFile (?User $user=null)
 Implementation for stashFile() and tryStashFile().
 
 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

resource null false $mTmpHandle
 
string $mUrl
 
- 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
 
bool null $mRemoveTempFile
 
string null $mSourceType
 
UploadStashFile null $mStashFile
 
string false $mSVGNSError
 
string null $mTempPath
 Local file system path to the file to upload (or a local copy)
 
Title false null $mTitle = false
 
int $mTitleError = 0
 
TempFSFile null $tempFileObj
 Wrapper to handle deleting the temp file.
 

Static Protected Attributes

static array< string, bool > $allowedUrls = []
 

Additional Inherited Members

- 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
 

Detailed Description

Implements uploading from a HTTP resource.

Author
Bryan Tong Minh
Michael Dale

Definition at line 39 of file UploadFromUrl.php.

Member Function Documentation

◆ canFetchFile()

UploadFromUrl::canFetchFile ( )

verify we can actually download the file

Returns
Status

Reimplemented from UploadBase.

Definition at line 286 of file UploadFromUrl.php.

◆ fetchFile()

UploadFromUrl::fetchFile ( $httpOptions = [])

Download the file.

Parameters
array$httpOptionsArray of options for MWHttpRequest. This could be used to override the timeout on the http request.
Returns
Status

Definition at line 273 of file UploadFromUrl.php.

◆ getCacheKey()

static UploadFromUrl::getCacheKey ( $params)
static

Provides a caching key for an upload from url set of parameters Used to set the status of an async job in UploadFromUrlJob and retreive it in frontend clients like ApiUpload.

Will return the empty string if not all parameters are present.

Parameters
array$params
Returns
string

Definition at line 131 of file UploadFromUrl.php.

References $params.

◆ getCacheKeyFromRequest()

static UploadFromUrl::getCacheKeyFromRequest ( & $request)
static

Get the caching key from a web request.

Parameters
WebRequest&$request
Returns
string

Definition at line 148 of file UploadFromUrl.php.

References getCacheKey().

◆ getSourceType()

UploadFromUrl::getSourceType ( )
Returns
string

Reimplemented from UploadBase.

Definition at line 262 of file UploadFromUrl.php.

◆ getUrl()

UploadFromUrl::getUrl ( )

Get the URL of the file to be uploaded.

Returns
string

Definition at line 211 of file UploadFromUrl.php.

◆ initialize()

UploadFromUrl::initialize ( $name,
$url )

Entry point for API upload.

Parameters
string$name
string$url

Definition at line 221 of file UploadFromUrl.php.

References $url.

Referenced by UploadFromUrlJob\getUpload(), and MediaWiki\Api\ApiUpload\selectUploadModule().

◆ initializeFromRequest()

UploadFromUrl::initializeFromRequest ( & $request)

Entry point for SpecialUpload.

Parameters
WebRequest&$request

Reimplemented from UploadBase.

Definition at line 233 of file UploadFromUrl.php.

◆ isAllowed()

static UploadFromUrl::isAllowed ( Authority $performer)
static

Checks if the user is allowed to use the upload-by-URL feature.

If the user is not allowed, return the name of the user right as a string. If the user is allowed, have the parent do further permissions checking.

Parameters
Authority$performer
Returns
bool|string

Reimplemented from UploadBase.

Definition at line 58 of file UploadFromUrl.php.

References MediaWiki\Permissions\Authority\isAllowed().

◆ isAllowedHost()

static UploadFromUrl::isAllowedHost ( $url)
static

Checks whether the URL is for an allowed host The domains in the allowlist can include wildcard characters (*) in place of any of the domain levels, e.g.

'*.flickr.com' or 'upload.*.gov.uk'.

Parameters
string$url
Returns
bool

Definition at line 84 of file UploadFromUrl.php.

References $url, and wfGetUrlUtils().

◆ isAllowedUrl()

static UploadFromUrl::isAllowedUrl ( $url)
static

Checks whether the URL is not allowed.

Parameters
string$url
Returns
bool

Definition at line 196 of file UploadFromUrl.php.

References $url.

◆ isEnabled()

static UploadFromUrl::isEnabled ( )
static

Checks if the upload from URL feature is enabled.

Returns
bool

Reimplemented from UploadBase.

Definition at line 70 of file UploadFromUrl.php.

◆ isValidRequest()

static UploadFromUrl::isValidRequest ( $request)
static
Parameters
WebRequest$request
Returns
bool

Reimplemented from UploadBase.

Definition at line 248 of file UploadFromUrl.php.

References $url.

◆ makeTemporaryFile()

UploadFromUrl::makeTemporaryFile ( )
protected

Create a new temporary file in the URL subdirectory of wfTempDir().

Returns
string Path to the file

Definition at line 305 of file UploadFromUrl.php.

◆ reallyFetchFile()

UploadFromUrl::reallyFetchFile ( $httpOptions = [])
protected

Download the file, save it to the temporary file and update the file size and set $mRemoveTempFile to true.

Parameters
array$httpOptionsArray of options for MWHttpRequest
Returns
Status

Definition at line 347 of file UploadFromUrl.php.

References wfDebugLog().

◆ saveTempFileChunk()

UploadFromUrl::saveTempFileChunk ( $req,
$buffer )

Callback: save a chunk of the result of a HTTP request to the temporary file.

Parameters
mixed$req
string$buffer
Returns
int Number of bytes handled

Definition at line 320 of file UploadFromUrl.php.

References wfDebugLog().

Member Data Documentation

◆ $allowedUrls

array<string,bool> UploadFromUrl::$allowedUrls = []
staticprotected

Definition at line 47 of file UploadFromUrl.php.

◆ $mTmpHandle

resource null false UploadFromUrl::$mTmpHandle
protected

Definition at line 44 of file UploadFromUrl.php.

◆ $mUrl

string UploadFromUrl::$mUrl
protected

Definition at line 41 of file UploadFromUrl.php.


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