本文整理匯總了PHP中DerivativeContext::setWikiPage方法的典型用法代碼示例。如果您正苦於以下問題:PHP DerivativeContext::setWikiPage方法的具體用法?PHP DerivativeContext::setWikiPage怎麽用?PHP DerivativeContext::setWikiPage使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類DerivativeContext
的用法示例。
在下文中一共展示了DerivativeContext::setWikiPage方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: getContext
private function getContext($requestedAction = null)
{
$request = new FauxRequest(array('action' => $requestedAction));
$context = new DerivativeContext(RequestContext::getMain());
$context->setRequest($request);
$context->setWikiPage($this->getPage());
return $context;
}
示例2: execute
//.........這裏部分代碼省略.........
} else {
$langlinks = false;
}
if (isset($prop['langlinks'])) {
$result_array['langlinks'] = $this->formatLangLinks($langlinks);
}
if (isset($prop['languageshtml'])) {
$languagesHtml = $this->languagesHtml($langlinks);
$result_array['languageshtml'] = array();
ApiResult::setContent($result_array['languageshtml'], $languagesHtml);
}
if (isset($prop['categories'])) {
$result_array['categories'] = $this->formatCategoryLinks($p_result->getCategories());
}
if (isset($prop['categorieshtml'])) {
$categoriesHtml = $this->categoriesHtml($p_result->getCategories());
$result_array['categorieshtml'] = array();
ApiResult::setContent($result_array['categorieshtml'], $categoriesHtml);
}
if (isset($prop['links'])) {
$result_array['links'] = $this->formatLinks($p_result->getLinks());
}
if (isset($prop['templates'])) {
$result_array['templates'] = $this->formatLinks($p_result->getTemplates());
}
if (isset($prop['images'])) {
$result_array['images'] = array_keys($p_result->getImages());
}
if (isset($prop['externallinks'])) {
$result_array['externallinks'] = array_keys($p_result->getExternalLinks());
}
if (isset($prop['sections'])) {
$result_array['sections'] = $p_result->getSections();
}
if (isset($prop['displaytitle'])) {
$result_array['displaytitle'] = $p_result->getDisplayTitle() ? $p_result->getDisplayTitle() : $titleObj->getPrefixedText();
}
if (isset($prop['headitems']) || isset($prop['headhtml'])) {
$context = new DerivativeContext($this->getContext());
$context->setTitle($titleObj);
$context->setWikiPage($pageObj);
// We need an OutputPage tied to $context, not to the
// RequestContext at the root of the stack.
$output = new OutputPage($context);
$output->addParserOutputNoText($p_result);
if (isset($prop['headitems'])) {
$headItems = $this->formatHeadItems($p_result->getHeadItems());
$css = $this->formatCss($output->buildCssLinksArray());
$scripts = array($output->getHeadScripts());
$result_array['headitems'] = array_merge($headItems, $css, $scripts);
}
if (isset($prop['headhtml'])) {
$result_array['headhtml'] = array();
ApiResult::setContent($result_array['headhtml'], $output->headElement($context->getSkin()));
}
}
if (isset($prop['iwlinks'])) {
$result_array['iwlinks'] = $this->formatIWLinks($p_result->getInterwikiLinks());
}
if (isset($prop['wikitext'])) {
$result_array['wikitext'] = array();
ApiResult::setContent($result_array['wikitext'], $this->content->serialize($format));
if (!is_null($this->pstContent)) {
$result_array['psttext'] = array();
ApiResult::setContent($result_array['psttext'], $this->pstContent->serialize($format));
}
}
if (isset($prop['properties'])) {
$result_array['properties'] = $this->formatProperties($p_result->getProperties());
}
if (isset($prop['limitreportdata'])) {
$result_array['limitreportdata'] = $this->formatLimitReportData($p_result->getLimitReportData());
}
if (isset($prop['limitreporthtml'])) {
$limitreportHtml = EditPage::getPreviewLimitReport($p_result);
$result_array['limitreporthtml'] = array();
ApiResult::setContent($result_array['limitreporthtml'], $limitreportHtml);
}
if ($params['generatexml']) {
if ($this->content->getModel() != CONTENT_MODEL_WIKITEXT) {
$this->dieUsage("generatexml is only supported for wikitext content", "notwikitext");
}
$wgParser->startExternalParse($titleObj, $popts, OT_PREPROCESS);
$dom = $wgParser->preprocessToDom($this->content->getNativeData());
if (is_callable(array($dom, 'saveXML'))) {
$xml = $dom->saveXML();
} else {
$xml = $dom->__toString();
}
$result_array['parsetree'] = array();
ApiResult::setContent($result_array['parsetree'], $xml);
}
$result_mapping = array('redirects' => 'r', 'langlinks' => 'll', 'categories' => 'cl', 'links' => 'pl', 'templates' => 'tl', 'images' => 'img', 'externallinks' => 'el', 'iwlinks' => 'iw', 'sections' => 's', 'headitems' => 'hi', 'properties' => 'pp', 'limitreportdata' => 'lr');
$this->setIndexedTagNames($result_array, $result_mapping);
$result->addValue(null, $this->getModuleName(), $result_array);
if (!is_null($oldLang)) {
$this->getContext()->setLanguage($oldLang);
// Reset language to $oldLang
}
}
示例3: execute
//.........這裏部分代碼省略.........
if (isset($prop['categories'])) {
$result_array['categories'] = $this->formatCategoryLinks($p_result->getCategories());
}
if (isset($prop['categorieshtml'])) {
$result_array['categorieshtml'] = $this->categoriesHtml($p_result->getCategories());
$result_array[ApiResult::META_BC_SUBELEMENTS][] = 'categorieshtml';
}
if (isset($prop['links'])) {
$result_array['links'] = $this->formatLinks($p_result->getLinks());
}
if (isset($prop['templates'])) {
$result_array['templates'] = $this->formatLinks($p_result->getTemplates());
}
if (isset($prop['images'])) {
$result_array['images'] = array_keys($p_result->getImages());
}
if (isset($prop['externallinks'])) {
$result_array['externallinks'] = array_keys($p_result->getExternalLinks());
}
if (isset($prop['sections'])) {
$result_array['sections'] = $p_result->getSections();
}
if (isset($prop['displaytitle'])) {
$result_array['displaytitle'] = $p_result->getDisplayTitle() ?: $titleObj->getPrefixedText();
}
if (isset($prop['headitems'])) {
$result_array['headitems'] = $this->formatHeadItems($p_result->getHeadItems());
$this->logFeatureUsage('action=parse&prop=headitems');
$this->setWarning('headitems is deprecated since MediaWiki 1.28. ' . 'Use prop=headhtml when creating new HTML documents, or ' . 'prop=modules|jsconfigvars when updating a document client-side.');
}
if (isset($prop['headhtml'])) {
$context = new DerivativeContext($this->getContext());
$context->setTitle($titleObj);
$context->setWikiPage($pageObj);
// We need an OutputPage tied to $context, not to the
// RequestContext at the root of the stack.
$output = new OutputPage($context);
$output->addParserOutputMetadata($p_result);
$result_array['headhtml'] = $output->headElement($context->getSkin());
$result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
}
if (isset($prop['modules'])) {
$result_array['modules'] = array_values(array_unique($p_result->getModules()));
$result_array['modulescripts'] = array_values(array_unique($p_result->getModuleScripts()));
$result_array['modulestyles'] = array_values(array_unique($p_result->getModuleStyles()));
}
if (isset($prop['jsconfigvars'])) {
$result_array['jsconfigvars'] = ApiResult::addMetadataToResultVars($p_result->getJsConfigVars());
}
if (isset($prop['encodedjsconfigvars'])) {
$result_array['encodedjsconfigvars'] = FormatJson::encode($p_result->getJsConfigVars(), false, FormatJson::ALL_OK);
$result_array[ApiResult::META_SUBELEMENTS][] = 'encodedjsconfigvars';
}
if (isset($prop['modules']) && !isset($prop['jsconfigvars']) && !isset($prop['encodedjsconfigvars'])) {
$this->setWarning('Property "modules" was set but not "jsconfigvars" ' . 'or "encodedjsconfigvars". Configuration variables are necessary ' . 'for proper module usage.');
}
if (isset($prop['indicators'])) {
$result_array['indicators'] = (array) $p_result->getIndicators();
ApiResult::setArrayType($result_array['indicators'], 'BCkvp', 'name');
}
if (isset($prop['iwlinks'])) {
$result_array['iwlinks'] = $this->formatIWLinks($p_result->getInterwikiLinks());
}
if (isset($prop['wikitext'])) {
$result_array['wikitext'] = $this->content->serialize($format);
$result_array[ApiResult::META_BC_SUBELEMENTS][] = 'wikitext';
示例4: onSubmit
public function onSubmit(array $data)
{
global $wgContLang;
if ($data['pagetitle'] === '') {
// Initial form view of special page, pass
return false;
}
// At this point, it has to be a POST request. This is enforced by HTMLForm,
// but lets be safe verify that.
if (!$this->getRequest()->wasPosted()) {
throw new RuntimeException("Form submission was not POSTed");
}
$this->title = Title::newFromText($data['pagetitle']);
$titleWithNewContentModel = clone $this->title;
$titleWithNewContentModel->setContentModel($data['model']);
$user = $this->getUser();
// Check permissions and make sure the user has permission to:
$errors = wfMergeErrorArrays($this->title->getUserPermissionsErrors('editcontentmodel', $user), $this->title->getUserPermissionsErrors('edit', $user), $titleWithNewContentModel->getUserPermissionsErrors('editcontentmodel', $user), $titleWithNewContentModel->getUserPermissionsErrors('edit', $user));
if ($errors) {
$out = $this->getOutput();
$wikitext = $out->formatPermissionsErrorMessage($errors);
// Hack to get our wikitext parsed
return Status::newFatal(new RawMessage('$1', [$wikitext]));
}
$page = WikiPage::factory($this->title);
if ($this->oldRevision === null) {
$this->oldRevision = $page->getRevision() ?: false;
}
$oldModel = $this->title->getContentModel();
if ($this->oldRevision) {
$oldContent = $this->oldRevision->getContent();
try {
$newContent = ContentHandler::makeContent($oldContent->getNativeData(), $this->title, $data['model']);
} catch (MWException $e) {
return Status::newFatal($this->msg('changecontentmodel-cannot-convert')->params($this->title->getPrefixedText(), ContentHandler::getLocalizedName($data['model'])));
}
} else {
// Page doesn't exist, create an empty content object
$newContent = ContentHandler::getForModelID($data['model'])->makeEmptyContent();
}
// All other checks have passed, let's check rate limits
if ($user->pingLimiter('editcontentmodel')) {
throw new ThrottledError();
}
$flags = $this->oldRevision ? EDIT_UPDATE : EDIT_NEW;
$flags |= EDIT_INTERNAL;
if ($user->isAllowed('bot')) {
$flags |= EDIT_FORCE_BOT;
}
$log = new ManualLogEntry('contentmodel', $this->oldRevision ? 'change' : 'new');
$log->setPerformer($user);
$log->setTarget($this->title);
$log->setComment($data['reason']);
$log->setParameters(['4::oldmodel' => $oldModel, '5::newmodel' => $data['model']]);
$formatter = LogFormatter::newFromEntry($log);
$formatter->setContext(RequestContext::newExtraneousContext($this->title));
$reason = $formatter->getPlainActionText();
if ($data['reason'] !== '') {
$reason .= $this->msg('colon-separator')->inContentLanguage()->text() . $data['reason'];
}
# Truncate for whole multibyte characters.
$reason = $wgContLang->truncate($reason, 255);
// Run edit filters
$derivativeContext = new DerivativeContext($this->getContext());
$derivativeContext->setTitle($this->title);
$derivativeContext->setWikiPage($page);
$status = new Status();
if (!Hooks::run('EditFilterMergedContent', [$derivativeContext, $newContent, $status, $reason, $user, false])) {
if ($status->isGood()) {
// TODO: extensions should really specify an error message
$status->fatal('hookaborted');
}
return $status;
}
$status = $page->doEditContent($newContent, $reason, $flags, $this->oldRevision ? $this->oldRevision->getId() : false, $user);
if (!$status->isOK()) {
return $status;
}
$logid = $log->insert();
$log->publish($logid);
return $status;
}