[ 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/ -> messagelistdata.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 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 .= "&nbsp;&nbsp;".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 = "&nbsp;";
 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  ?>


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