/**
  * 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.");
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }