3 class NP_GoogleRank extends NucleusPlugin{
17 return 'http://nakahara21.com/';
25 function getDescription()
27 return 'Embed GoogleRank';
30 function supportsFeature ($what)
33 case 'SqlTablePrefix':
42 define('GOOGLE_MAGIC', 0xE6359A60);
45 function doSkinVar($skinType, $opt)
47 if (serverVar('REQUEST_URI')=='') {
48 $uri = (serverVar("QUERY_STRING"))?
49 sprintf("%s%s%s?%s", "http://", serverVar("HTTP_HOST"), serverVar("SCRIPT_NAME"), serverVar("QUERY_STRING") ):
50 sprintf("%s%s%s","http://",serverVar("HTTP_HOST"),serverVar("SCRIPT_NAME"));
52 $uri = sprintf("%s%s%s","http://",serverVar("HTTP_HOST"),serverVar("REQUEST_URI"));
54 $uri = preg_replace('|[^a-z0-9-~+_.?#=&;,/:@%]|i', '', $uri);
55 $uri = 'info:' . $uri;
56 $temp = $this->strord($uri);
57 $ch = $this->GoogleCH($temp);
58 $chv = '6' . sprintf("%u", $ch);
60 $rankxmlurl = 'http://' . 'www.google.co.jp/search?client=navclient-auto&ch=' . $chv . '&q=' . $uri;
61 $rankdataurl = $rankxmlurl . '&features=Rank';
62 echo '<a href="' . $rankxmlurl . '">check</a>';
64 $result = @file($rankdataurl);
69 $data = @join("", $result);
70 $e = preg_replace('/\s/', "", substr(strrchr( $data, ":" ), 1));
76 echo '<img src="' . $this->getAdminURL() . 'imgs/' . $e . '.gif" alt="Google PageRank" title="Google PageRank (' . $e . '/10)" />';
80 //unsigned shift right
81 function zeroFill($a, $b)
83 $z = hexdec(80000000);
89 $a = ($a >> ($b - 1));
97 function mix($a,$b,$c)
99 $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,13));
100 $b -= $c; $b -= $a; $b ^= ($a<<8);
101 $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
102 $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
103 $b -= $c; $b -= $a; $b ^= ($a<<16);
104 $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
105 $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
106 $b -= $c; $b -= $a; $b ^= ($a<<10);
107 $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15));
109 return array($a,$b,$c);
112 function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC)
114 if(is_null($length)) {
115 $length = sizeof($url);
117 $a = $b = 0x9E3779B9;
122 $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k + 3] << 24));
123 $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k + 7] <<24));
124 $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] <<24));
125 $mix = $this->mix($a, $b, $c);
126 $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
132 /* all the case statements fall through */
134 case 11: $c+=($url[$k+10]<<24);
135 case 10: $c+=($url[$k+9]<<16);
136 case 9 : $c+=($url[$k+8]<<8);
137 /* the first byte of c is reserved for the length */
138 case 8 : $b+=($url[$k+7]<<24);
139 case 7 : $b+=($url[$k+6]<<16);
140 case 6 : $b+=($url[$k+5]<<8);
141 case 5 : $b+=($url[$k+4]);
142 case 4 : $a+=($url[$k+3]<<24);
143 case 3 : $a+=($url[$k+2]<<16);
144 case 2 : $a+=($url[$k+1]<<8);
145 case 1 : $a+=($url[$k+0]);
146 /* case 0: nothing left to add */
148 $mix = $this->mix($a,$b,$c);
149 /*-------------------------------------------- report the result */
153 //converts a string into an array of integers containing the numeric value of the char
154 function strord($string)
156 for ($i = 0; $i < strlen($string); $i++) {
157 $result[$i] = ord($string{$i});