Changeset 45505 in spip-zone


Ignore:
Timestamp:
Mar 17, 2011, 4:38:46 PM (9 years ago)
Author:
cedric@…
Message:

retour des referers, en squelette
il s'avere que l'affichage des referers est completement delirant dans la version stable, en masquant une partie aleatoire.
on retrouve ici ses referers, qui ont toujours ete en base :)

Location:
_core_/plugins/statistiques
Files:
1 added
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _core_/plugins/statistiques/inc/referenceurs.php

    r45501 r45505  
    156156                $host = strtolower($url['host']);
    157157                $path = $url['path'];
    158         } else $query = $host = $path = '';
     158                $scheme = $url['scheme'];
     159        }
     160        else
     161                $scheme = $query = $host = $path = '';
    159162
    160163        // Cette fonction affecte directement les variables selon la query-string !
     
    209212
    210213        $buffer["host"] = $host;
     214        $buffer["scheme"] = $scheme;
    211215        if (!isset($buffer["hostname"]) OR !$buffer["hostname"])
    212216                $buffer["hostname"] = $host;
  • _core_/plugins/statistiques/inc/stats_referers_to_array.php

    r45499 r45505  
    1919// moyenne glissante sur 12 mois
    2020define('MOYENNE_GLISSANTE_MOIS', 12);
     21include_spip('inc/referenceurs');
    2122
    22 function inc_stats_visites_to_array_dist($unite, $duree, $id_article, $options = array()) {
     23function inc_stats_referers_to_array_dist($limit, $id_article, $options = array()) {
    2324        $now = time();
    2425
    25         if (!in_array($unite,array('jour','mois')))
    26                 $unite = 'jour';
     26        $table = "spip_referers";
     27        $where = array();
    2728        $serveur = '';
    2829
    29         $table = "spip_visites";
    30         $order = "date";
    31         $where = array();
    32         if ($duree)
    33                 $where[] = sql_date_proche($order,-$duree,'day',$serveur);
    34 
    3530        if ($id_article) {
    36                         $table = "spip_visites_articles";
     31                        $table = "spip_referers_articles";
    3732                        $where[] = "id_article=".intval($id_article);
    3833        }
    3934
    4035        $where = implode(" AND ",$where);
    41         $format = ($unite=='jour'?'%Y-%m-%d':'%Y-%m-01');
     36        $limit = $limit?"0,".intval($limit):'';
    4237
    43         $res = sql_select("SUM(visites) AS v, DATE_FORMAT($order,'$format') AS d", $table, $where, "d", "d", "",'',$serveur);
     38        $nbvisites = $lescriteres = array();
     39        $result = sql_select("referer_md5, referer, visites AS vis", $table, $where, '', "maj DESC", $limit,'',$serveur);
    4440
    45         $format = str_replace('%','',$format);
    46         $periode = ($unite=='jour'?24*3600:365*24*3600/12);
    47         $step = intval(round($periode*1.1,0));
    48         $glisse = constant('MOYENNE_GLISSANTE_'.strtoupper($unite));
    49         moyenne_glissante();
    50         $data = array();
    51         $r = sql_fetch($res,$serveur);
    52         if (!$r){
    53                 $r = array('d'=>date($format,$now),'v'=>0);
    54         }
    55         do {
    56                 $data[$r['d']] = array('visites'=>$r['v'],'moyenne'=>moyenne_glissante($r['v'], $glisse));
    57                 $last = $r['d'];
     41        $referers = array();
     42        $trivisites = array(); // pour le tri
     43        while ($row = sql_fetch($result,$serveur)) {
     44                $referer = interdire_scripts($row['referer']);
     45                $buff = stats_show_keywords($referer, $referer);
    5846
    59                 // donnee suivante
    60                 $r = sql_fetch($res,$serveur);
    61                 // si la derniere n'est pas la date courante, l'ajouter
    62                 if (!$r AND $last!=date($format,$now))
    63                         $r = array('d'=>date($format,$now),'v'=>0);
     47                if ($buff["host"]) {
     48                        $refhost = $buff["hostname"];
     49                        $visites = $row['vis'];
     50                        $host = $buff["scheme"]."://".$buff["host"];
     51                       
     52                        $referers[$refhost]['referer_md5'] = $row['referer_md5'];
    6453
    65                 // completer les trous manquants si besoin
    66                 if ($r){
    67                         $next = strtotime($last);
    68                         $current = strtotime($r['d']);
    69                         while (($next+=$step)<$current AND $d=date($format,$next)){
    70                                 if (!isset($data[$d]))
    71                                         $data[$d] = array('visites'=>0,'moyenne'=>moyenne_glissante(0, $glisse));
    72                                 $last = $d;
    73                                 $next = strtotime($last);
     54                        if (!isset($referers[$refhost]['liens'][$referer]))
     55                                $referers[$refhost]['liens'][$referer] = 0;
     56                        if (!isset($referers[$refhost]['hosts'][$host]))
     57                                $referers[$refhost]['hosts'][$host] = 0;
     58
     59                        if (!isset($referers[$refhost]['visites']))
     60                                $referers[$refhost]['visites'] = 0;
     61                        if (!isset($referers[$refhost]['visites_racine']))
     62                                $referers[$refhost]['visites_racine'] = 0;
     63                        if (!isset($referers[$refhost]['referers']))
     64                                $referers[$refhost]['referers'] = array();
     65
     66                        $referers[$refhost]['hosts'][$host]++;
     67                        $referers[$refhost]['liens'][$referer]++ ;
     68                        $referers[$refhost]['visites'] += $visites;
     69                        $trivisites[$refhost] = $referers[$refhost]['visites'];
     70
     71                        $tmp = "";
     72                        $set = array(
     73                                'referer'=>$referer,
     74                                'visites'=>$visites,
     75                                'referes'=>$id_article?'':referes($row['referer_md5'])
     76                        );
     77                        if (isset($buff["keywords"])
     78                          AND  $c = $buff["keywords"]) {
     79                                if (!isset($referers[$refhost]['keywords'][$c])) {
     80                                        $referers[$refhost]['keywords'][$c] = true;
     81                                        $set['keywords'] = $c;
     82                                }
    7483                        }
     84                        else {
     85                                $tmp = $buff["path"];
     86                                if ($buff["query"])
     87                                        $tmp .= "?".$buff['query'];
     88                                if (strlen($tmp))
     89                                        $set['path'] = "/$tmp";
     90                        }
     91                        if (isset($set['path']) OR isset($set['keywords']))
     92                                $referers[$refhost]['referers'][] = $set;
     93                        else
     94                                $referers[$refhost]['visites_racine'] += $visites;
    7595                }
    7696        }
    77         while ($r);
    7897
    79         // projection pour la derniere barre :
    80         // mesure courante
    81         // + moyenne au pro rata du temps qui reste
    82         $moyenne = end($data);
    83         $moyenne = prev($data);
    84         $moyenne = ($moyenne AND isset($moyenne['moyenne']))?$moyenne['moyenne']:0;
    85         $data[$last]['moyenne'] = $moyenne;
     98        // trier les liens pour trouver le principal
     99        foreach($referers as $k=>$r){
     100                arsort($referers[$k]['liens']);
     101                $referers[$k]['liens'] = array_keys($referers[$k]['liens']);
     102                arsort($referers[$k]['hosts']);
     103                $referers[$k]['hosts'] = array_keys($referers[$k]['hosts']);
     104                $referers[$k]['url'] = reset($referers[$k]['hosts']);
     105        }
    86106
    87         // temps restant
    88         $remaining = strtotime(date($format,strtotime(date($format,$now))+$step))-$now;
    89 
    90         $prorata = $remaining/$periode;
    91 
    92         // projection
    93         $data[$last]['prevision'] = $data[$last]['visites'] + intval(round($moyenne*$prorata));
    94 
    95   return $data;
     107        if (count($trivisites)){
     108                array_multisort($trivisites, SORT_DESC,$referers);
     109        }
     110       
     111        return $referers;
    96112}
    97113
  • _core_/plugins/statistiques/prive/squelettes/contenu/stats_referers.html

    r45496 r45505  
    1 <?php
    2         $referenceurs = charger_fonction('referenceurs', 'inc');
    3         $res = $referenceurs('#ENV{id_article,''}', "visites", '[(#ENV{id_article,''}|?{spip_referers,spip_referers_articles})]', array(), '', '#ENV{limit,100}');
     1<B_statsr>
     2        <h1><:onglet_origine_visites:> (#TOTAL_BOUCLE [(#TOTAL_BOUCLE|singulier_ou_pluriel{info_site,info_sites})])</h1>
     3        <ul class="liste-items referers">
     4                <BOUCLE_statsr(DATA){source stats_referers,#ENV{limit,100},#ENV{id_article}}>
     5                        <li class="item referer" onclick="$(this).find('.referer-detail').toggle('fast');">
     6                                        <h3>
     7                                                <span class="visites">[[(#VALEUR{visites}) ](#VALEUR{visites}|singulier_ou_pluriel{info_visite,info_visites}|trim{:}|trim)]</span>
     8                                                [(#CLE|=={(email)}|oui)
     9                                                        #CLE
     10                                                ][(#CLE|=={(email)}|non)
     11                                                        <a href="[(#VALEUR{url})]">[(#CLE)][<span class="miniature"><img src='(#CLE|vigneter_referer)' width="120" height="90" /></span>]</a>[(#VALEUR{visites_racine}|oui)\(#VALEUR{visites_racine}\)]</h3>
     12                                                ]
    413
    5         if ($res) {
    6 
    7                 // Le lien pour en afficher "plus"
    8                 $args = ($id_article?"id_article=$id_article&" : '') . "limit=" . strval($limit+200);
    9                 $n =  count($res);
    10                 $plus = generer_url_ecrire('statistiques_visites', $args);
    11                 if ($plus) {
    12                         $plus = "<div style='text-align:right;'><b><a href='$plus'>+++</a></b></div>";
    13                 }
    14                 $titre = _T("onglet_origine_visites")
    15                 . " ($n "
    16                 . ($n == 1 ?  _T('info_site') :  _T('info_sites'))
    17                   . ")";
    18                 echo gros_titre($titre,'', false);
    19                 echo "<div style='overflow:hidden;' class='verdana1 spip_small'><br />";
    20                 echo "<ul class='referers'><li>";
    21                 echo join("</li><li>\n",$res);
    22                 echo "</li></ul>";
    23                 echo $plus;
    24                 echo "<br /></div>";
    25         }
    26 ?>
     14                                        </h3>
     15                                        <B_sous>
     16                                                <div class="referer-detail none-js">
     17                                                        <ul>
     18                                                        <BOUCLE_sous(POUR){tableau #VALEUR{referers}}>
     19                                                                <li><a href="#VALEUR{referer}">[(#VALEUR{keywords}|?{[&laquo;&nbsp;(#VALEUR{keywords})&nbsp;&raquo;],[(#VALEUR{path})]})]</a>
     20                                                                        [(#VALEUR{visites}|>{1}|oui)\(#VALEUR{visites}\)]
     21                                                                        [(#VALEUR{referes})]
     22                                                                </li>
     23                                                        </BOUCLE_sous>
     24                                                        </ul>
     25                                                </div>
     26                                        </B_sous>
     27                        </li>
     28                </BOUCLE_statsr>
     29        </ul>
     30</B_statsr>
     31        <h1><:onglet_origine_visites:></h1>
     32<//B_statsr>
     33<p class="action plus"><a href="[(#SELF|parametre_url{limit,#ENV{limit,100}|plus{200}})]" class="ajax">+++</a></p>
  • _core_/plugins/statistiques/prive/squelettes/top/stats_referers.html

    r45495 r45505  
     1<?php $GLOBALS['pleine_largeur']=true; ?>
    12[(#VAL{statistiques}|barre_onglets{stats_referers})]
  • _core_/plugins/statistiques/prive/style_prive_plugin_stats.html

    r40616 r45505  
    8787        background-color: #fee;
    8888}
     89
     90.stats_referers .liste-items.referers li.referer {padding-left:300px;}
     91.stats_referers .liste-items.referers li.referer span.visites {float:left;text-align:right;width:140px;margin-left:-150px;}
     92.stats_referers .liste-items.referers li.referer .miniature {margin-left:-295px;float:left;max-width:140px;}
     93.stats_referers .liste-items.referers li.referer ul {margin-left:15px;padding-left:0;}
     94.stats_referers .liste-items.referers li.referer ul li {margin-left:0px;padding-left:0;}
     95.stats_referers .action.plus {text-align:right;font-size:1.5em;font-weight:bold;}
    8996[(#REM) </style>]
    9097
Note: See TracChangeset for help on using the changeset viewer.