getSpammerListFromCache(); $referrerUrl = $request->getParam('urlref'); foreach ($spammers as $spammerHost) { if (stripos($referrerUrl, $spammerHost) !== false) { Common::printDebug('Referrer URL is a known spam: ' . $spammerHost); return true; } } return false; } private function getSpammerListFromCache() { $cache = Cache::getEagerCache(); $cacheId = 'ReferrerSpamFilter-' . self::OPTION_STORAGE_NAME; if ($cache->contains($cacheId)) { $list = $cache->fetch($cacheId); } else { $list = $this->loadSpammerList(); $cache->save($cacheId, $list); } return $list; } private function loadSpammerList() { if ($this->spammerList !== null) { return $this->spammerList; } // Read first from the auto-updated list in database $list = Option::get(self::OPTION_STORAGE_NAME); if ($list) { $this->spammerList = unserialize($list); } else { // Fallback to reading the bundled list $file = PIWIK_VENDOR_PATH . '/piwik/referrer-spam-blacklist/spammers.txt'; $this->spammerList = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); } return $this->spammerList; } }