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