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 | |
---|
14 | if (!defined('_ECRIRE_INC_VERSION')) return; |
---|
15 | |
---|
16 | include_spip('inc/statistiques'); |
---|
17 | // moyenne glissante sur 30 jours |
---|
18 | define('MOYENNE_GLISSANTE_JOUR', 30); |
---|
19 | // moyenne glissante sur 12 mois |
---|
20 | define('MOYENNE_GLISSANTE_MOIS', 12); |
---|
21 | include_spip('inc/referenceurs'); |
---|
22 | |
---|
23 | function 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 | ?> |
---|