[ 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 Newsletter List Data abstraction. 20 // 21 22 /** 23 * BD_newsletterListData is a base class for newsletter lists data database abstraction implementations, and must be 24 * inherited by all such. 25 * @package BD 26 * @author Antoine Angénieux <aangenieux@clever-age.com> 27 * @author Erwan Le Bescond <elebescond@clever-age.com> 28 * @access public 29 */ 30 31 if (defined("_BD_NEWSLETTERLISTDATA")) 32 return; 33 34 define("_BD_NEWSLETTERLISTDATA", "1"); 35 36 require_once("PEAR.php"); 37 require_once("DB.php"); 38 require_once dirname(__FILE__). "/objectlistdata.php"; 39 require_once dirname(__FILE__). "/inc_listdata_querytypes_constants.php"; 40 41 class BD_newsletterListData extends BD_objectListData { 42 43 /** 44 * Create a new newsletter list data object for the specified database parameters 45 * passed 46 * 47 * @param BD_parameters $dbParameters database configuration object 48 * @return mixed a newly created NewsletterListData object, or a PEAR error code on 49 * error 50 * @access public 51 */ 52 function &factory ($dbParameters = null, $dbOptions = null) { 53 if (file_exists(dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/newsletterlistdata_" . $dbParameters->_dbEngine . ".php") == false) { 54 include_once(dirname(__FILE__). "/common/newsletterlistdata_common.php"); 55 $classname = "BD_newsletterlistdata_common"; 56 } 57 else { 58 include_once(dirname(__FILE__). "/" . $dbParameters->_dbEngine . "/newsletterlistdata_" . $dbParameters->_dbEngine . ".php"); 59 $classname = "BD_newsletterlistdata_" . $dbParameters->_dbEngine; 60 } 61 62 if (!class_exists($classname)) { 63 return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false); 64 } 65 66 $obj = &new $classname; 67 68 $result = $obj->setDbParameters($dbParameters); 69 70 if ($dbOptions != null) { 71 $obj->setDbOptions($dbOptions); 72 } 73 74 if (PEAR::isError($result)) { 75 return $result; 76 } 77 else { 78 return $obj; 79 } 80 } 81 82 // {{{ constructor 83 84 /** 85 * Abstract Constructor. 86 * 87 * @access public 88 */ 89 90 function BD_newsletterListData () { 91 $par = get_parent_class(get_parent_class($this)); 92 93 $this->$par(); 94 } 95 96 // }}} 97 98 // {{{ getHTMLList($titre_table, $queryType, $params, $afficher_visites = false, $afficher_auteurs = true, $toujours_afficher = false, $afficher_cadre = true) 99 100 /** 101 * returns the HTML List for the various article data lists implementations 102 * This method should <b>NEVER<b> be overloaded, otherwise EXTRA-EXTRA-CARE is required 103 * while overloading this method. 104 * 105 * @return String reprensenting the generated HTML list navigation 106 * @param $queryType int representing the desired query type (refer to inc_listdata_query_types_contants.php) 107 * @param $params array containing the query parameters 108 * @param $countQuery boolean : if set to true, the returned query is a count result query for the specified query type. 109 * @access public 110 */ 111 112 function displayHTMLList ($titre_table, $queryType, $params = array(), $urlDest = 'newsletter_admin.php') { 113 global $connect_id_auteur, $connect_statut; 114 $requete = $this->_getQuery($queryType, false, $params); 115 $db = &$this->_getDB(); 116 117 if (DB::isError($db)) { 118 die("Impossible d'obternir une connexion à la base de données! " . $db->getMessage()); 119 } 120 121 $result = $db->query($requete, $params); 122 123 if (DB::isError($result)) { 124 die("la requete a échouée! " . $result->getMessage()); 125 } 126 127 debut_cadre_relief("newsletter-24.gif"); 128 echo "<table width=100% cellpadding=0 cellspacing=0 border=0><tr><td width=100% background=''>"; 129 echo "<table width=100% cellpadding=3 cellspacing=0 border=0>"; 130 bandeau_titre_boite($titre_table, true); 131 132 while ($row = $result->fetchRow()) { 133 echo '<tr bgcolor="#FFFFFF"><td class="arial2" colspan="1"><a href="' . $urlDest . '?id_newsletter=' . $row['lst_id']. '" title="' . $row['lst_comment']. '"><img src="img_pack/puce-verte.gif" alt="" width="13" height="14" border="0"></a> <a href="' . $urlDest . '?id_newsletter=' . $row['lst_id']. '" title="' . $row['lst_comment']. '">' . $row['lst_name']. '</a></td>' . '<td class="arial2" nowrap>' . $row['lst_nb_articles']. ' articles au choix</td></tr>'; 134 } 135 136 $result->free(); 137 echo "</table></td></tr></table>"; 138 fin_cadre_relief(); 139 return $tous_id; 140 } 141 142 // }}} 143 144 // {{{ _fillQueries() 145 146 /** 147 * This methods fill the query associative arrays with SQL 92 compliant 148 * queries. Each driver that requires specific SQL querying must implement 149 * the _adaptQueriesToDriver() method. 150 * @access private 151 * @see _adaptQueriesToDriver() 152 */ 153 function _fillQueries () { 154 $this->_queries[NEWSLETTER_ALL] = "SELECT lst_id, lst_name, lst_comment, lst_nb_articles " . "FROM " . $GLOBALS['table_prefix']. "_cm_lists " . "ORDER BY lst_name"; 155 } 156 157 // }}} 158 159 // {{{ getTabModelePlusQueued() 160 161 /** 162 * This function will return an array organized, depending on your newsletter 163 * It will help to manage multiples letters and be able to consult the percentage of launch letter 164 */ 165 function getTabModelePlusQueued () { 166 $db = &$this->_getDB(); 167 168 if (DB::isError($db)) { 169 return PEAR::raiseError("[" . get_class($this). " DB_newsletterlistData : getTabModelePlusQueued()] " . $db->getMessage(). "", null, null, null, null, null, false); 170 } 171 172 $sqlQuery = " SELECT * "; 173 $sqlQuery .= " FROM spip_cm_posts, spip_cm_lists "; 174 $sqlQuery .= " INNER JOIN spip_cm_posts_queued "; 175 $sqlQuery .= " ON spip_cm_posts.pst_id = spip_cm_posts_queued.pst_id "; 176 $sqlQuery .= " WHERE spip_cm_posts.lst_id = spip_cm_lists.lst_id"; 177 $sqlQuery .= " ORDER BY spip_cm_posts_queued.psq_date DESC"; 178 179 $result = $db->query($sqlQuery); 180 $tabReturn = array(); 181 182 if (DB::isError($result)) { 183 return PEAR::raiseError("[" . get_class($this). " DB_newsletterlistData : getTabModelePlusQueued()] " . $result->getMessage(). "", null, null, null, null, null, false); 184 } 185 else { 186 while ($row = $result->fetchRow()) { 187 $tabReturn[$row['lst_name']][$row['pst_id']] = $row; 188 } 189 } 190 191 return ($tabReturn); 192 } 193 // }}} 194 } 195 ?>
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 |