Subversion Repositories Sites.tela-botanica.org

Rev

Blame | Last modification | View Log | RSS feed

<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2005                                                *
 *  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.   *
\***************************************************************************/


//
// Ce fichier ne sera execute qu'une fois
if (defined("_INC_STATS")) return;
define("_INC_STATS", "1");

function ecrire_stats() {
        global $id_article, $id_breve, $id_rubrique;

        if ($GLOBALS['HTTP_X_FORWARDED_FOR'])
                $log_ip = $GLOBALS['HTTP_X_FORWARDED_FOR'];
        else
                $log_ip = $GLOBALS['REMOTE_ADDR'];

        if ($log_id_num = intval($id_rubrique))
                $log_type = "rubrique";
        else if ($log_id_num = intval($id_article))
                $log_type = "article";
        else if ($log_id_num = intval($id_breve))
                $log_type = "breve";
        else
                $log_type = "autre";

        // Conversion IP 4 octets -> entier 32 bits
        if (ereg("^(::ffff:)?([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$", $log_ip, $r)) {
                $log_ip = sprintf("0x%02x%02x%02x%02x", $r[2], $r[3], $r[4], $r[5]);
        }
        else return;

        //
        // Loguer la visite dans la base si possible
        //
        if ($log_type != "autre") {
                $query = "INSERT IGNORE INTO spip_visites_temp (ip, type, id_objet) ".
                        "VALUES ($log_ip, '$log_type', $log_id_num)";
                spip_query($query);
        }

        //
        // Loguer le referer
        //
        $url_site_spip = lire_meta('adresse_site');
        $url_site_spip = eregi_replace("^((https?|ftp)://)?(www\.)?", "", $url_site_spip);
        $log_referer = $GLOBALS['HTTP_REFERER'];
        if (($url_site_spip<>'') AND strpos('-'.strtolower($log_referer), strtolower($url_site_spip)) AND !$GLOBALS['var_recherche']) $log_referer = "";
        if ($log_referer) {
                $referer_md5 = '0x'.substr(md5($log_referer), 0, 15);
                $query = "INSERT IGNORE INTO spip_referers_temp (ip, referer, referer_md5, type, id_objet) ".
                        "VALUES ($log_ip, '".texte_script($log_referer)."', $referer_md5, '$log_type', $log_id_num)";
                spip_query($query);
        }
}


function afficher_raccourci_stats($id_article) {
        $query = "SELECT visites, popularite FROM spip_articles WHERE id_article=$id_article AND statut='publie'";
        $result = spip_query($query);
        if ($row = @spip_fetch_array($result)) {
                $visites = intval($row['visites']);
                $popularite = ceil($row['popularite']);

                $query = "SELECT COUNT(DISTINCT ip) AS c FROM spip_visites_temp WHERE type='article' AND id_objet=$id_article";
                $result = spip_query($query);
                if ($row = @spip_fetch_array($result)) {
                        $visites = $visites + $row['c'];
                }

                return array('visites' => $visites, 'popularite' => $popularite);
        }
}

?>