Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 /**
  * @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;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 5
0
 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'];
 }
Exemplo n.º 6
0
 */
// 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);
Exemplo n.º 7
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;
 }
Exemplo n.º 8
0
 /**
  * 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;
 }