[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Agora1-4/ecrire/include/bd/sqlite/ -> referer_sqlite.php (source)

   1  <?php
   2  /*****************************************************
   3  * This file is part of Agora, web based content management system.
   4  *
   5  * Agora is free software; you can redistribute it and/or modify
   6  * it under the terms of the GNU General Public License as published by
   7  * the Free Software Foundation; version 2 of the License.
   8  *
   9  * Agora is distributed in the hope that it will be useful,
  10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  * GNU General Public License for more details (file "COPYING").
  13  *
  14  * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière.
  15  * List of authors detailed in "copyright_fr.html" file.
  16  * E-mail : agora@sig.premier-ministre.gouv.fr
  17  * Web site : http://www.agora.gouv.fr
  18  *****************************************************/
  19  // Base class for Referer business persistence abstraction.
  20  //
  21  require_once dirname(__FILE__). "/../referer.php";
  22  
  23  require_once dirname(__FILE__). "/SQLite_functions.php";
  24  
  25  /**
  26   * BD_referer_sqlite is an implementation for sqlite of BD_referer business class.
  27   * @package    BD_sqlite
  28   * @author     Olivier Mansour
  29   * @access    public
  30   */
  31  class BD_referer_sqlite extends BD_referer {
  32      // {{{ howManyArticleId()
  33  
  34  	function howManyArticleId () {
  35          $howManyArticleId = 0;
  36          $db = &$this->_getDB();
  37  
  38          if (DB::isError($db)) {
  39              return PEAR::raiseError(
  40                         "[" . get_class($this). " DB_referer : howManyArticleId()] " . $db->getMessage(). "", null, null,
  41                         null, null, null,
  42                         false);
  43          }
  44  
  45          //$query = "SELECT COUNT(DISTINCT id_article) AS count FROM spip_referers_articles";
  46          $query = "SELECT DISTINCT id_article AS count FROM (SELECT DISTINCT id_article FROM spip_referers_articles)";
  47          $query = $this->_traiteQuery($query);
  48          $result = $db->query($query);
  49  
  50          if (DB::isError($result)) {
  51              return PEAR::raiseError(
  52                         "[" . get_class($this). " DB_referer : howManyArticleId()] " . $result->getMessage(). "", null,
  53                         null, null,
  54                         null, null,
  55                         false);
  56          }
  57  
  58          if ($row = $result->fetchRow()) {
  59              $howManyArticleId = intval($row["count"]);
  60          }
  61  
  62          $result->free();
  63          return $howManyArticleId;
  64      }
  65  
  66      // }}}
  67  
  68      // {{{ getAllTempReferersForTypeAndReferer($type, $referer_vus)
  69  
  70  	function getAllTempReferersForTypeAndReferer ($type, $referer_vus) {
  71          $referers = array();
  72          $db = &$this->_getDB();
  73  
  74          if (DB::isError($db)) {
  75              return PEAR::raiseError(
  76                         "[" . get_class(
  77                                   $this). " DB_referer : getAllTempReferersForTypeAndReferer()] " . $db->getMessage(). "",
  78                         null,
  79                         null,
  80                         null,
  81                         null,
  82                         null,
  83                         false);
  84          }
  85  
  86          $where = (is_array($referer_vus)) ? "AND referer_md5 IN (" . join(',', $referer_vus). ")" : "";
  87  
  88          //$query = 'SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, referer_md5 AS md5 '.
  89          //  'FROM spip_referers_temp WHERE type_referer=\'' . $type . '\'' . $where . ' GROUP BY id_objet, referer, referer_md5';
  90  
  91          $query
  92              = 'SELECT COUNT(ip) as visites, id_objet, referer, referer_md5 AS md5 FROM 
  93                  (SELECT DISTINCT ip as visites, id_objet, referer, referer_md5 AS md5 FROM spip_referers_temp WHERE type_referer=\'' . $type . '\'' . $where . ' GROUP BY id_objet, referer, referer_md5)';
  94  
  95          /*
  96          $query = "SELECT COUNT(DISTINCT ip) AS visites, id_objet, referer, HEX(referer_md5) AS md5 ".
  97              "FROM spip_referers_temp WHERE type='$type' $where GROUP BY id_objet, referer_md5";
  98          */
  99          $query = $this->_traiteQuery($query);
 100          $result = $db->query($query);
 101  
 102          if (DB::isError($result)) {
 103              return PEAR::raiseError(
 104                         "[" . get_class(
 105                                   $this). " DB_referer : getAllTempReferersForTypeAndReferer()] " . $result->getMessage(). "",
 106                         null,
 107                         null,
 108                         null,
 109                         null,
 110                         null,
 111                         false);
 112          }
 113  
 114          while ($row = $result->fetchRow()) {
 115              $row['md5'] = $row['md5'];
 116              $referers[] = $row;
 117          }
 118  
 119          $result->free();
 120          return $referers;
 121      }
 122  
 123      // }}}
 124  
 125      // {{{ _fetchData()
 126  
 127      /**
 128       * This method is used to fetch result set fields into the object fields
 129       * @access  private
 130       * @param   array $row content of fetched data
 131       */
 132  
 133  	function _fetchData ($row) {
 134          SQLite_CleanName($row);
 135          BD_referer::_fetchData($row);
 136      }
 137  
 138  // }}}
 139  }
 140  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7