From 6d412cf028a6b2c12aab32fbf52e6f8a6759b08d Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Tue, 6 Oct 2015 19:24:58 -0700 Subject: [PATCH] Move WebRequestUpload class to its own file Moving out of WebRequest.php. It's not even a subclass. Change-Id: I87e5c01afe215a084e39b442c65d22d9d0cc1015 --- autoload.php | 2 +- includes/WebRequest.php | 114 ---------------------------- includes/WebRequestUpload.php | 137 ++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+), 115 deletions(-) create mode 100644 includes/WebRequestUpload.php diff --git a/autoload.php b/autoload.php index 83008ad02c..5060f87b8a 100644 --- a/autoload.php +++ b/autoload.php @@ -1376,7 +1376,7 @@ $wgAutoloadLocalClasses = array( 'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerPage.php', 'WebPHandler' => __DIR__ . '/includes/media/WebP.php', 'WebRequest' => __DIR__ . '/includes/WebRequest.php', - 'WebRequestUpload' => __DIR__ . '/includes/WebRequest.php', + 'WebRequestUpload' => __DIR__ . '/includes/WebRequestUpload.php', 'WebResponse' => __DIR__ . '/includes/WebResponse.php', 'WikiCategoryPage' => __DIR__ . '/includes/page/WikiCategoryPage.php', 'WikiDiff3' => __DIR__ . '/includes/diff/WikiDiff3.php', diff --git a/includes/WebRequest.php b/includes/WebRequest.php index f402f3b869..bd80c7959b 100644 --- a/includes/WebRequest.php +++ b/includes/WebRequest.php @@ -1177,120 +1177,6 @@ HTML; } } -/** - * Object to access the $_FILES array - */ -class WebRequestUpload { - protected $request; - protected $doesExist; - protected $fileInfo; - - /** - * Constructor. Should only be called by WebRequest - * - * @param WebRequest $request The associated request - * @param string $key Key in $_FILES array (name of form field) - */ - public function __construct( $request, $key ) { - $this->request = $request; - $this->doesExist = isset( $_FILES[$key] ); - if ( $this->doesExist ) { - $this->fileInfo = $_FILES[$key]; - } - } - - /** - * Return whether a file with this name was uploaded. - * - * @return bool - */ - public function exists() { - return $this->doesExist; - } - - /** - * Return the original filename of the uploaded file - * - * @return string|null Filename or null if non-existent - */ - public function getName() { - if ( !$this->exists() ) { - return null; - } - - global $wgContLang; - $name = $this->fileInfo['name']; - - # Safari sends filenames in HTML-encoded Unicode form D... - # Horrid and evil! Let's try to make some kind of sense of it. - $name = Sanitizer::decodeCharReferences( $name ); - $name = $wgContLang->normalize( $name ); - wfDebug( __METHOD__ . ": {$this->fileInfo['name']} normalized to '$name'\n" ); - return $name; - } - - /** - * Return the file size of the uploaded file - * - * @return int File size or zero if non-existent - */ - public function getSize() { - if ( !$this->exists() ) { - return 0; - } - - return $this->fileInfo['size']; - } - - /** - * Return the path to the temporary file - * - * @return string|null Path or null if non-existent - */ - public function getTempName() { - if ( !$this->exists() ) { - return null; - } - - return $this->fileInfo['tmp_name']; - } - - /** - * Return the upload error. See link for explanation - * http://www.php.net/manual/en/features.file-upload.errors.php - * - * @return int One of the UPLOAD_ constants, 0 if non-existent - */ - public function getError() { - if ( !$this->exists() ) { - return 0; # UPLOAD_ERR_OK - } - - return $this->fileInfo['error']; - } - - /** - * Returns whether this upload failed because of overflow of a maximum set - * in php.ini - * - * @return bool - */ - public function isIniSizeOverflow() { - if ( $this->getError() == UPLOAD_ERR_INI_SIZE ) { - # PHP indicated that upload_max_filesize is exceeded - return true; - } - - $contentLength = $this->request->getHeader( 'CONTENT_LENGTH' ); - if ( $contentLength > wfShorthandToInteger( ini_get( 'post_max_size' ) ) ) { - # post_max_size is exceeded - return true; - } - - return false; - } -} - /** * WebRequest clone which takes values from a provided array. * diff --git a/includes/WebRequestUpload.php b/includes/WebRequestUpload.php new file mode 100644 index 0000000000..e743d9de16 --- /dev/null +++ b/includes/WebRequestUpload.php @@ -0,0 +1,137 @@ +request = $request; + $this->doesExist = isset( $_FILES[$key] ); + if ( $this->doesExist ) { + $this->fileInfo = $_FILES[$key]; + } + } + + /** + * Return whether a file with this name was uploaded. + * + * @return bool + */ + public function exists() { + return $this->doesExist; + } + + /** + * Return the original filename of the uploaded file + * + * @return string|null Filename or null if non-existent + */ + public function getName() { + if ( !$this->exists() ) { + return null; + } + + global $wgContLang; + $name = $this->fileInfo['name']; + + # Safari sends filenames in HTML-encoded Unicode form D... + # Horrid and evil! Let's try to make some kind of sense of it. + $name = Sanitizer::decodeCharReferences( $name ); + $name = $wgContLang->normalize( $name ); + wfDebug( __METHOD__ . ": {$this->fileInfo['name']} normalized to '$name'\n" ); + return $name; + } + + /** + * Return the file size of the uploaded file + * + * @return int File size or zero if non-existent + */ + public function getSize() { + if ( !$this->exists() ) { + return 0; + } + + return $this->fileInfo['size']; + } + + /** + * Return the path to the temporary file + * + * @return string|null Path or null if non-existent + */ + public function getTempName() { + if ( !$this->exists() ) { + return null; + } + + return $this->fileInfo['tmp_name']; + } + + /** + * Return the upload error. See link for explanation + * http://www.php.net/manual/en/features.file-upload.errors.php + * + * @return int One of the UPLOAD_ constants, 0 if non-existent + */ + public function getError() { + if ( !$this->exists() ) { + return 0; # UPLOAD_ERR_OK + } + + return $this->fileInfo['error']; + } + + /** + * Returns whether this upload failed because of overflow of a maximum set + * in php.ini + * + * @return bool + */ + public function isIniSizeOverflow() { + if ( $this->getError() == UPLOAD_ERR_INI_SIZE ) { + # PHP indicated that upload_max_filesize is exceeded + return true; + } + + $contentLength = $this->request->getHeader( 'CONTENT_LENGTH' ); + if ( $contentLength > wfShorthandToInteger( ini_get( 'post_max_size' ) ) ) { + # post_max_size is exceeded + return true; + } + + return false; + } +} -- 2.20.1