[ 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/DBWrappers2/ -> DBSearchWrapper.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  require_once dirname(__FILE__). "/DBWrapper.php";
  20  
  21  class DBSearchWrapper extends DBWrapper {
  22      function &factory ($dbParameters, $dbOptions = null) {
  23          if (file_exists(
  24                  dirname(
  25                      __FILE__). "/" . $dbParameters->_dbEngine . "/DBSearchWrapper_" . $dbParameters->_dbEngine . ".php")
  26              == false) {
  27              include_once (dirname(__FILE__). "/common/DBSearchWrapper_common.php");
  28              $classname = "DBSearchWrapper_common";
  29          }
  30          else {
  31              include_once (dirname(
  32                                __FILE__). "/" . $dbParameters->_dbEngine . "/DBSearchWrapper_" . $dbParameters->_dbEngine . ".php");
  33              $classname = "DBSearchWrapper_" . $dbParameters->_dbEngine;
  34          }
  35  
  36          if (!class_exists($classname)) {
  37              return PEAR::raiseError("Cannot instanciate class $classname", null, null, null, null, null, false);
  38          }
  39  
  40          $obj = &new $classname;
  41          $result = $obj->setDbParameters($dbParameters);
  42  
  43          if ($dbOptions != null) {
  44              $obj->setDbOptions($dbOptions);
  45          }
  46  
  47          if (PEAR::isError($result)) {
  48              return $result;
  49          }
  50          else {
  51              return $obj;
  52          }
  53      }
  54  
  55  	function query ($query) {
  56          $db = $this->_getDB();
  57  
  58          if (DB::isError($db)) {
  59              return PEAR::raiseError("[" . get_class($this). " DBSearchWrapper : query] " . $db->getMessage(). "", null,
  60                                      null, null,
  61                                      null, null,
  62                                      false);
  63          }
  64  
  65          if (ereg("<!spipDATE_COURANTEspip!>", $query)) {
  66              $maDate = new Date();
  67              $query = ereg_replace("<!spipDATE_COURANTEspip!>", $maDate->getDate(DATE_FORMAT_ISO), $query);
  68          }
  69  
  70          //echo "\n\n<br>requete >> " . $query . '<br>';
  71          $dbResult = $db->query($query);
  72  
  73          if (DB::isError($dbResult)) {
  74              return PEAR::raiseError("[" . get_class($this). " DBSearchWrapper : query] " . $dbResult->getMessage(). "",
  75                                      null,
  76                                      null,
  77                                      null,
  78                                      null,
  79                                      null,
  80                                      false);
  81          }
  82  
  83          if (eregi("SELECT (.*) FROM (.*) WHERE (.*)", $query, $params)) {
  84              $champs = explode(",", $params[1]);
  85              $champs2 = explode(" AS ", $champs[0]);
  86              $champs3 = explode(".", $champs2[0]);
  87              //En attendant d'avoir une vraie grammaire pour virer ces cochonneries
  88              $champs3[1] = str_replace(')', '', $champs3[1]);
  89  
  90              $id_object = $champs3[1];
  91  
  92              $champs = explode(",", $params[2]);
  93              $champs2 = explode(" ", $champs[0]);
  94              $table = $champs2[0];
  95          }
  96  
  97          while ($row = $dbResult->fetchRow()) {
  98              $query
  99                  = "SELECT $table.*, " . $row['points']. " points from $table WHERE $id_object=" . $row['id_object']. "";
 100  
 101              $this->_dbResult = $db->query($query);
 102              $dbResult2 = $this->_dbResult;
 103  
 104              if (DB::isError($this->_dbResult)) {
 105                  return PEAR::raiseError("[" . get_class($this). " DBSearchWrapper : query] " . $dbResult2->getMessage(). "", null, null, null, null, null, false);
 106              }
 107              $this->_rowsBuilder();
 108          }
 109  
 110          $this->_limitRows();
 111      }
 112  }
 113  ?>


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