示例#1
0
 private function loadRequest($request)
 {
     global $wgUser;
     $this->mRequest = $request;
     $this->mAction = $request->getInt(ADD_RESOURCE_ACTION_FIELD);
     switch ($this->mAction) {
         case ADD_RESOURCE_ACTION_UPLOAD:
             $this->mUpload = UploadBase::createFromRequest($request);
             # used by copied processUpload()
             $this->mUploadClicked = true;
             $this->mComment = $request->getVal('wpUploadDescription');
             break;
         case ADD_RESOURCE_ACTION_SUBPAGE:
             $this->mSubpageDest = $request->getVal('wpSubpageDest');
             break;
         case ADD_RESOURCE_ACTION_LINK:
             $this->mLinkUrl = $request->getVal('wpLinkUrl');
             $this->mLinkTitle = $request->getVal('wpLinkTitle');
             $this->mLinkDesc = $request->getVal('wpLinkDesc');
             break;
         default:
             break;
     }
     $this->mTokenOk = $wgUser->matchEditToken($request->getVal('wpEditToken'));
     $this->mCancelUpload = false;
 }
示例#2
0
 /**
  * Initialize instance variables from request and create an Upload handler
  */
 protected function loadRequest()
 {
     $this->mRequest = $request = $this->getRequest();
     $this->mSourceType = $request->getVal('wpSourceType', 'file');
     $this->mUpload = UploadBase::createFromRequest($request);
     $this->mUploadClicked = $request->wasPosted() && ($request->getCheck('wpUpload') || $request->getCheck('wpUploadIgnoreWarning'));
     // Guess the desired name from the filename if not provided
     $this->mDesiredDestName = $request->getText('wpDestFile');
     if (!$this->mDesiredDestName && $request->getFileName('wpUploadFile') !== null) {
         $this->mDesiredDestName = $request->getFileName('wpUploadFile');
     }
     $this->mLicense = $request->getText('wpLicense');
     $this->mDestWarningAck = $request->getText('wpDestFileWarningAck');
     $this->mIgnoreWarning = $request->getCheck('wpIgnoreWarning') || $request->getCheck('wpUploadIgnoreWarning');
     $this->mWatchthis = $request->getBool('wpWatchthis') && $this->getUser()->isLoggedIn();
     $this->mCopyrightStatus = $request->getText('wpUploadCopyStatus');
     $this->mCopyrightSource = $request->getText('wpUploadSource');
     $this->mForReUpload = $request->getBool('wpForReUpload');
     // updating a file
     $commentDefault = '';
     $commentMsg = wfMessage('upload-default-description')->inContentLanguage();
     if (!$this->mForReUpload && !$commentMsg->isDisabled()) {
         $commentDefault = $commentMsg->plain();
     }
     $this->mComment = $request->getText('wpUploadDescription', $commentDefault);
     $this->mCancelUpload = $request->getCheck('wpCancelUpload') || $request->getCheck('wpReUpload');
     // b/w compat
     // If it was posted check for the token (no remote POST'ing with user credentials)
     $token = $request->getVal('wpEditToken');
     $this->mTokenOk = $this->getUser()->matchEditToken($token);
     $this->uploadFormTextTop = '';
     $this->uploadFormTextAfterSummary = '';
 }
 /**
  * Initialize instance variables from request and create an Upload handler
  *
  * @param WebRequest $request The request to extract variables from
  */
 protected function loadRequest($request)
 {
     global $wgUser, $wgMaxUploadFiles;
     // let's make the parent happy
     wfSuppressWarnings();
     $_FILES['wpUploadFile'] = $_FILES['wpUploadFile0'];
     wfRestoreWarnings();
     // Guess the desired name from the filename if not provided
     $this->mDesiredDestNames = array();
     $this->mUploads = array();
     // deal with session keys, if we have some pick the first one, for now
     $vals = $request->getValues();
     $fromsession = false;
     foreach ($vals as $k => $v) {
         if (preg_match("@^wpSessionKey@", $k)) {
             $request->setVal('wpSessionKey', $v);
             $fromsession = true;
             $filenum = preg_replace("@wpSessionKey@", '', $k);
             $request->setVal('wpDestFile', $request->getVal('wpDestFile' . $filenum));
             $up = UploadBase::createFromRequest($request);
             $this->mUploads[] = $up;
             $this->mDesiredDestNames[] = $request->getVal('wpDestFile' . $filenum);
         }
     }
     parent::loadRequest($request);
     $this->mUploadClicked = $request->wasPosted() && ($request->getCheck('wpUpload') || $request->getCheck('wpUploadIgnoreWarning'));
     if (!$fromsession) {
         for ($i = 0; $i < $wgMaxUploadFiles; $i++) {
             $this->mDesiredDestNames[$i] = $request->getText('wpDestFile' . $i);
             if (!$this->mDesiredDestNames[$i] && $request->getFileName('wpUploadFile' . $i) !== null) {
                 $this->mDesiredDestNames[$i] = $request->getFileName('wpUploadFile' . $i);
             }
             wfSuppressWarnings();
             $request->setVal('wpUploadFile', $_FILES['wpUploadFile' . $i]);
             wfRestoreWarnings();
             $request->setVal('wpDestFile', $request->getVal('wpDestFile' . $i));
             move_uploaded_file('wpUploadFile' . $i, 'wpUploadFile');
             wfSuppressWarnings();
             $_FILES['wpUploadFile'] = $_FILES['wpUploadFile' . $i];
             wfRestoreWarnings();
             $up = UploadBase::createFromRequest($request);
             if ($up) {
                 $this->mUploads[] = $up;
             }
         }
     }
     $this->mDesiredDestName = $this->mDesiredDestNames[0];
     $this->mUpload = $this->mUploads[0];
 }
