[ 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 Message List Data abstraction. 20 // 21 22 /** 23 * BD_messageListData is a base class for message lists data database abstraction implementations, and must be 24 * inherited by all such. 25 */ 26 if (defined("_BD_MESSAGELISTDATA")) 27 return; 28 29 define("_BD_MESSAGELISTDATA", "1"); 30 31 require_once("PEAR.php"); 32 require_once("DB.php"); 33 require_once dirname(__FILE__). "/objectlistdata.php"; 34 35 /** 36 * This class implements data lists for message list business data type 37 * @package BD 38 * @author Antoine Angénieux <aangenieux@clever-age.com> 39 * @author Erwan Le Bescond <elebescond@clever-age.com> 40 * @access public 41 */ 42 class BD_messageListData extends BD_objectListData { 43 44 /** 45 * Create a new message list data object for the specified database parameters 46 * passed 47 * 48 * @param BD_parameters $dbParameters database configuration object 49 * 50 * @return mixed a newly created MessageListData object, or a PEAR error code on 51 * error 52 * 53 * access public 54 */ 55 56 function &factory ($dbParameters = null) { 57 if (file_exists( 58 dirname( 59 __FILE__). "/" . $dbParameters->_dbEngine . "/messagelistdata_" . $dbParameters->_dbEngine . ".php") 60 == false) { 61 include_once (dirname(__FILE__). "/common/messagelistdata_common.php"); 62 $classname = "BD_messagelistdata_common"; 63 } 64 else { 65 include_once (dirname( 66 __FILE__). "/" . $dbParameters->_dbEngine . "/messagelistdata_" . $dbParameters->_dbEngine . ".php"); 67 $classname = "BD_messageListData_" . $dbParameters->_dbEngine; 68 } 69 70 if (!class_exists($classname)) { 71 return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false); 72 } 73 74 $obj = &new $classname; 75 $result = $obj->setDbParameters($dbParameters); 76 77 if (PEAR::isError($result)) { 78 return $result; 79 } 80 else { 81 return $obj; 82 } 83 } 84 85 // {{{ constructor 86 87 /** 88 * Constructor. 89 * 90 * @access public 91 */ 92 93 function BD_messageListData () { 94 $par = get_parent_class(get_parent_class($this)); 95 $this->$par(); 96 } 97 98 // }}} 99 100 // {{{ _fillQueries() 101 102 /** 103 * This methods fill the query associative arrays with SQL 92 compliant 104 * queries. Each driver that requires specific SQL querying must implement 105 * the _adaptQueriesToDriver() method. 106 * @access private 107 * @see _adaptQueriesToDriver() 108 */ 109 function _fillQueries () { 110 $this->_queries[MESSAGES_BY_RV_AND_DATE] 111 = "SELECT * FROM " . $GLOBALS['table_prefix']. "_messages messages, " . $GLOBALS['table_prefix']. "_auteurs_messages lien " . "WHERE lien.id_auteur=? AND rv=? AND date_heure > <!spipDATE_SUBTRACT_ONE_DAYspip!> " . "AND statut=? AND lien.id_message=messages.id_message"; 112 $this->_queriesCount[MESSAGES_BY_RV_AND_DATE] 113 = "SELECT COUNT(*) FROM " . $GLOBALS['table_prefix']. "_messages messages, " . $GLOBALS['table_prefix']. "_auteurs_messages lien " . "WHERE lien.id_auteur=? AND rv=? AND date_heure > <!spipDATE_SUBTRACT_ONE_DAYspip!> " . "AND statut=? AND lien.id_message=messages.id_message"; 114 /* 115 $this->_queries[MESSAGES_BY_RV_AND_DATE] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 116 "WHERE lien.id_auteur=? AND rv=? AND date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) ". 117 "AND statut=? AND lien.id_message=messages.id_message"; 118 $this->_queriesCount[MESSAGES_BY_RV_AND_DATE] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 119 "WHERE lien.id_auteur=? AND rv=? AND date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) ". 120 "AND statut=? AND lien.id_message=messages.id_message"; 121 */ 122 123 $this->_queries[MESSAGES_BY_AUTEUR_STATUT_TYPE_DATE_RV] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=? AND type=? AND rv<>? AND ( rv<>? OR date_heure > <!spipDATE_SUBTRACT_ONE_DAYspip!>)"; 124 $this->_queriesCount[MESSAGES_BY_AUTEUR_STATUT_TYPE_DATE_RV] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=? AND type=? AND rv<>? AND ( rv<>? OR date_heure > <!spipDATE_SUBTRACT_ONE_DAYspip!>)"; 125 126 $this->_queries[MESSAGES_BY_AUTEUR_VU_STATUT] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 127 "WHERE lien.id_auteur=? AND vu=? ". 128 "AND statut=? AND lien.id_message=messages.id_message"; 129 $this->_queriesCount[MESSAGES_BY_AUTEUR_VU_STATUT] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 130 "WHERE lien.id_auteur=? AND vu=? ". 131 "AND statut=? AND lien.id_message=messages.id_message"; 132 133 $this->_queries[MESSAGES_BY_AUTEUR_STATUT_TYPE_JOINTURE] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 134 "WHERE lien.id_auteur=? AND statut=? AND type=? AND rv<>? AND lien.id_message=messages.id_message"; 135 $this->_queriesCount[MESSAGES_BY_AUTEUR_STATUT_TYPE_JOINTURE] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages, ".$GLOBALS['table_prefix']."_auteurs_messages lien ". 136 "WHERE lien.id_auteur=? AND statut=? AND type=? AND rv<>? AND lien.id_message=messages.id_message"; 137 138 139 $this->_queries[MESSAGES_BY_AUTEUR_STATUT] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=?"; 140 $this->_queriesCount[MESSAGES_BY_AUTEUR_STATUT] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=?"; 141 142 $this->_queries[MESSAGES_BY_AUTEUR_STATUT_TYPE] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=? AND type=? AND rv<>?"; 143 $this->_queriesCount[MESSAGES_BY_AUTEUR_STATUT_TYPE] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages WHERE id_auteur=? AND statut=? AND type=? AND rv<>?"; 144 145 146 $this->_queries[MESSAGES_BY_STATUT_TYPE] = "SELECT * FROM ".$GLOBALS['table_prefix']."_messages messages WHERE statut=? AND type=? AND rv = ?"; 147 $this->_queriesCount[MESSAGES_BY_STATUT_TYPE] = "SELECT COUNT(*) FROM ".$GLOBALS['table_prefix']."_messages messages WHERE statut=? AND type=? AND rv = ?"; 148 } 149 150 // }}} 151 152 // {{{ getHTMLList($titre_table, $requete, $affrub=false) 153 154 /** 155 * returns the HTML List for the various breve data lists implementations 156 * This method should <b>NEVER<b> be overloaded, otherwise EXTRA-EXTRA-CARE is required 157 * while overloading this method. 158 * 159 * @return String reprensenting the generated HTML list navigation 160 * @param $queryType int representing the desired query type (refer to inc_listdata_query_types_contants.php) 161 * @param $params array containing the query parameters 162 * @param $countQuery boolean : if set to true, the returned query is a count result query for the specified query type. 163 * @access public 164 */ 165 166 function displayHTMLList($titre_table, $queryType, $params = array(), $afficher_auteurs = true, $important = false, $boite_importante = true, $obligatoire = false) { 167 global $messages_vus; 168 global $connect_id_auteur; 169 global $couleur_claire; 170 global $spip_lang_rtl; 171 172 $copyParams = $params; 173 174 $tranches = $this->_getHTMLNavigation($queryType, $params, 3); 175 176 $requete = $this->_getQuery($queryType, false, $copyParams); 177 178 //echo '<br />' . $requete . '<br />'; 179 180 // Interdire l'affichage de message en double 181 /* 182 if ($messages_vus) { 183 $query_message .= ' AND messages.id_message NOT IN ('.join(',', $messages_vus).')'; 184 } 185 186 $query_message .= ' ORDER BY date_heure DESC'; 187 */ 188 /* 189 $tranches = afficher_tranches_requete($query_message, 3); 190 */ 191 192 if ($tranches OR $obligatoire) { 193 if ($important) debut_cadre_relief(); 194 195 echo "<P><TABLE WIDTH=100% CELLPADDING=0 CELLSPACING=0 BORDER=0><TR><TD WIDTH=100% BACKGROUND=''>"; 196 echo "<TABLE WIDTH=100% CELLPADDING=3 CELLSPACING=0 BORDER=0>"; 197 198 bandeau_titre_boite($titre_table, $afficher_auteurs, $boite_importante); 199 200 echo $tranches; 201 202 $db = &$this->_getDB(); 203 if (DB::isError($db)) { 204 die("Impossible d'obternir une connexion à la base de données! ".$db->getMessage()); 205 } 206 if ($this->_getQueryIsLimited()) { 207 $limitStart = $this->_getLimitStart(); 208 $limitCount = $this->_getLimitCount(); 209 $result_message = $db->limitQuery($requete, $limitStart, $limitCount, $params); 210 } else { 211 $result_message = $db->query($requete, $params); 212 } 213 /* 214 $result_message = ".$GLOBALS['table_prefix']."_query($query_message); 215 */ 216 217 $num_rows = $result_message->numRows(); 218 219 while($row = $result_message->fetchRow()) { 220 $vals = ''; 221 222 $id_message = $row['id_message']; 223 $date = $row["date_heure"]; 224 $titre = $row["titre"]; 225 $type = $row["type"]; 226 $statut = $row["statut"]; 227 $page = $row["page"]; 228 $rv = $row["rv"]; 229 $vu = $row["vu"]; 230 $messages_vus[$id_message] = $id_message; 231 232 // 233 // Titre 234 // 235 236 $s = "<A HREF='message.php?id_message=$id_message'>"; 237 238 switch ($type) { 239 case 'pb' : 240 $puce = 'm_envoi_bleu$spip_lang_rtl.gif'; 241 break; 242 case 'memo' : 243 $puce = 'm_envoi_jaune$spip_lang_rtl.gif'; 244 break; 245 case 'affich' : 246 $puce = 'm_envoi_jaune$spip_lang_rtl.gif'; 247 break; 248 case 'normal': 249 default: 250 $puce = 'm_envoi$spip_lang_rtl.gif'; 251 break; 252 } 253 254 $s .= "<img src='img_pack/$puce' width='14' height='7' border='0'>"; 255 $s .= " ".typo($titre)."</A>"; 256 $vals[] = $s; 257 258 // 259 // Auteurs 260 261 if ($afficher_auteurs) { 262 263 $auteurMetier = &recuperer_instance_auteur(); 264 $allForMessageIdExceptAuteurId = $auteurMetier->getAllForMessageIdExceptAuteurId($id_message, $connect_id_auteur); 265 if(PEAR::isError($allForMessageIdExceptAuteurId)) { 266 die($allForMessageIdExceptAuteurId->getMessage()); 267 } 268 /* Ajout CPSQY / Stéphane PETIT */ 269 unset($auteurs); 270 /* Fin ajout CPSQY / Stéphane PETIT */ 271 while(list(, $monAuteur) = each($allForMessageIdExceptAuteurId)) { 272 $auteurs[] = typo($monAuteur->getNom()); 273 } 274 /* 275 $query_auteurs = "SELECT auteurs.nom FROM ".$GLOBALS['table_prefix']."_auteurs auteurs, ".$GLOBALS['table_prefix']."_auteurs_messages lien WHERE lien.id_message=$id_message AND lien.id_auteur!=$connect_id_auteur AND lien.id_auteur=auteurs.id_auteur"; 276 $result_auteurs = ".$GLOBALS['table_prefix']."_query($query_auteurs); 277 $auteurs = ''; 278 while ($row_auteurs = ".$GLOBALS['table_prefix']."_fetch_array($result_auteurs)) { 279 $auteurs[] = typo($row_auteurs['nom']); 280 } 281 */ 282 if ($auteurs AND $type == 'normal') { 283 $s = "<FONT FACE='Arial,Helvetica,sans-serif' SIZE=1>"; 284 $s .= join(', ', $auteurs); 285 $s .= "</FONT>"; 286 } 287 else $s = " "; 288 $vals[] = $s; 289 } 290 291 // 292 // Date 293 // 294 295 $s = affdate($date); 296 $vals[] = $s; 297 298 $table[] = $vals; 299 } 300 301 if ($afficher_auteurs) { 302 $largeurs = array('', 130, 90); 303 $styles = array('arial2', 'arial1', 'arial1'); 304 } 305 else { 306 $largeurs = array('', 90); 307 $styles = array('arial2', 'arial1'); 308 } 309 afficher_liste($largeurs, $table, $styles); 310 311 echo "</TABLE></TD></TR></TABLE>"; 312 $result_message->free(); 313 if ($important) fin_cadre_relief(); 314 } 315 } 316 } 317 ?>
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 |