Fix doc for includes/upload
[lhc/web/wiklou.git] / includes / upload / UploadFromFile.php
1 <?php
2 /**
3 * Implements regular file uploads
4 *
5 * @ingroup Upload
6 * @author Bryan Tong Minh
7 */
8 class UploadFromFile extends UploadBase {
9
10 /**
11 * @var WebRequestUpload
12 */
13 protected $mUpload = null;
14
15 /**
16 * @param $request WebRequest
17 */
18 function initializeFromRequest( &$request ) {
19 $upload = $request->getUpload( 'wpUploadFile' );
20 $desiredDestName = $request->getText( 'wpDestFile' );
21 if( !$desiredDestName )
22 $desiredDestName = $upload->getName();
23
24 return $this->initialize( $desiredDestName, $upload );
25 }
26
27 /**
28 * Initialize from a filename and a WebRequestUpload
29 * @param $name
30 * @param $webRequestUpload
31 */
32 function initialize( $name, $webRequestUpload ) {
33 $this->mUpload = $webRequestUpload;
34 return $this->initializePathInfo( $name,
35 $this->mUpload->getTempName(), $this->mUpload->getSize() );
36 }
37
38 /**
39 * @param $request
40 * @return bool
41 */
42 static function isValidRequest( $request ) {
43 # Allow all requests, even if no file is present, so that an error
44 # because a post_max_size or upload_max_filesize overflow
45 return true;
46 }
47
48 /**
49 * @return string
50 */
51 public function getSourceType() {
52 return 'file';
53 }
54
55 /**
56 * @return array
57 */
58 public function verifyUpload() {
59 # Check for a post_max_size or upload_max_size overflow, so that a
60 # proper error can be shown to the user
61 if ( is_null( $this->mTempPath ) || $this->isEmptyFile() ) {
62 if ( $this->mUpload->isIniSizeOverflow() ) {
63 return array(
64 'status' => UploadBase::FILE_TOO_LARGE,
65 'max' => min(
66 self::getMaxUploadSize( $this->getSourceType() ),
67 wfShorthandToInteger( ini_get( 'upload_max_filesize' ) ),
68 wfShorthandToInteger( ini_get( 'post_max_size' ) )
69 ),
70 );
71 }
72 }
73
74 return parent::verifyUpload();
75 }
76 }