[ Index ]
 

Code source de SPIP 1.8.3

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/ecrire/ -> inc_visites.php3 (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2005                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  
  14  // Ce fichier ne sera execute qu'une fois
  15  if (defined("_ECRIRE_INC_VISITES")) return;
  16  define("_ECRIRE_INC_VISITES", "1");
  17  
  18  function calculer_visites() {
  19  
  20      // La date des enregistrements de spip_visites_temp correspond a la veille
  21      // du calcul.
  22      $hier = date("Y-m-d", time() - 24*3600);
  23  
  24      // Sur tout le site, nombre de visiteurs uniques pendant la periode
  25      // qui precede (normalement, une journee)
  26      $query = "SELECT COUNT(DISTINCT ip) AS total_visites FROM spip_visites_temp";
  27      $result = spip_query($query);
  28      if ($row = @spip_fetch_array($result))
  29          $total_visites = $row['total_visites'];
  30      else
  31          $total_visites = 0;
  32      spip_query("INSERT IGNORE INTO spip_visites
  33          (date, visites) VALUES ('$hier', 0)");
  34      spip_query("UPDATE spip_visites SET visites = visites+$total_visites
  35          WHERE date='$hier'");
  36  
  37      // Nombre de visiteurs uniques par article
  38      $query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet
  39          FROM spip_visites_temp WHERE type='article' GROUP BY id_objet";
  40      $result = spip_query($query);
  41  
  42      $visites_insert = array();
  43      $visites_update = array();
  44  
  45      while ($row = @spip_fetch_array($result)) {
  46          $id_article = $row['id_objet'];
  47          $visites = $row['visites'];
  48          $visites_update[$visites][] = $id_article;
  49      }
  50  
  51      $query_effacer = "DELETE FROM spip_visites_temp";
  52      $result_effacer = spip_query($query_effacer);
  53  
  54      // Mise a jour de la base
  55      foreach ($visites_update as $visites => $articles) {
  56          // Augmenter les stats totales des articles
  57          spip_query("UPDATE spip_articles SET maj=maj,
  58              visites = visites + $visites
  59              WHERE id_article IN (".join(',', $articles).")");
  60          // Inserer des visites pour la journee (si pas deja fait)
  61          $insert = "('$hier',0,". join ("),('$hier',0,", $articles) . ')';
  62          spip_query("INSERT IGNORE INTO spip_visites_articles
  63              (date, visites, id_article) VALUES $insert");
  64          // Augmenter les stats des visites de la journee
  65          spip_query("UPDATE spip_visites_articles
  66              SET visites=visites+$visites WHERE date='$hier'
  67              AND id_article IN (".join(',', $articles).")");
  68      }
  69  
  70      // Une fois par jour purger les referers du jour ; qui deviennent
  71      // donc ceux de la veille ; au passage on stocke une date_statistiques
  72      // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron
  73      // peut etre appele par deux bases SPIP ne partageant pas le meme
  74      // _DIR_SESSIONS, sans tout casser...
  75      $aujourdhui = date("Y-m-d");
  76      if ($date_referers = lire_meta('date_statistiques')
  77      AND $date_referers != $aujourdhui) {
  78          spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0");
  79      }
  80      ecrire_meta('date_statistiques', $aujourdhui);
  81      ecrire_metas();
  82      return 1;
  83  }
  84  
  85  ?>


Généré le : Thu Feb 22 22:27:47 2007 par Balluche grâce à PHPXref 0.7