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')) { |
---|
15 | return; |
---|
16 | } |
---|
17 | |
---|
18 | include_spip('inc/statistiques'); |
---|
19 | // moyenne glissante sur 30 jours |
---|
20 | define('MOYENNE_GLISSANTE_JOUR', 30); |
---|
21 | // moyenne glissante sur 12 mois |
---|
22 | define('MOYENNE_GLISSANTE_MOIS', 12); |
---|
23 | include_spip('inc/referenceurs'); |
---|
24 | |
---|
25 | function inc_stats_referers_to_array_dist($limit, $jour, $id_article, $options = array()) { |
---|
26 | |
---|
27 | $visites = 'visites'; |
---|
28 | $table = "spip_referers"; |
---|
29 | $where = array(); |
---|
30 | $serveur = ''; |
---|
31 | |
---|
32 | if (in_array($jour, array('jour', 'veille'))) { |
---|
33 | $visites .= "_$jour"; |
---|
34 | $where[] = "$visites>0"; |
---|
35 | } |
---|
36 | //$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit); |
---|
37 | |
---|
38 | if ($id_article) { |
---|
39 | $table = "spip_referers_articles"; |
---|
40 | $where[] = "id_article=" . intval($id_article); |
---|
41 | } |
---|
42 | |
---|
43 | $where = implode(" AND ", $where); |
---|
44 | $limit = $limit ? "0," . intval($limit) : ''; |
---|
45 | |
---|
46 | $result = sql_select("referer_md5, referer, $visites AS vis", $table, $where, '', "maj DESC", $limit, '', $serveur); |
---|
47 | |
---|
48 | $referers = array(); |
---|
49 | $trivisites = array(); // pour le tri |
---|
50 | while ($row = sql_fetch($result, $serveur)) { |
---|
51 | $referer = interdire_scripts($row['referer']); |
---|
52 | $buff = stats_show_keywords($referer, $referer); |
---|
53 | |
---|
54 | if ($buff["host"]) { |
---|
55 | $refhost = $buff["hostname"]; |
---|
56 | $visites = $row['vis']; |
---|
57 | $host = $buff["scheme"] . "://" . $buff["host"]; |
---|
58 | |
---|
59 | $referers[$refhost]['referer_md5'] = $row['referer_md5']; |
---|
60 | |
---|
61 | if (!isset($referers[$refhost]['liens'][$referer])) { |
---|
62 | $referers[$refhost]['liens'][$referer] = 0; |
---|
63 | } |
---|
64 | if (!isset($referers[$refhost]['hosts'][$host])) { |
---|
65 | $referers[$refhost]['hosts'][$host] = 0; |
---|
66 | } |
---|
67 | |
---|
68 | if (!isset($referers[$refhost]['visites'])) { |
---|
69 | $referers[$refhost]['visites'] = 0; |
---|
70 | } |
---|
71 | if (!isset($referers[$refhost]['visites_racine'])) { |
---|
72 | $referers[$refhost]['visites_racine'] = 0; |
---|
73 | } |
---|
74 | if (!isset($referers[$refhost]['referers'])) { |
---|
75 | $referers[$refhost]['referers'] = array(); |
---|
76 | } |
---|
77 | |
---|
78 | $referers[$refhost]['hosts'][$host]++; |
---|
79 | $referers[$refhost]['liens'][$referer]++; |
---|
80 | $referers[$refhost]['visites'] += $visites; |
---|
81 | $trivisites[$refhost] = $referers[$refhost]['visites']; |
---|
82 | |
---|
83 | $tmp = ""; |
---|
84 | $set = array( |
---|
85 | 'referer' => $referer, |
---|
86 | 'visites' => $visites, |
---|
87 | 'referes' => $id_article ? '' : referes($row['referer_md5']) |
---|
88 | ); |
---|
89 | if (isset($buff["keywords"]) |
---|
90 | AND $c = $buff["keywords"] |
---|
91 | ) { |
---|
92 | if (!isset($referers[$refhost]['keywords'][$c])) { |
---|
93 | $referers[$refhost]['keywords'][$c] = true; |
---|
94 | $set['keywords'] = $c; |
---|
95 | } |
---|
96 | } else { |
---|
97 | $tmp = $buff["path"]; |
---|
98 | if ($buff["query"]) { |
---|
99 | $tmp .= "?" . $buff['query']; |
---|
100 | } |
---|
101 | if (strlen($tmp)) { |
---|
102 | $set['path'] = "/$tmp"; |
---|
103 | } |
---|
104 | } |
---|
105 | if (isset($set['path']) OR isset($set['keywords'])) { |
---|
106 | $referers[$refhost]['referers'][] = $set; |
---|
107 | } else { |
---|
108 | $referers[$refhost]['visites_racine'] += $visites; |
---|
109 | } |
---|
110 | } |
---|
111 | } |
---|
112 | |
---|
113 | // trier les liens pour trouver le principal |
---|
114 | foreach ($referers as $k => $r) { |
---|
115 | arsort($referers[$k]['liens']); |
---|
116 | $referers[$k]['liens'] = array_keys($referers[$k]['liens']); |
---|
117 | arsort($referers[$k]['hosts']); |
---|
118 | $referers[$k]['hosts'] = array_keys($referers[$k]['hosts']); |
---|
119 | $referers[$k]['url'] = reset($referers[$k]['hosts']); |
---|
120 | } |
---|
121 | |
---|
122 | if (count($trivisites)) { |
---|
123 | array_multisort($trivisites, SORT_DESC, $referers); |
---|
124 | } |
---|
125 | |
---|
126 | return $referers; |
---|
127 | } |
---|
128 | |
---|
129 | |
---|
130 | ?> |
---|