Esempio n. 1
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;
 }