Browse Source

formatage du code

svn/root/tags/plugins/statistiques/0.3.0
cedric@yterium.com 12 years ago
parent
commit
47e4964987
  1. 194
      inc/referenceurs.php

194
inc/referenceurs.php

@ -17,16 +17,16 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
//
// http://doc.spip.org/@inc_referenceurs_dist
function inc_referenceurs_dist ($id_article, $select, $table, $where, $groupby, $limit, $serveur='') {
function inc_referenceurs_dist($id_article, $select, $table, $where, $groupby, $limit, $serveur = ''){
$nbvisites = $lescriteres = array();
$result = sql_select("referer_md5, referer, $select AS vis", $table, $where, $groupby, "maj DESC", $limit,'',$serveur);
while ($row = sql_fetch($result,$serveur)) {
$result = sql_select("referer_md5, referer, $select AS vis", $table, $where, $groupby, "maj DESC", $limit, '', $serveur);
while ($row = sql_fetch($result, $serveur)){
$referer = interdire_scripts($row['referer']);
$buff = stats_show_keywords($referer, $referer);
if ($buff["host"]) {
if ($buff["host"]){
$numero = $buff["hostname"];
$visites = $row['vis'];
$referermd5 = $row['referer_md5'];
@ -40,41 +40,40 @@ function inc_referenceurs_dist ($id_article, $select, $table, $where, $groupby,
if (!isset($lesreferers[$numero]))
$lesreferers[$numero] = array();
if (!isset($lesliensracine[$numero]))
$lesliensracine[$numero]=0;
$lesliensracine[$numero] = 0;
if (isset($buff["keywords"])
AND $c = $buff["keywords"]) {
if (!isset($lescriteres[$numero][$c])) {
AND $c = $buff["keywords"]){
if (!isset($lescriteres[$numero][$c])){
$lescriteres[$numero][$c] = true;
$tmp= " « $c »";
} else $tmp = "";
$tmp = " « $c »";
} else $tmp = "";
} else {
$tmp = $buff["path"];
if ($buff["query"])
$tmp .= "?".$buff['query'];
if (strlen($tmp) > 18)
if (strlen($tmp)>18)
$tmp = "/".substr($tmp, 0, 15)."...";
else if (strlen($tmp) > 0)
else if (strlen($tmp)>0)
$tmp = "/$tmp";
}
if ($tmp) {
$lesreferers[$numero][] = "<a href=\"".attribut_html($referer)."\">".quote_amp(urldecode($tmp))."</a>" . (($visites > 1)?" ($visites)":""). ($id_article ? '' : referes($referermd5));
if ($tmp){
$lesreferers[$numero][] = "<a href=\"".attribut_html($referer)."\">".quote_amp(urldecode($tmp))."</a>".(($visites>1) ? " ($visites)" : "").($id_article ? '' : referes($referermd5));
} else $lesliensracine[$numero] += $visites;
}
}
if (!count($nbvisites)) return array();
arsort($nbvisites);
return referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls);
}
function referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls)
{
function referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls){
global $spip_lang_right, $source_vignettes;
$vign = ((strlen($source_vignettes) > 0) &&
$GLOBALS['meta']["activer_captures_referers"]!='non');
$vign = ((strlen($source_vignettes)>0) &&
$GLOBALS['meta']["activer_captures_referers"]!='non');
$aff = array();
foreach($nbvisites as $numero => $visites) {
foreach ($nbvisites as $numero => $visites){
if (!$numero) next;
$referermd5 = $lesreferermd5[$numero];
$bouton = $ret = "";
@ -82,37 +81,38 @@ function referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5
if ($vign)
$ret = "\n<a href=\"http://".$lesurls[$numero]."\"><img src=\"$source_vignettes".rawurlencode($lesurls[$numero])."\"\nstyle=\"float: $spip_lang_right; margin-bottom: 3px; margin-left: 3px;\" alt='' /></a>";
if ($visites > 5) $bouton .= "<span class='visites visites3'>$visites "._T('info_visites')."</span> ";
else if ($visites > 1) $bouton .= "<span class='visites visites2'>$visites "._T('info_visites')."</span> ";
if ($visites>5) $bouton .= "<span class='visites visites3'>$visites "._T('info_visites')."</span> ";
else if ($visites>1) $bouton .= "<span class='visites visites2'>$visites "._T('info_visites')."</span> ";
else $bouton .= "<span class='visites visites1'>$visites "._T('info_visite')."</span> ";
if ($numero == "(email)") {
$ret .= $bouton . "<b>".$numero."</b>";
} else {
if ($numero=="(email)"){
$ret .= $bouton."<b>".$numero."</b>";
}
else {
$n = count($lesreferers[$numero]);
if (($n > 1) || ($n > 0 && substr(supprimer_tags($lesreferers[$numero][0]),0,1) != '/')) {
if (($n>1) || ($n>0 && substr(supprimer_tags($lesreferers[$numero][0]), 0, 1)!='/')){
$rac = $lesliensracine[$numero];
$bouton .= "<a href=\"http://".attribut_html($lesurls[$numero])."\" style='font-weight: bold;'>".$numero."</a>"
. (!$rac ? '': (" <span class='spip_x-small'>(" . $rac .")</span>"));
$ret .= bouton_block_depliable($bouton,false)
. debut_block_depliable(false)
. "\n<ul><li>"
. join ("</li><li>",$lesreferers[$numero])
. "</li></ul>"
. fin_block();
.(!$rac ? '' : (" <span class='spip_x-small'>(".$rac.")</span>"));
$ret .= bouton_block_depliable($bouton, false)
.debut_block_depliable(false)
."\n<ul><li>"
.join("</li><li>", $lesreferers[$numero])
."</li></ul>"
.fin_block();
} else {
$ret .= $bouton;
$lien = $n ? $lesreferers[$numero][0] : '';
if (preg_match(",^(<a [^>]+>)([^ ]*)( \([0-9]+\))?,i", $lien, $regs)) {
if (preg_match(",^(<a [^>]+>)([^ ]*)( \([0-9]+\))?,i", $lien, $regs)){
$lien = quote_amp($regs[1]).$numero.$regs[2];
if (!strpos($lien, '</a>')) $lien .= '</a>';
} else
$lien = "<a href=\"http://".attribut_html($numero)."\">".$numero."</a>";
$ret .= "<b>".quote_amp($lien)."</b>"
. ($id_article ? '' : referes($referermd5));
.($id_article ? '' : referes($referermd5));
}
}
$aff[]= $ret;
$aff[] = $ret;
}
return $aff;
}
@ -121,28 +121,28 @@ function referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5
// par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/)
// http://doc.spip.org/@stats_load_engines
function stats_load_engines() {
function stats_load_engines(){
$arr_engines = Array();
lire_fichier(find_in_path('engines-list.txt'), $moteurs);
foreach (array_filter(preg_split("/([\r\n]|#.*)+/", $moteurs)) as $ligne) {
foreach (array_filter(preg_split("/([\r\n]|#.*)+/", $moteurs)) as $ligne){
$ligne = trim($ligne);
if (preg_match(',^\[([^][]*)\]$,S', $ligne, $regs)) {
if (preg_match(',^\[([^][]*)\]$,S', $ligne, $regs)){
$moteur = $regs[1];
$query = '';
} else if (preg_match(',=$,', $ligne, $regs))
$query = $ligne;
else
$arr_engines[] = array($moteur,$query,$ligne);
$arr_engines[] = array($moteur, $query, $ligne);
}
return $arr_engines;
}
// http://doc.spip.org/@stats_show_keywords
function stats_show_keywords($kw_referer, $kw_referer_host) {
function stats_show_keywords($kw_referer, $kw_referer_host){
static $arr_engines = '';
static $url_site;
if (!is_array($arr_engines)) {
if (!is_array($arr_engines)){
// Charger les moteurs de recherche
$arr_engines = stats_load_engines();
@ -151,73 +151,71 @@ function stats_show_keywords($kw_referer, $kw_referer_host) {
$url_site = preg_replace(",^((https?|ftp):?/?/?)?(www\.)?,", "", strtolower($url_site));
}
if ($url = @parse_url( $kw_referer )) {
$query = isset($url['query'])?$url['query']:"";
$host = strtolower($url['host']);
$path = $url['path'];
} else $query = $host = $path ='';
if ($url = @parse_url($kw_referer)){
$query = isset($url['query']) ? $url['query'] : "";
$host = strtolower($url['host']);
$path = $url['path'];
} else $query = $host = $path = '';
// Cette fonction affecte directement les variables selon la query-string !
parse_str($query);
$keywords = '';
$found = false;
if (!empty($url_site)) {
if (strpos('-'.$kw_referer, $url_site)!==false) {
if (preg_match(",(s|search|r|recherche)=([^&]+),i", $kw_referer, $regs))
$keywords = urldecode($regs[2]);
else
return array('host' => '');
} else
for ($cnt = 0; $cnt < sizeof($arr_engines) && !$found; $cnt++)
{
if ( $found = preg_match(','.$arr_engines[$cnt][2].',', $host)
OR $found = preg_match(','.$arr_engines[$cnt][2].',', $path))
{
$kw_referer_host = $arr_engines[$cnt][0];
if (strpos($arr_engines[$cnt][1],'=')!==false) {
// Fonctionnement simple: la variable existe
$v = str_replace('=', '', $arr_engines[$cnt][1]);
$keywords = isset($$v)?$$v:"";
// Si on a defini le nom de la variable en expression reguliere, chercher la bonne variable
if (! strlen($keywords) > 0) {
if (preg_match(",".$arr_engines[$cnt][1]."([^\&]*),", $query, $vals)) {
$keywords = urldecode($vals[2]);
if (!empty($url_site)){
if (strpos('-'.$kw_referer, $url_site)!==false){
if (preg_match(",(s|search|r|recherche)=([^&]+),i", $kw_referer, $regs))
$keywords = urldecode($regs[2]);
else
return array('host' => '');
}
else {
for ($cnt = 0; $cnt<sizeof($arr_engines) && !$found; $cnt++)
{
if ($found = preg_match(','.$arr_engines[$cnt][2].',', $host)
OR $found = preg_match(','.$arr_engines[$cnt][2].',', $path)){
$kw_referer_host = $arr_engines[$cnt][0];
if (strpos($arr_engines[$cnt][1], '=')!==false){
// Fonctionnement simple: la variable existe
$v = str_replace('=', '', $arr_engines[$cnt][1]);
$keywords = isset($$v) ? $$v : "";
// Si on a defini le nom de la variable en expression reguliere, chercher la bonne variable
if (!strlen($keywords)>0){
if (preg_match(",".$arr_engines[$cnt][1]."([^\&]*),", $query, $vals)){
$keywords = urldecode($vals[2]);
}
}
} else {
$keywords = "";
}
if ((($kw_referer_host=="Google")
|| ($kw_referer_host=="AOL" && strpos($query, 'enc=iso')===false)
|| ($kw_referer_host=="MSN")
)){
include_spip('inc/charsets');
if (!isset($ie) OR !$cset = $ie) $cset = 'utf-8';
$keywords = importer_charset($keywords, $cset);
}
$buffer["hostname"] = $kw_referer_host;
}
} else {
$keywords = "";
}
if (( ($kw_referer_host == "Google")
|| ($kw_referer_host == "AOL" && strpos($query,'enc=iso')===false)
|| ($kw_referer_host == "MSN")
)) {
include_spip('inc/charsets');
if (!isset($ie) OR !$cset = $ie) $cset = 'utf-8';
$keywords = importer_charset($keywords,$cset);
}
$buffer["hostname"] = $kw_referer_host;
}
}
}
$buffer["host"] = $host;
if (!isset($buffer["hostname"]) OR !$buffer["hostname"])
$buffer["hostname"] = $host;
$buffer["path"] = substr($path, 1, strlen($path));
$buffer["query"] = $query;
if ($keywords != '')
{
if (strlen($keywords) > 150) {
if ($keywords!=''){
if (strlen($keywords)>150){
$keywords = spip_substr($keywords, 0, 148);
// supprimer l'eventuelle entite finale mal coupee
$keywords = preg_replace('/&#?[a-z0-9]*$/', '', $keywords);
@ -234,19 +232,19 @@ function stats_show_keywords($kw_referer, $kw_referer_host) {
// Recherche des articles pointes par le referer
//
// http://doc.spip.org/@referes
function referes($referermd5, $serveur='') {
$retarts = sql_allfetsel('J2.id_article, J2.titre', 'spip_referers_articles AS J1 LEFT JOIN spip_articles AS J2 ON J1.id_article = J2.id_article', "(referer_md5='$referermd5' AND J1.maj>=DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 2 DAY))", '', "titre",'','',$serveur);
function referes($referermd5, $serveur = ''){
$retarts = sql_allfetsel('J2.id_article, J2.titre', 'spip_referers_articles AS J1 LEFT JOIN spip_articles AS J2 ON J1.id_article = J2.id_article', "(referer_md5='$referermd5' AND J1.maj>=DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).", INTERVAL 2 DAY))", '', "titre", '', '', $serveur);
foreach ($retarts as $k => $rowart) {
foreach ($retarts as $k => $rowart){
$titre = typo($rowart['titre']);
$url = generer_url_entite($rowart['id_article'], 'article', '', '', TRUE);
$retarts[$k] = "<a href='$url'><i>$titre</i></a>";
}
if (count($retarts) > 1)
return '<br />&rarr; '.join(',<br />&rarr; ',$retarts);
if (count($retarts) == 1)
return '<br />&rarr; '. array_shift($retarts);
if (count($retarts)>1)
return '<br />&rarr; '.join(',<br />&rarr; ', $retarts);
if (count($retarts)==1)
return '<br />&rarr; '.array_shift($retarts);
return '';
}

Loading…
Cancel
Save