Changeset 21784 in spip-zone


Ignore:
Timestamp:
Jul 29, 2008, 2:05:34 PM (13 years ago)
Author:
arno@…
Message:

+ Systeme de cache "propre" (pas d'utilisation de meta), generalisable a n'importe quelle url.
+ Affichage du pagerank des referers

Location:
_plugins_/_test_/afficher_pagerank
Files:
29 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_test_/afficher_pagerank/pb_pagerank.php

    r20728 r21784  
    11<?php
    2 
    3 /*
    4  * convert a string to a 32-bit integer
    5  */
    6 function PB_PR_StrToNum($Str, $Check, $Magic)
    7 {
    8     $Int32Unit = 4294967296;  // 2^32
    9 
    10     $length = strlen($Str);
    11     for ($i = 0; $i < $length; $i++) {
    12         $Check *= $Magic;       
    13         //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
    14         //  the result of converting to integer is undefined
    15         //  refer to http://www.php.net/manual/en/language.types.integer.php
    16         if ($Check >= $Int32Unit) {
    17             $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
    18             //if the check less than -2^31
    19             $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
    20         }
    21         $Check += ord($Str{$i});
    22     }
    23     return $Check;
    24 }
    25 
    26 /*
    27  * Genearate a hash for a url
    28  */
    29 function PB_PR_HashURL($String)
    30 {
    31     $Check1 = PB_PR_StrToNum($String, 0x1505, 0x21);
    32     $Check2 = PB_PR_StrToNum($String, 0, 0x1003F);
    33 
    34     $Check1 >>= 2;     
    35     $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
    36     $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
    37     $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
    38        
    39     $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
    40     $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
    41        
    42     return ($T1 | $T2);
    43 }
    44 
    45 /*
    46  * genearate a checksum for the hash string
    47  */
    48 function PB_PR_CheckHash($Hashnum)
    49 {
    50     $CheckByte = 0;
    51     $Flag = 0;
    52 
    53     $HashStr = sprintf('%u', $Hashnum) ;
    54     $length = strlen($HashStr);
    55        
    56     for ($i = $length - 1;  $i >= 0;  $i --) {
    57         $Re = $HashStr{$i};
    58         if (1 === ($Flag % 2)) {             
    59             $Re += $Re;     
    60             $Re = (int)($Re / 10) + ($Re % 10);
    61         }
    62         $CheckByte += $Re;
    63         $Flag ++;       
    64     }
    65 
    66     $CheckByte %= 10;
    67     if (0 !== $CheckByte) {
    68         $CheckByte = 10 - $CheckByte;
    69         if (1 === ($Flag % 2) ) {
    70             if (1 === ($CheckByte % 2)) {
    71                 $CheckByte += 9;
    72             }
    73             $CheckByte >>= 1;
    74         }
    75     }
    76 
    77     return '7'.$CheckByte.$HashStr;
    78 }
    79 
    80 function pb_getpagerank($url) {
    81 
    82         $query = spip_query("SELECT *  FROM `spip_meta` WHERE `nom` = 'pagerank' AND `maj` > DATE_SUB(NOW(), INTERVAL 1 HOUR)");
    83        
    84         if ($row = spip_fetch_array($query)) {
    85                 $pagerank = $row["valeur"];
    86                 return $pagerank;
    87         }
    88 
    89         $fp = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);
    90         if (!$fp) {
    91                 return '';
    92         } else {
    93                 $out = "GET /search?client=navclient-auto&ch=".PB_PR_CheckHash(PB_PR_HashURL($url))."&features=Rank&q=info:".$url."&num=100&filter=0 HTTP/1.1\r\n";
    94                 $out .= "Host: toolbarqueries.google.com\r\n";
    95                 $out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n";
    96                 $out .= "Connection: Close\r\n\r\n";
    97        
    98                 fwrite($fp, $out);
    99            
    100                 //$pagerank = substr(fgets($fp, 128), 4);
    101                 //echo $pagerank;
    102                 while (!feof($fp)) {
    103                         $data = fgets($fp, 128);
    104                         $pos = strpos($data, "Rank_");
    105                         if($pos === false){} else{
    106                                 $pagerank = substr($data, $pos + 9);
    107 
    108                                 include_spip("inc/metas");
    109                                 ecrire_meta('pagerank', $pagerank);
    110                                 ecrire_metas();
    111 
    112 
    113                                 return $pagerank;
    114                         }
    115                 }
    116                 fclose($fp);
    117         }
    118 }
    119 
    120 
    1212
    1223
     
    13415                        $url_site = lire_meta("adresse_site");
    13516                       
    136                         $pagerank = pb_getpagerank($url_site);
    137 //                      $pagerank = 10;
     17                        $pagerank = afficher_pagerank($url_site);
    13818                       
    139                         for ($i=1;  $i <= $pagerank; $i ++) {
    140                                 $pr .= "<div style='width: 6px; margin-right: 1px; height: 6px; background-color: green; float: left;'></div>";
    141                         }       
    14219                               
    14320                                $ret .= debut_cadre_enfonce("", true);
    14421                                $ret .= "<div style='padding-left: 60px;'>";
    14522                                $ret .= "<div class='verdana1'>PageRank : <b style='color: red;'>$pagerank</b></div>";
    146                                 $ret .= "<div style='margin-top: 3px; border: 1px solid #666666; background-color: white; height: 6px; width: 70px; overflow: hidden; padding: 1px; padding-right: 0px; '>$pr</div>";
     23                                $ret .= "<div><img src='"._DIR_PLUGIN_PAGERANK."/images/pagerank$pagerank.gif' alt='pagerank $pagerank' /></div>";
    14724                                $ret .= "</div>";
    14825                                $ret .= fin_cadre_enfonce(true);
    14926                       
    150                 }
    151 
    152 
     27                }
    15328                $data .= $ret;
    15429       
     
    15732        }
    15833
     34        function pb_pagerank_header($flux) {
     35                if ($_GET["exec"] == "statistiques_referers" || $_GET["exec"] == "statistiques_visites") {
     36                        $flux .= "<script src='../?page=pagerank_prive' type='text/javascript'></script>";
     37                }
     38
     39                return $flux;
     40
     41
     42        }
     43
    15944
    16045?>
  • _plugins_/_test_/afficher_pagerank/plugin.xml

    r21734 r21784  
    22        <nom>Afficher PageRank</nom>
    33        <auteur>ARNO*</auteur>
    4         <version>0.1</version>
     4        <version>0.2</version>
    55        <etat>test</etat>
    66        <description>Ce plugin affiche le PageRank Google de votre site sur la page ÇA suivreÈ.</description>
    77        <lien></lien> <!-- URI de documentation -->
    88        <prefix>pb_pagerank</prefix>
    9         <install>base/pb_pagerank_install.php</install>
     9        <options>pb_pagerank_options.php</options>
    1010        <pipeline>
    1111                <nom>affiche_gauche</nom>
     
    1313                <inclure>pb_pagerank.php</inclure>
    1414        </pipeline>
     15        <pipeline>
     16                <nom>header_prive</nom>
     17                <action>header</action>
     18                <inclure>pb_pagerank.php</inclure>
     19        </pipeline>
    1520
    1621</plugin>
Note: See TracChangeset for help on using the changeset viewer.