示例#4
0
 function loadFile($type)
 {
     global $wgRequest, $wgUser;
     $ext = $type;
     $file_name = "Drawio_" . $wgRequest->getVal('drawio') . "." . $ext;
     $wgRequest->setVal('wpDestFile', $file_name);
     $wgRequest->setVal('wpIgnoreWarning', '1');
     $wgRequest->setVal('wpDestFileWarningAck', '1');
     $wgRequest->setVal('wpUploadDescription', "");
     $wgRequest->setVal('action', "");
     if ($type == "png") {
         $file_type = "image/png";
         $pngval = $wgRequest->getVal($type);
         $comma_pos = strpos($pngval, ',');
         if ($comma_pos === false) {
             $file_body = stripslashes($pngval);
         } else {
             $file_body = base64_decode(substr($pngval, $comma_pos + 1));
         }
     } else {
         $file_type = "text/xml";
         $file_body = $wgRequest->getVal($type);
     }
     $file_len = strlen($file_body);
     if ($file_len > 0) {
         $_FILES['wpUploadFile']['name'] = $file_name;
         $_FILES['wpUploadFile']['type'] = $file_type;
         $_FILES['wpUploadFile']['error'] = 0;
         $_FILES['wpUploadFile']['size'] = $file_len;
         // $tmp_name = $_SERVER["DOCUMENT_ROOT"] . "tmp/tmp_".rand(0,1000).rand(0,1000).".".$ext;
         $tmp_name = wfTempDir() . "tmp_" . rand(0, 1000) . rand(0, 1000) . "." . $ext;
         $f = fopen($tmp_name, "w");
         fwrite($f, $file_body);
         fclose($f);
         $_FILES['wpUploadFile']['tmp_name'] = $tmp_name;
         // Upload
         $form = UploadBase::createFromRequest($wgRequest, null);
         $outcome = $form->verifyUpload();
         $res = $form->performUpload("", "", true, $wgUser);
         if (file_exists($tmp_name)) {
             unlink($tmp_name);
         }
     }
     // $outcome['request'] = $wgRequest;
     // $outcome['form'] = $form;
     return $outcome;
 }
示例#5
0
 /**
  * Initialize instance variables from request and create an Upload handler
  *
  * @param WebRequest $request The request to extract variables from
  */
 protected function loadRequest($request)
 {
     $this->mRequest = $request;
     $this->mSourceType = $request->getVal('wpSourceType', 'file');
     $this->mUpload = UploadBase::createFromRequest($request);
     $this->mUploadClicked = $request->wasPosted() && ($request->getCheck('wpUpload') || $request->getCheck('wpUploadIgnoreWarning'));
     // Guess the desired name from the filename if not provided
     $this->mDesiredDestName = $request->getText('wpDestFile');
     if (!$this->mDesiredDestName) {
         $this->mDesiredDestName = $request->getText('wpUploadFile');
     }
     $this->mComment = $request->getText('wpUploadDescription');
     $this->mLicense = $request->getText('wpLicense');
     $this->mDestWarningAck = $request->getText('wpDestFileWarningAck');
     $this->mIgnoreWarning = $request->getCheck('wpIgnoreWarning') || $request->getCheck('wpUploadIgnoreWarning');
     $this->mWatchthis = $request->getBool('wpWatchthis');
     $this->mCopyrightStatus = $request->getText('wpUploadCopyStatus');
     $this->mCopyrightSource = $request->getText('wpUploadSource');
     $this->mForReUpload = $request->getBool('wpForReUpload');
     // updating a file
     $this->mCancelUpload = $request->getCheck('wpCancelUpload') || $request->getCheck('wpReUpload');
     // b/w compat
     // If it was posted check for the token (no remote POST'ing with user credentials)
     $token = $request->getVal('wpEditToken');
     if ($this->mSourceType == 'file' && $token == null) {
         // Skip token check for file uploads as that can't be faked via JS...
         // Some client-side tools don't expect to need to send wpEditToken
         // with their submissions, as that was new in 1.16.
         $this->mTokenOk = true;
     } else {
         $this->mTokenOk = $this->getUser()->matchEditToken($token);
     }
     $this->mInputID = $request->getText('sfInputID');
     $this->mDelimiter = $request->getText('sfDelimiter');
     $this->uploadFormTextTop = '';
     $this->uploadFormTextAfterSummary = '';
 }
示例#6
0
 /**
  * Upload passed filename into the wiki as if it were posted by the normal upload form
  * - $name is updated since the upload method may modify the filename used
  */
 function upload($file, &$name, $comment, $text)
 {
     $user = User::newFromName('EmailToWiki');
     $_GET['wpDestFile'] = $name;
     $_GET['wpDestFileWarningAck'] = 1;
     $_FILES['wpUploadFile'] = array('name' => basename($file), 'tmp_name' => $file, 'size' => filesize($file));
     $request = new WebRequest();
     $upload = UploadBase::createFromRequest($request, 'File');
     $upload->verifyUpload();
     $title = $upload->getTitle();
     if (is_object($title)) {
         $status = $upload->performUpload($comment, $text, false, $user);
         $name = $title->getPrefixedText();
     } else {
         return 'File "' . basename($file) . '" could not be uploaded, the file-extension is probably not permitted by the wiki';
     }
     return $status->isGood() ? true : $status->getWikiText();
 }
 public function setUploadBase($object = null)
 {
     if (isset($this->upload_base)) {
         return;
     }
     return $this->upload_base = isset($object) ? $object : UploadBase::createFromRequest($this->request);
 }