source: spip-zone/_core_/plugins/statistiques/inc/stats_referers_to_array.php @ 79783

Last change on this file since 79783 was 79783, checked in by denisb@…, 7 years ago

feliĉan novan jaron 2014 !

File size: 3.8 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2014                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13
14if (!defined('_ECRIRE_INC_VERSION')) return;
15
16include_spip('inc/statistiques');
17// moyenne glissante sur 30 jours
18define('MOYENNE_GLISSANTE_JOUR', 30);
19// moyenne glissante sur 12 mois
20define('MOYENNE_GLISSANTE_MOIS', 12);
21include_spip('inc/referenceurs');
22
23function inc_stats_referers_to_array_dist($limit, $jour, $id_article, $options = array()) {
24
25        $visites = 'visites';
26        $table = "spip_referers";
27        $where = array();
28        $serveur = '';
29
30        if (in_array($jour,array('jour','veille'))){
31                $visites .= "_$jour";
32                $where[] = "$visites>0";
33        }
34        //$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit);
35
36        if ($id_article) {
37                        $table = "spip_referers_articles";
38                        $where[] = "id_article=".intval($id_article);
39        }
40
41        $where = implode(" AND ",$where);
42        $limit = $limit?"0,".intval($limit):'';
43
44        $result = sql_select("referer_md5, referer, $visites AS vis", $table, $where, '', "maj DESC", $limit,'',$serveur);
45
46        $referers = array();
47        $trivisites = array(); // pour le tri
48        while ($row = sql_fetch($result,$serveur)) {
49                $referer = interdire_scripts($row['referer']);
50                $buff = stats_show_keywords($referer, $referer);
51
52                if ($buff["host"]) {
53                        $refhost = $buff["hostname"];
54                        $visites = $row['vis'];
55                        $host = $buff["scheme"]."://".$buff["host"];
56                       
57                        $referers[$refhost]['referer_md5'] = $row['referer_md5'];
58
59                        if (!isset($referers[$refhost]['liens'][$referer]))
60                                $referers[$refhost]['liens'][$referer] = 0;
61                        if (!isset($referers[$refhost]['hosts'][$host]))
62                                $referers[$refhost]['hosts'][$host] = 0;
63
64                        if (!isset($referers[$refhost]['visites']))
65                                $referers[$refhost]['visites'] = 0;
66                        if (!isset($referers[$refhost]['visites_racine']))
67                                $referers[$refhost]['visites_racine'] = 0;
68                        if (!isset($referers[$refhost]['referers']))
69                                $referers[$refhost]['referers'] = array();
70
71                        $referers[$refhost]['hosts'][$host]++;
72                        $referers[$refhost]['liens'][$referer]++ ;
73                        $referers[$refhost]['visites'] += $visites;
74                        $trivisites[$refhost] = $referers[$refhost]['visites'];
75
76                        $tmp = "";
77                        $set = array(
78                                'referer'=>$referer,
79                                'visites'=>$visites,
80                                'referes'=>$id_article?'':referes($row['referer_md5'])
81                        );
82                        if (isset($buff["keywords"])
83                          AND  $c = $buff["keywords"]) {
84                                if (!isset($referers[$refhost]['keywords'][$c])) {
85                                        $referers[$refhost]['keywords'][$c] = true;
86                                        $set['keywords'] = $c;
87                                }
88                        }
89                        else {
90                                $tmp = $buff["path"];
91                                if ($buff["query"])
92                                        $tmp .= "?".$buff['query'];
93                                if (strlen($tmp))
94                                        $set['path'] = "/$tmp";
95                        }
96                        if (isset($set['path']) OR isset($set['keywords']))
97                                $referers[$refhost]['referers'][] = $set;
98                        else
99                                $referers[$refhost]['visites_racine'] += $visites;
100                }
101        }
102
103        // trier les liens pour trouver le principal
104        foreach($referers as $k=>$r){
105                arsort($referers[$k]['liens']);
106                $referers[$k]['liens'] = array_keys($referers[$k]['liens']);
107                arsort($referers[$k]['hosts']);
108                $referers[$k]['hosts'] = array_keys($referers[$k]['hosts']);
109                $referers[$k]['url'] = reset($referers[$k]['hosts']);
110        }
111
112        if (count($trivisites)){
113                array_multisort($trivisites, SORT_DESC,$referers);
114        }
115       
116        return $referers;
117}
118
119
120?>
Note: See TracBrowser for help on using the repository browser.