diff options
Diffstat (limited to 'plugins/SEO/Metric/Google.php')
-rw-r--r-- | plugins/SEO/Metric/Google.php | 111 |
1 files changed, 2 insertions, 109 deletions
diff --git a/plugins/SEO/Metric/Google.php b/plugins/SEO/Metric/Google.php index 7abd82b371..4247ec138f 100644 --- a/plugins/SEO/Metric/Google.php +++ b/plugins/SEO/Metric/Google.php @@ -36,13 +36,11 @@ class Google implements MetricsProvider public function getMetrics($domain) { $pageCount = $this->fetchIndexedPagesCount($domain); - $pageRank = $this->fetchPageRank($domain); $logo = SearchEngine::getInstance()->getLogoFromUrl('http://google.com'); return array( new Metric('google-index', 'SEO_Google_IndexedPages', $pageCount, $logo, null, null, 'General_Pages'), - new Metric('pagerank', 'Google PageRank', $pageRank, $logo, null, null, '/10'), ); } @@ -53,8 +51,8 @@ class Google implements MetricsProvider try { $response = str_replace(' ', ' ', Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT'])); - if (preg_match('#([0-9\,]+) results#i', $response, $p)) { - return NumberFormatter::getInstance()->formatNumber((int)str_replace(',', '', $p[1])); + if (preg_match('#([0-9,\.]+) results#i', $response, $p)) { + return NumberFormatter::getInstance()->formatNumber((int)str_replace(array(',', '.'), '', $p[1])); } else { return 0; } @@ -64,109 +62,4 @@ class Google implements MetricsProvider } } - public function fetchPageRank($domain) - { - $chwrite = $this->checkHash($this->hashURL($domain)); - - $url = "http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=" . $chwrite . "&features=Rank&q=info:" . $domain . "&num=100&filter=0"; - - try { - $response = Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']); - - preg_match('#Rank_[0-9]:[0-9]:([0-9]+){1,}#si', $response, $p); - - return isset($p[1]) ? $p[1] : null; - } catch (\Exception $e) { - $this->logger->warning('Error while getting Google PageRank for SEO stats: {message}', array('message' => $e->getMessage())); - return null; - } - } - - /** - * Generate a hash for a url - * - * @param string $string - * @return int - */ - private function hashURL($string) - { - $Check1 = $this->strToNum($string, 0x1505, 0x21); - $Check2 = $this->strToNum($string, 0, 0x1003F); - - $Check1 >>= 2; - $Check1 = (($Check1 >> 4) & 0x3FFFFC0) | ($Check1 & 0x3F); - $Check1 = (($Check1 >> 4) & 0x3FFC00) | ($Check1 & 0x3FF); - $Check1 = (($Check1 >> 4) & 0x3C000) | ($Check1 & 0x3FFF); - - $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) << 2) | ($Check2 & 0xF0F); - $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000); - - return ($T1 | $T2); - } - - /** - * Generate a checksum for the hash string - * - * @param int $hashnum - * @return string - */ - private function checkHash($hashnum) - { - $CheckByte = 0; - $Flag = 0; - - $HashStr = sprintf('%u', $hashnum); - $length = strlen($HashStr); - - for ($i = $length - 1; $i >= 0; $i--) { - $Re = $HashStr{$i}; - if (1 === ($Flag % 2)) { - $Re += $Re; - $Re = (int)($Re / 10) + ($Re % 10); - } - $CheckByte += $Re; - $Flag++; - } - - $CheckByte %= 10; - if (0 !== $CheckByte) { - $CheckByte = 10 - $CheckByte; - if (1 === ($Flag % 2)) { - if (1 === ($CheckByte % 2)) { - $CheckByte += 9; - } - $CheckByte >>= 1; - } - } - - return '7' . $CheckByte . $HashStr; - } - - /** - * Convert numeric string to int - * - * @param string $Str - * @param int $Check - * @param int $Magic - * @return int - */ - private function strToNum($Str, $Check, $Magic) - { - $Int32Unit = 4294967296; // 2^32 - - $length = strlen($Str); - for ($i = 0; $i < $length; $i++) { - $Check *= $Magic; - // If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), - // the result of converting to integer is undefined - // refer to http://www.php.net/manual/en/language.types.integer.php - if ($Check >= $Int32Unit) { - $Check = ($Check - $Int32Unit * (int)($Check / $Int32Unit)); - //if the check less than -2^31 - $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; - } - $Check += ord($Str{$i}); - } - return $Check; - } } |