[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_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')) 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 ?>