[ Index ] |
|
Code source de SPIP Agora 1.4 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |