123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?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;
- }
- ?>
|