[ 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/ -> newsletterlistdata.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 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>&nbsp;&nbsp;<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  ?>


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