/**
  * Handler for the UploadVerifyFile hook
  *
  * @param $upload UploadBase
  * @param $mime
  * @param $error array
  *
  * @return bool
  */
 public static function onUploadVerifyFile($upload, $mime, &$error)
 {
     global $wgUser, $wgVersion;
     $vars = new AbuseFilterVariableHolder();
     $title = $upload->getTitle();
     if (!$title) {
         // If there's no valid title assigned to the upload
         // it wont proceed anyway, so no point in filtering it.
         return true;
     }
     $vars->addHolders(AbuseFilter::generateUserVars($wgUser), AbuseFilter::generateTitleVars($title, 'FILE'));
     $vars->setVar('ACTION', 'upload');
     // We us the hexadecimal version of the file sha1
     if (version_compare($wgVersion, '1.21', '>=')) {
         // Use UploadBase::getTempFileSha1Base36 so that we don't have to calculate the sha1 sum again
         $sha1 = wfBaseConvert($upload->getTempFileSha1Base36(), 36, 16, 40);
     } else {
         // UploadBase::getTempFileSha1Base36 wasn't public until 1.21
         $sha1 = sha1_file($upload->getTempPath());
     }
     $vars->setVar('file_sha1', $sha1);
     $filter_result = AbuseFilter::filterAction($vars, $title);
     if (!$filter_result->isOK()) {
         $error = $filter_result->getErrorsArray();
         $error = $error[0];
     }
     return $filter_result->isOK();
 }
 /**
  * @param $row
  * @return AbuseFilterVariableHolder
  */
 public static function getEditVarsFromRCRow($row)
 {
     $vars = new AbuseFilterVariableHolder();
     $title = Title::makeTitle($row->rc_namespace, $row->rc_title);
     if ($row->rc_user) {
         $user = User::newFromName($row->rc_user_text);
     } else {
         $user = new User();
         $user->setName($row->rc_user_text);
     }
     $vars->addHolders(self::generateUserVars($user), self::generateTitleVars($title, 'ARTICLE'));
     $vars->setVar('ACTION', 'edit');
     $vars->setVar('SUMMARY', $row->rc_comment);
     $vars->setVar('minor_edit', $row->rc_minor);
     $vars->setLazyLoadVar('new_wikitext', 'revision-text-by-id', array('revid' => $row->rc_this_oldid));
     if ($row->rc_last_oldid) {
         $vars->setLazyLoadVar('old_wikitext', 'revision-text-by-id', array('revid' => $row->rc_last_oldid));
     } else {
         $vars->setVar('old_wikitext', '');
     }
     $vars->addHolders(self::getEditVars($title));
     return $vars;
 }
 /**
  * @param $vars
  */
 public function setVars($vars)
 {
     if (is_array($vars)) {
         foreach ($vars as $name => $var) {
             $this->setVar($name, $var);
         }
     } elseif ($vars instanceof AbuseFilterVariableHolder) {
         $this->mVars->addHolders($vars);
     }
 }