本文整理汇总了PHP中UploadBase::tryStashFile方法的典型用法代码示例。如果您正苦于以下问题:PHP UploadBase::tryStashFile方法的具体用法?PHP UploadBase::tryStashFile怎么用?PHP UploadBase::tryStashFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UploadBase
的用法示例。
在下文中一共展示了UploadBase::tryStashFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: performStash
/**
* Stash the file and add the file key, or error information if it fails, to the data.
*
* @param string $failureMode What to do on failure to stash:
* - When 'critical', use dieStatus() to produce an error response and throw an exception.
* Use this when stashing the file was the primary purpose of the API request.
* - When 'optional', only add a 'stashfailed' key to the data and return null.
* Use this when some error happened for a non-stash upload and we're stashing the file
* only to save the client the trouble of re-uploading it.
* @param array &$data API result to which to add the information
* @return string|null File key
*/
private function performStash($failureMode, &$data = null)
{
$isPartial = (bool) $this->mParams['chunk'];
try {
$status = $this->mUpload->tryStashFile($this->getUser(), $isPartial);
if ($status->isGood() && !$status->getValue()) {
// Not actually a 'good' status...
$status->fatal(new ApiRawMessage('Invalid stashed file', 'stashfailed'));
}
} catch (Exception $e) {
$debugMessage = 'Stashing temporary file failed: ' . get_class($e) . ' ' . $e->getMessage();
wfDebug(__METHOD__ . ' ' . $debugMessage . "\n");
$status = Status::newFatal(new ApiRawMessage($e->getMessage(), 'stashfailed'));
}
if ($status->isGood()) {
$stashFile = $status->getValue();
$data['filekey'] = $stashFile->getFileKey();
// Backwards compatibility
$data['sessionkey'] = $data['filekey'];
return $data['filekey'];
}
if ($status->getMessage()->getKey() === 'uploadstash-exception') {
// The exceptions thrown by upload stash code and pretty silly and UploadBase returns poor
// Statuses for it. Just extract the exception details and parse them ourselves.
list($exceptionType, $message) = $status->getMessage()->getParams();
$debugMessage = 'Stashing temporary file failed: ' . $exceptionType . ' ' . $message;
wfDebug(__METHOD__ . ' ' . $debugMessage . "\n");
list($msg, $code) = $this->handleStashException($exceptionType, $message);
$status = Status::newFatal(new ApiRawMessage($msg, $code));
}
// Bad status
if ($failureMode !== 'optional') {
$this->dieStatus($status);
} else {
list($code, $msg) = $this->getErrorFromStatus($status);
$data['stashfailed'] = $msg;
return null;
}
}
示例2: showUploadWarning
/**
* Stashes the upload, shows the main form, but adds a "continue anyway button".
* Also checks whether there are actually warnings to display.
*
* @param array $warnings
* @return bool True if warnings were displayed, false if there are no
* warnings and it should continue processing
*/
protected function showUploadWarning($warnings)
{
# If there are no warnings, or warnings we can ignore, return early.
# mDestWarningAck is set when some javascript has shown the warning
# to the user. mForReUpload is set when the user clicks the "upload a
# new version" link.
if (!$warnings || count($warnings) == 1 && isset($warnings['exists']) && ($this->mDestWarningAck || $this->mForReUpload)) {
return false;
}
$stashStatus = $this->mUpload->tryStashFile($this->getUser());
if ($stashStatus->isGood()) {
$sessionKey = $stashStatus->getValue()->getFileKey();
} else {
$sessionKey = null;
// TODO Add a warning message about the failure to stash here?
}
// Add styles for the warning, reused from the live preview
$this->getOutput()->addModuleStyles('mediawiki.special.upload.styles');
$linkRenderer = $this->getLinkRenderer();
$warningHtml = '<h2>' . $this->msg('uploadwarning')->escaped() . "</h2>\n" . '<div class="mw-destfile-warning"><ul>';
foreach ($warnings as $warning => $args) {
if ($warning == 'badfilename') {
$this->mDesiredDestName = Title::makeTitle(NS_FILE, $args)->getText();
}
if ($warning == 'exists') {
$msg = "\t<li>" . self::getExistsWarning($args) . "</li>\n";
} elseif ($warning == 'no-change') {
$file = $args;
$filename = $file->getTitle()->getPrefixedText();
$msg = "\t<li>" . wfMessage('fileexists-no-change', $filename)->parse() . "</li>\n";
} elseif ($warning == 'duplicate-version') {
$file = $args[0];
$count = count($args);
$filename = $file->getTitle()->getPrefixedText();
$message = wfMessage('fileexists-duplicate-version')->params($filename)->numParams($count);
$msg = "\t<li>" . $message->parse() . "</li>\n";
} elseif ($warning == 'was-deleted') {
# If the file existed before and was deleted, warn the user of this
$ltitle = SpecialPage::getTitleFor('Log');
$llink = $linkRenderer->makeKnownLink($ltitle, wfMessage('deletionlog')->text(), [], ['type' => 'delete', 'page' => Title::makeTitle(NS_FILE, $args)->getPrefixedText()]);
$msg = "\t<li>" . wfMessage('filewasdeleted')->rawParams($llink)->parse() . "</li>\n";
} elseif ($warning == 'duplicate') {
$msg = $this->getDupeWarning($args);
} elseif ($warning == 'duplicate-archive') {
if ($args === '') {
$msg = "\t<li>" . $this->msg('file-deleted-duplicate-notitle')->parse() . "</li>\n";
} else {
$msg = "\t<li>" . $this->msg('file-deleted-duplicate', Title::makeTitle(NS_FILE, $args)->getPrefixedText())->parse() . "</li>\n";
}
} else {
if ($args === true) {
$args = [];
} elseif (!is_array($args)) {
$args = [$args];
}
$msg = "\t<li>" . $this->msg($warning, $args)->parse() . "</li>\n";
}
$warningHtml .= $msg;
}
$warningHtml .= "</ul></div>\n";
$warningHtml .= $this->msg('uploadwarning-text')->parseAsBlock();
$form = $this->getUploadForm($warningHtml, $sessionKey, true);
$form->setSubmitText($this->msg('upload-tryagain')->text());
$form->addButton(['name' => 'wpUploadIgnoreWarning', 'value' => $this->msg('ignorewarning')->text()]);
$form->addButton(['name' => 'wpCancelUpload', 'value' => $this->msg('reuploaddesc')->text()]);
$this->showUploadForm($form);
# Indicate that we showed a form
return true;
}