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'); $aff = array(); foreach($nbvisites as $numero => $visites) { if (!$numero) next; $referermd5 = $lesreferermd5[$numero]; $bouton = $ret = ""; 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> "; else $bouton .= "<span class='visites visites1'>$visites "._T('info_visite')."</span> "; 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) != '/')) { $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(); } else { $ret .= $bouton; $lien = $n ? $lesreferers[$numero][0] : ''; 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)); } } $aff[]= $ret; } return $aff; }
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; }