Пример #1
0
function inc_referenceurs_dist ($id_article, $select, $table, $where, $groupby, $limit, $serveur='') {

	$nbvisites = $lescriteres = array();

	$result = sql_select("maj, 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"]) {
			$numero = $buff["hostname"];
			$visites = $row['vis'];
			$referermd5 = $row['referer_md5'];
			$lesreferermd5[$numero] = $referermd5;
			$lesliens[$numero] = $referer;
			$lesurls[$numero] = $buff["host"];
			if (!isset($nbvisites[$numero]))
				$nbvisites[$numero] = $visites;
			else
				$nbvisites[$numero] += $visites;
			if (!isset($lesreferers[$numero]))
				$lesreferers[$numero] = array();
			if (!isset($lesliensracine[$numero]))
				$lesliensracine[$numero]=0;

			if (isset($buff["keywords"])
			AND  $c = $buff["keywords"]) {
				if (!isset($lescriteres[$numero][$c])) {
					$lescriteres[$numero][$c] = true;
					$tmp= " « $c »";
				} else 	$tmp = "";
			} else {
				$tmp = $buff["path"];
				if ($buff["query"])
					$tmp .= "?".$buff['query'];
				if (strlen($tmp) > 18)
					$tmp = "/".substr($tmp, 0, 15)."...";
				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));
			} else $lesliensracine[$numero] += $visites;
		}
	}
	
	if (!count($nbvisites)) return array();
	arsort($nbvisites);
	return referers_group($nbvisites, $id_article, $lesliensracine, $lesreferermd5, $lesreferers, $lesurls);
}
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;
}