public static function isAllowedText($text, &$block) { wfProfileIn(__METHOD__); $text = trim($text); $blocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_WIKI_CREATION); if (!empty($blocksData) && !empty($text)) { $blockData = null; $result = PhalanxFallback::findBlocked($text, $blocksData, true, $blockData); if ($result['blocked']) { $block = (object) $blockData; wfProfileOut(__METHOD__); return false; } } wfProfileOut(__METHOD__); return true; }
/** * @static * @param User $user * @return array|bool|null */ public static function blockCheck(User $user) { global $wgUser, $wgMemc; wfProfileIn(__METHOD__); // dependancy -- if this doesn't exist, quit early if (!class_exists('AccountCreationTracker')) { wfProfileOut(__METHOD__); return true; } // we don't block anons with this filter if ($user->isAnon()) { wfProfileOut(__METHOD__); return true; } $ret = true; // RT#42011: RegexBlock records strange results // don't write stats for other user than visiting user $isCurrentUser = $user->getName() == $wgUser->getName(); // check cache first before proceeding $cachedState = self::getBlockFromCache($user, $isCurrentUser); if (!is_null($cachedState)) { wfProfileOut(__METHOD__); return $cachedState; } $tracker = new AccountCreationTracker(); $hashes = $tracker->getHashesByUser($user); $blocksData = PhalanxFallback::getFromFilter(self::TYPE); if (!empty($blocksData) && !empty($hashes)) { foreach ($hashes as $hash) { $ret = self::blockCheckInternal($user, $blocksData, $hash, $isCurrentUser); if (!$ret) { // only check until we get first blocking match break; } } } // populate cache if not done before if ($ret) { $cacheKey = self::getCacheKey($user); $cachedState = array('timestamp' => wfTimestampNow(), 'block' => false, 'return' => $ret); $wgMemc->set($cacheKey, $cachedState); } wfProfileOut(__METHOD__); return $ret; }
public static function badWordsTest($title, &$block) { global $wgLanguageCode; wfProfileIn(__METHOD__); $text = preg_replace('/[^\\PP]+/', '', $title->getText()); $text = preg_replace('/\\s+/', ' ', $text); $blocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_ANSWERS_QUESTION_TITLE, $wgLanguageCode); $blockData = null; $result = PhalanxFallback::findBlocked($text, $blocksData, true, $blockData); if ($result['blocked']) { $block = (object) $result; Wikia::log(__METHOD__, __LINE__, "Block '{$result['msg']}' blocked '{$text}'."); wfProfileOut(__METHOD__); return false; } wfProfileOut(__METHOD__); return true; }
public static function filterWordsTest($question) { wfProfileIn(__METHOD__); $text = preg_replace('/\\pP+/', '', $question); $text = preg_replace('/\\s+/', ' ', $text); $blocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_ANSWERS_RECENT_QUESTIONS); if (!empty($blocksData) && !empty($text)) { $blockData = null; $result = PhalanxFallback::findBlocked($text, $blocksData, true, $blockData); if ($result['blocked']) { Wikia::log(__METHOD__, __LINE__, "Block '{$result['msg']}' blocked '{$text}'."); wfProfileOut(__METHOD__); return false; } } wfProfileOut(__METHOD__); return true; }
public static function checkTitle($title, &$block) { wfProfileIn(__METHOD__); if (is_null(self::$blocksData)) { self::$blocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_TITLE); } $fullText = $title->getFullText(); $result = array('blocked' => false); if (!empty(self::$blocksData)) { $blockData = null; $result = PhalanxFallback::findBlocked($fullText, self::$blocksData, true, $blockData); if ($result['blocked']) { $block = (object) $blockData; #self::spamPage( $result['msg'], $title ); Wikia::log(__METHOD__, __LINE__, "Block '{$result['msg']}' blocked '{$fullText}'."); } } wfProfileOut(__METHOD__); return !$result['blocked']; }
*/ // MediaWiki ini_set("include_path", dirname(__FILE__) . "/../../../../../maintenance/"); require_once "commandLine.inc"; // Phalanx caches its blocks by the type and by the language. Let's // get supported types and languages. $aTypes = array_keys(PhalanxFallback::$typeNames); $aLanguages = array_keys($wgPhalanxSupportedLanguages); function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return (double) $usec + (double) $sec; } // Walk through all types... foreach ($aTypes as $iType) { // ... and languages. foreach ($aLanguages as $sLanguage) { $time_start = getmicrotime(); // Fill the cache with the current data from DB_MASTER. PhalanxFallback::getFromFilter($iType, $sLanguage, true, true); if ($iType == Phalanx::TYPE_USER) { PhalanxFallback::getFromFilterShort($iType, $sLanguage, true, true); } $time_end = getmicrotime(); $time = $time_end - $time_start; echo "iType = " . PhalanxFallback::$typeNames[$iType] . " ( {$iType} ) , {$sLanguage}, " . sprintf("%0.2f", $time) . " sec \n"; } // Touch. PhalanxFallback::setLastUpdate(); } exit(0);
public static function genericContentCheck($content) { wfProfileIn(__METHOD__); $blocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_CONTENT); if (!empty($blocksData) && $content != '') { $content = self::applyWhitelist($content); $blockData = null; $result = PhalanxFallback::findBlocked($content, $blocksData, true, $blockData); if ($result['blocked']) { Wikia::log(__METHOD__, __LINE__, "Block '{$result['msg']}' blocked '{$content}'."); wfProfileOut(__METHOD__); return false; } } wfProfileOut(__METHOD__); return true; }
/** * Hook handler * Checks if user just being created is not blocked * * @author wladek * @param $user User * @param $name string * @param $validate string */ public static function onAbortNewAccount($user, &$abortError, &$block) { $text = $user->getName(); $blocksData = PhalanxFallback::getFromFilterShort(self::TYPE); $state = self::blockCheckInternal($user, $blocksData, $text, $block, true); if (!$state) { $abortError = wfMsg('phalanx-user-block-new-account'); return false; } // Check if email is blocked $emailBlocksData = PhalanxFallback::getFromFilter(PhalanxFallback::TYPE_EMAIL); $userEmail = $user->getEmail(); if ($userEmail !== '') { $blockData = null; $result = PhalanxFallback::findBlocked($userEmail, $emailBlocksData, true, $blockData); if ($result['blocked']) { $block = (object) $blockData; $abortError = wfMsg('phalanx-user-block-new-account'); return false; } } return true; }