Source for file jDbTools.class.php

Documentation is available at jDbTools.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db
  5. @author     Croes Gérald, Laurent Jouanneau
  6. @contributor Laurent Jouanneau, Gwendal Jouannic, Julien Issler
  7. @copyright  2001-2005 CopixTeam, 2005-2006 Laurent Jouanneau
  8. @copyright  2008 Gwendal Jouannic
  9. @copyright  2008 Julien Issler
  10. *
  11. *  This class was get originally from the Copix project (CopixDbTools, CopixDbConnection, Copix 2.3dev20050901, http://www.copix.org)
  12. *  Some lines of code are still copyrighted 2001-2005 CopixTeam (LGPL licence).
  13. *  Initial authors of this Copix classes are Gerald Croes and Laurent Jouanneau,
  14. *  and this class was adapted/improved for Jelix by Laurent Jouanneau
  15. *
  16. @link        http://www.jelix.org
  17. @licence     http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  18. */
  19.  
  20. /**
  21.  *
  22.  * @package  jelix
  23.  * @subpackage db
  24.  */
  25.  class jDbFieldProperties {
  26.     /**
  27.      * type of the field
  28.      * @var string 
  29.      */
  30.     public $type;
  31.  
  32.     /**
  33.      * field name
  34.      * @var string 
  35.      */
  36.     public $name;
  37.  
  38.     /**
  39.      * says if the field can be null or not
  40.      * @var boolean 
  41.      */
  42.     public $notNull=true;
  43.  
  44.     /**
  45.      * says if the field is the primary key
  46.      * @var boolean 
  47.      */
  48.     public $primary=false;
  49.  
  50.     /**
  51.      * says if the field is auto incremented
  52.      * @var boolean 
  53.      */
  54.     public $autoIncrement=false;
  55.  
  56.     /**
  57.      * default value
  58.      * @var string 
  59.      */
  60.     public $default='';
  61.  
  62.     /**
  63.      * says if there is a default value
  64.      * @var boolean 
  65.      */
  66.     public $hasDefault = false;
  67.  
  68.     public $length = 0;
  69.     
  70.      /**
  71.      * if there is a sequence
  72.      * @var string 
  73.      */
  74.     public $sequence = false;
  75. }
  76.  
  77.  
  78. /**
  79.  * classe d'outils pour gérer une base de données
  80.  * @package  jelix
  81.  * @subpackage db
  82.  */
  83. abstract class jDbTools {
  84.  
  85.     /**
  86.     * the database connector
  87.     * @var jDbConnection 
  88.     */
  89.     protected $_connector;
  90.  
  91.     /**
  92.     *
  93.     */
  94.     function __construct$connector){
  95.         $this->_connector = $connector;
  96.     }
  97.  
  98.     /**
  99.     * returns the table list
  100.     */
  101.     public function getTableList (){
  102.         return $this->_getTableList ();
  103.     }
  104.  
  105.     /**
  106.     * return the field list of a given table
  107.     */
  108.     public function getFieldList ($tableName){
  109.         return $this->_getFieldList ($this->_connector->prefixTable($tableName));
  110.     }
  111.  
  112.     abstract protected function _getTableList ();
  113.     abstract protected function _getFieldList ($tableName);
  114.  
  115.     protected $dbmsStyle = array();
  116.  
  117.     /**
  118.      * regular expression to detect comments and end of query
  119.      */
  120.     protected $dbmsDefaultStyle = array('/^\s*#/''/;\s*$/');
  121.  
  122.     public function execSQLScript ($file{
  123.  
  124.         $lines file($file);
  125.         $cmdSQL '';
  126.         $nbCmd 0;
  127.  
  128.         if(isset($this->dbmsStyle[$this->_connector->dbms])){
  129.             $style=$this->dbmsStyle[$this->_connector->dbms];
  130.         }else{
  131.             $style=$this->dbmsDefaultStyle;
  132.         }
  133.  
  134.         foreach ((array)$lines as $key=>$line{
  135.             if ((!preg_match($style[0],$line))&&(strlen(trim($line))>0)) // la ligne n'est ni vide ni commentaire
  136.                //$line = str_replace("\\'","''",$line);
  137.                //$line = str_replace($this->scriptReplaceFrom, $this->scriptReplaceBy,$line);
  138.  
  139.                 $cmdSQL.=$line;
  140.  
  141.                 if (preg_match($style[1],$line)) {
  142.                     //Si on est à la ligne de fin de la commande on l'execute
  143.                     // On nettoie la commande du ";" de fin et on l'execute
  144.                     $cmdSQL preg_replace($style[1],'',$cmdSQL);
  145.                     $this->_connector->query ($cmdSQL);
  146.                     $nbCmd++;
  147.                     $cmdSQL '';
  148.                 }
  149.             }
  150.         }
  151.         return $nbCmd;
  152.     }
  153. }
  154. ?>

Documentation generated on Wed, 07 Sep 2011 13:47:14 +0200 by phpDocumentor 1.4.3