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-2010 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.  * Description of a field of a table
  22.  * @package  jelix
  23.  * @subpackage db
  24.  * @see jDbTools::getFieldList
  25.  */
  26.  class jDbFieldProperties {
  27.     /**
  28.      * type of the field
  29.      * @var string 
  30.      */
  31.     public $type;
  32.  
  33.     /**
  34.      * field name
  35.      * @var string 
  36.      */
  37.     public $name;
  38.  
  39.     /**
  40.      * says if the field can be null or not
  41.      * @var boolean 
  42.      */
  43.     public $notNull=true;
  44.  
  45.     /**
  46.      * says if the field is the primary key
  47.      * @var boolean 
  48.      */
  49.     public $primary=false;
  50.  
  51.     /**
  52.      * says if the field is auto incremented
  53.      * @var boolean 
  54.      */
  55.     public $autoIncrement=false;
  56.  
  57.     /**
  58.      * default value
  59.      * @var string 
  60.      */
  61.     public $default='';
  62.  
  63.     /**
  64.      * says if there is a default value
  65.      * @var boolean 
  66.      */
  67.     public $hasDefault = false;
  68.  
  69.     public $length = 0;
  70.     
  71.      /**
  72.      * if there is a sequence
  73.      * @var string 
  74.      */
  75.     public $sequence = false;
  76. }
  77.  
  78. /**
  79.  * Provides utilities methods for a database
  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.     * @return array  array of jDbFieldProperties
  108.     */
  109.     public function getFieldList ($tableName){
  110.         return $this->_getFieldList ($this->_connector->prefixTable($tableName));
  111.     }
  112.  
  113.     abstract protected function _getTableList ();
  114.     abstract protected function _getFieldList ($tableName);
  115.  
  116.     /**
  117.      * regular expression to detect comments and end of query
  118.      */
  119.     protected $dbmsStyle = array('/^\s*#/''/;\s*$/');
  120.  
  121.     public function execSQLScript ($file{
  122.         if(!isset($this->_connector->profile['table_prefix']))
  123.             $prefix '';
  124.         else
  125.             $prefix $this->_connector->profile['table_prefix'];
  126.  
  127.         $lines file($file);
  128.         $cmdSQL '';
  129.         $nbCmd 0;
  130.  
  131.          $style=$this->dbmsStyle;
  132.  
  133.         foreach ((array)$lines as $key=>$line{
  134.             if ((!preg_match($style[0],$line))&&(strlen(trim($line))>0)) // la ligne n'est ni vide ni commentaire
  135.                //$line = str_replace("\\'","''",$line);
  136.                //$line = str_replace($this->scriptReplaceFrom, $this->scriptReplaceBy,$line);
  137.  
  138.                 $cmdSQL.=$line;
  139.  
  140.                 if (preg_match($style[1],$line)) {
  141.                     //Si on est à la ligne de fin de la commande on l'execute
  142.                     // On nettoie la commande du ";" de fin et on l'execute
  143.                     $cmdSQL preg_replace($style[1],'',$cmdSQL);
  144.                     $cmdSQL str_replace('%%PREFIX%%'$prefix$cmdSQL);
  145.                     $this->_connector->query ($cmdSQL);
  146.                     $nbCmd++;
  147.                     $cmdSQL '';
  148.                 }
  149.             }
  150.         }
  151.         return $nbCmd;
  152.    }
  153. }

Documentation generated on Thu, 22 Mar 2012 22:15:22 +0100 by phpDocumentor 1.4.3