/** * 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; }