[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / statistiques / inc / stats_referers_to_array.php
diff --git a/www/plugins-dist/statistiques/inc/stats_referers_to_array.php b/www/plugins-dist/statistiques/inc/stats_referers_to_array.php
new file mode 100644 (file)
index 0000000..9f60f3a
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2014                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('inc/statistiques');
+// moyenne glissante sur 30 jours
+define('MOYENNE_GLISSANTE_JOUR', 30);
+// moyenne glissante sur 12 mois
+define('MOYENNE_GLISSANTE_MOIS', 12);
+include_spip('inc/referenceurs');
+
+function inc_stats_referers_to_array_dist($limit, $jour, $id_article, $options = array()) {
+
+       $visites = 'visites';
+       $table = "spip_referers";
+       $where = array();
+       $serveur = '';
+
+       if (in_array($jour,array('jour','veille'))){
+               $visites .= "_$jour";
+               $where[] = "$visites>0";
+       }
+       //$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit);
+
+       if ($id_article) {
+                       $table = "spip_referers_articles";
+                       $where[] = "id_article=".intval($id_article);
+       }
+
+       $where = implode(" AND ",$where);
+       $limit = $limit?"0,".intval($limit):'';
+
+       $result = sql_select("referer_md5, referer, $visites AS vis", $table, $where, '', "maj DESC", $limit,'',$serveur);
+
+       $referers = array();
+       $trivisites = array(); // pour le tri
+       while ($row = sql_fetch($result,$serveur)) {
+               $referer = interdire_scripts($row['referer']);
+               $buff = stats_show_keywords($referer, $referer);
+
+               if ($buff["host"]) {
+                       $refhost = $buff["hostname"];
+                       $visites = $row['vis'];
+                       $host = $buff["scheme"]."://".$buff["host"];
+                       
+                       $referers[$refhost]['referer_md5'] = $row['referer_md5'];
+
+                       if (!isset($referers[$refhost]['liens'][$referer]))
+                               $referers[$refhost]['liens'][$referer] = 0;
+                       if (!isset($referers[$refhost]['hosts'][$host]))
+                               $referers[$refhost]['hosts'][$host] = 0;
+
+                       if (!isset($referers[$refhost]['visites']))
+                               $referers[$refhost]['visites'] = 0;
+                       if (!isset($referers[$refhost]['visites_racine']))
+                               $referers[$refhost]['visites_racine'] = 0;
+                       if (!isset($referers[$refhost]['referers']))
+                               $referers[$refhost]['referers'] = array();
+
+                       $referers[$refhost]['hosts'][$host]++;
+                       $referers[$refhost]['liens'][$referer]++ ;
+                       $referers[$refhost]['visites'] += $visites;
+                       $trivisites[$refhost] = $referers[$refhost]['visites'];
+
+                       $tmp = "";
+                       $set = array(
+                               'referer'=>$referer,
+                               'visites'=>$visites,
+                               'referes'=>$id_article?'':referes($row['referer_md5'])
+                       );
+                       if (isset($buff["keywords"])
+                         AND  $c = $buff["keywords"]) {
+                               if (!isset($referers[$refhost]['keywords'][$c])) {
+                                       $referers[$refhost]['keywords'][$c] = true;
+                                       $set['keywords'] = $c;
+                               }
+                       }
+                       else {
+                               $tmp = $buff["path"];
+                               if ($buff["query"])
+                                       $tmp .= "?".$buff['query'];
+                               if (strlen($tmp))
+                                       $set['path'] = "/$tmp";
+                       }
+                       if (isset($set['path']) OR isset($set['keywords']))
+                               $referers[$refhost]['referers'][] = $set;
+                       else
+                               $referers[$refhost]['visites_racine'] += $visites;
+               }
+       }
+
+       // trier les liens pour trouver le principal
+       foreach($referers as $k=>$r){
+               arsort($referers[$k]['liens']);
+               $referers[$k]['liens'] = array_keys($referers[$k]['liens']);
+               arsort($referers[$k]['hosts']);
+               $referers[$k]['hosts'] = array_keys($referers[$k]['hosts']);
+               $referers[$k]['url'] = reset($referers[$k]['hosts']);
+       }
+
+       if (count($trivisites)){
+               array_multisort($trivisites, SORT_DESC,$referers);
+       }
+       
+       return $referers;
+}
+
+
+?>
\ No newline at end of file