protected function setUp() { parent::setUp(); global $wgFlowAbuseFilterGroup, $wgFlowAbuseFilterEmergencyDisableThreshold, $wgFlowAbuseFilterEmergencyDisableCount, $wgFlowAbuseFilterEmergencyDisableAge; // Needed because abuse filter tries to read the title out and then // set it back. If we never provide one it tries to set a null title // and bails. \RequestContext::getMain()->setTitle(Title::newMainPage()); $user = User::newFromName('UTSysop'); $this->spamFilter = new AbuseFilter($user, $wgFlowAbuseFilterGroup); if (!$this->spamFilter->enabled()) { $this->markTestSkipped('AbuseFilter not enabled'); } $this->spamFilter->setup(array('threshold' => $wgFlowAbuseFilterEmergencyDisableThreshold, 'count' => $wgFlowAbuseFilterEmergencyDisableCount, 'age' => $wgFlowAbuseFilterEmergencyDisableAge)); foreach ($this->filters as $pattern => $action) { $this->createFilter($pattern, $action); } }
/** * @param IContextSource $context * @param AbstractRevision $newRevision * @param AbstractRevision|null $oldRevision * @param Title $title * @return Status */ public function validate(IContextSource $context, AbstractRevision $newRevision, AbstractRevision $oldRevision = null, Title $title) { $vars = \AbuseFilter::getEditVars($title); $vars->addHolders(\AbuseFilter::generateUserVars($this->user), \AbuseFilter::generateTitleVars($title, 'ARTICLE')); $vars->setVar('ACTION', $newRevision->getChangeType()); /* * This should not roundtrip to Parsoid; AbuseFilter checks will be * performed upon submitting new content, and content is always * submitted in wikitext. It will only be transformed once it's being * saved to DB. */ $vars->setLazyLoadVar('new_wikitext', 'FlowRevisionContent', array('revision' => $newRevision)); $vars->setLazyLoadVar('new_size', 'length', array('length-var' => 'new_wikitext')); /* * This may roundtrip to Parsoid if content is stored in HTML. * Since the variable is lazy-loaded, it will not roundtrip unless the * variable is actually used. */ $vars->setLazyLoadVar('old_wikitext', 'FlowRevisionContent', array('revision' => $oldRevision)); $vars->setLazyLoadVar('old_size', 'length', array('length-var' => 'old_wikitext')); return \AbuseFilter::filterAction($vars, $title, $this->group); }