/** * Test the relationship between title and wikipage in RequestContext * @covers RequestContext::getWikiPage * @covers RequestContext::getTitle */ public function testWikiPageTitle() { $context = new RequestContext(); $curTitle = Title::newFromText("A"); $context->setTitle($curTitle); $this->assertTrue($curTitle->equals($context->getWikiPage()->getTitle()), "When a title is first set WikiPage should be created on-demand for that title."); $curTitle = Title::newFromText("B"); $context->setWikiPage(WikiPage::factory($curTitle)); $this->assertTrue($curTitle->equals($context->getTitle()), "Title must be updated when a new WikiPage is provided."); $curTitle = Title::newFromText("C"); $context->setTitle($curTitle); $this->assertTrue($curTitle->equals($context->getWikiPage()->getTitle()), "When a title is updated the WikiPage should be purged " . "and recreated on-demand with the new title."); }
/** * An efficient edit filter callback based on the text after section merging * @param RequestContext $context * @param Content $content * @param Status $status * @param $summary * @param $user * @param $minorEdit * @return bool */ function confirmEditMerged($context, $content, $status, $summary, $user, $minorEdit) { $legacyMode = !defined('MW_EDITFILTERMERGED_SUPPORTS_API'); if (defined('MW_API') && $legacyMode) { # API mode # The CAPTCHA was already checked and approved return true; } $page = $context->getWikiPage(); if (!$this->doConfirmEdit($page, $content, false, true)) { if ($legacyMode) { $status->fatal('hookaborted'); } $status->value = EditPage::AS_HOOK_ERROR_EXPECTED; $status->apiHookResult = array(); $this->addCaptchaAPI($status->apiHookResult); $page->ConfirmEdit_ActivateCaptcha = true; return $legacyMode; } return true; }
/** * An efficient edit filter callback based on the text after section merging * @param RequestContext $context * @param Content $content * @param Status $status * @param $summary * @param $user * @param $minorEdit * @return bool */ function confirmEditMerged($context, $content, $status, $summary, $user, $minorEdit) { $legacyMode = !defined('MW_EDITFILTERMERGED_SUPPORTS_API'); if (defined('MW_API') && $legacyMode) { # API mode # The CAPTCHA was already checked and approved return true; } if (!$context->canUseWikiPage()) { // we check WikiPage only // try to get an appropriate title for this page $title = $context->getTitle(); if ($title instanceof Title) { $title = $title->getFullText(); } else { // otherwise it's an unknown page where this function is called from $title = 'unknown'; } // log this error, it could be a problem in another extension, edits should always have a WikiPage if // they go through EditFilterMergedContent. wfDebug(__METHOD__ . ': Skipped ConfirmEdit check: No WikiPage for title ' . $title); return true; } $page = $context->getWikiPage(); if (!$this->doConfirmEdit($page, $content, false, $context)) { if ($legacyMode) { $status->fatal('hookaborted'); } $status->value = EditPage::AS_HOOK_ERROR_EXPECTED; $status->apiHookResult = array(); $this->addCaptchaAPI($status->apiHookResult); $page->ConfirmEdit_ActivateCaptcha = true; return $legacyMode; } return true; }