[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / statistiques / inc / stats_referers_to_array.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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 }