[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/install/class/ -> dbmanager.php (source)

   1  <?php
   2  //  ------------------------------------------------------------------------ //

   3  //                XOOPS - PHP Content Management System                      //

   4  //                    Copyright (c) 2000 XOOPS.org                           //

   5  //                       <http://www.xoops.org/>                             //

   6  //  ------------------------------------------------------------------------ //

   7  //  This program is free software; you can redistribute it and/or modify     //

   8  //  it under the terms of the GNU General Public License as published by     //

   9  //  the Free Software Foundation; either version 2 of the License, or        //

  10  //  (at your option) any later version.                                      //

  11  //                                                                           //

  12  //  You may not change or alter any portion of this comment or credits       //

  13  //  of supporting developers from this source code or any supporting         //

  14  //  source code which is considered copyrighted (c) material of the          //

  15  //  original comment or credit authors.                                      //

  16  //                                                                           //

  17  //  This program is distributed in the hope that it will be useful,          //

  18  //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

  19  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

  20  //  GNU General Public License for more details.                             //

  21  //                                                                           //

  22  //  You should have received a copy of the GNU General Public License        //

  23  //  along with this program; if not, write to the Free Software              //

  24  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

  25  //  ------------------------------------------------------------------------ //

  26  include_once  XOOPS_ROOT_PATH.'/class/logger.php';
  27  include_once  XOOPS_ROOT_PATH.'/class/database/databasefactory.php';
  28  include_once XOOPS_ROOT_PATH.'/class/database/'.XOOPS_DB_TYPE.'database.php';
  29  include_once XOOPS_ROOT_PATH.'/class/database/sqlutility.php';
  30  
  31  /**

  32  * database manager for XOOPS installer

  33  *

  34  * @author Haruki Setoyama  <haruki@planewave.org>

  35  * @version $Id: dbmanager.php 506 2006-05-26 23:10:37Z skalpa $

  36  * @access public

  37  **/
  38  class db_manager {
  39  
  40      var $s_tables = array();
  41      var $f_tables = array();
  42      var $db;
  43  
  44      function db_manager(){
  45          $this->db = XoopsDatabaseFactory::getDatabase();
  46          $this->db->setPrefix(XOOPS_DB_PREFIX);
  47          $this->db->setLogger(XoopsLogger::instance());
  48      }
  49  
  50      function isConnectable(){
  51          return ($this->db->connect(false) != false) ? true : false;
  52      }
  53      
  54      function dbExists(){
  55          return ($this->db->connect() != false) ? true : false;
  56      }
  57      
  58      function createDB()
  59      {
  60          $this->db->connect(false);
  61      
  62          $result = $this->db->query("CREATE DATABASE ".XOOPS_DB_NAME);
  63      
  64          return ($result != false) ? true : false;
  65      }
  66  
  67      function queryFromFile($sql_file_path){
  68          $tables = array();
  69  
  70          if (!file_exists($sql_file_path)) {
  71              return false;
  72          }
  73          $sql_query = trim(fread(fopen($sql_file_path, 'r'), filesize($sql_file_path)));
  74          SqlUtility::splitMySqlFile($pieces, $sql_query);
  75          $this->db->connect();
  76          foreach ($pieces as $piece) {
  77              $piece = trim($piece);
  78              // [0] contains the prefixed query

  79              // [4] contains unprefixed table name

  80              $prefixed_query = SqlUtility::prefixQuery($piece, $this->db->prefix());
  81              if ($prefixed_query != false ) {
  82                  $table = $this->db->prefix($prefixed_query[4]);
  83                  if($prefixed_query[1] == 'CREATE TABLE'){
  84                      if ($this->db->query($prefixed_query[0]) != false) {
  85                          if(! isset($this->s_tables['create'][$table])){
  86                              $this->s_tables['create'][$table] = 1;
  87                          }
  88                      }else{
  89                          if(! isset($this->f_tables['create'][$table])){
  90                              $this->f_tables['create'][$table] = 1;
  91                          }
  92                      }
  93                  }
  94                  elseif($prefixed_query[1] == 'INSERT INTO'){
  95                      if ($this->db->query($prefixed_query[0]) != false) {
  96                          if(! isset($this->s_tables['insert'][$table])){
  97                              $this->s_tables['insert'][$table] = 1;
  98                          }else{
  99                              $this->s_tables['insert'][$table]++;
 100                          }
 101                      }else{
 102                          if(! isset($this->f_tables['insert'][$table])){
 103                              $this->f_tables['insert'][$table] = 1;
 104                          }else{
 105                               $this->f_tables['insert'][$table]++;
 106                          }
 107                      }
 108                  }elseif($prefixed_query[1] == 'ALTER TABLE'){
 109                      if ($this->db->query($prefixed_query[0]) != false) {
 110                          if(! isset($this->s_tables['alter'][$table])){
 111                              $this->s_tables['alter'][$table] = 1;
 112                          }
 113                      }else{
 114                          if(! isset($this->s_tables['alter'][$table])){
 115                              $this->f_tables['alter'][$table] = 1;
 116                          }
 117                      }
 118                  }elseif($prefixed_query[1] == 'DROP TABLE'){
 119                      if ($this->db->query('DROP TABLE '.$table) != false) {
 120                          if(! isset($this->s_tables['drop'][$table])){
 121                              $this->s_tables['drop'][$table] = 1;
 122                          }
 123                      }else{
 124                          if(! isset($this->s_tables['drop'][$table])){
 125                              $this->f_tables['drop'][$table] = 1;
 126                          }
 127                      }
 128                  }
 129              }
 130          }
 131          return true;
 132      }
 133  
 134      function report(){
 135          $content = "<table align='center'><tr><td align='left'>\n";
 136          if (isset($this->s_tables['create'])) {
 137              foreach($this->s_tables['create'] as $key => $val){
 138                  $content .= _OKIMG.sprintf(_INSTALL_L45, "<b>$key</b>")."<br />\n";
 139              }
 140          }
 141          if (isset($this->s_tables['insert'])) {
 142              foreach($this->s_tables['insert'] as $key => $val){
 143                  $content .= _OKIMG.sprintf(_INSTALL_L119, $val, "<b>$key</b>")."<br />\n";
 144              }
 145          }
 146          if (isset($this->s_tables['alter'])) {
 147              foreach($this->s_tables['alter'] as $key => $val){
 148                  $content .= _OKIMG.sprintf(_INSTALL_L133, "<b>$key</b>")."<br />\n";
 149              }
 150          }
 151          if (isset($this->s_tables['drop'])) {
 152              foreach($this->s_tables['drop'] as $key => $val){
 153                  $content .= _OKIMG.sprintf(_INSTALL_L163, "<b>$key</b>")."<br />\n";
 154              }
 155          }
 156          $content .= "<br />\n";
 157          if (isset($this->f_tables['create'])) {
 158              foreach($this->f_tables['create'] as $key => $val){
 159                  $content .= _NGIMG.sprintf(_INSTALL_L118, "<b>$key</b>")."<br />\n";
 160              }
 161          }
 162          if (isset($this->f_tables['insert'])) {
 163              foreach($this->f_tables['insert'] as $key => $val){
 164                  $content .= _NGIMG.sprintf(_INSTALL_L120, $val, "<b>$key</b>")."<br />\n";
 165              }
 166          }
 167          if (isset($this->f_tables['alter'])) {
 168              foreach($this->f_tables['alter'] as $key => $val){
 169                  $content .= _NGIMG.sprintf(_INSTALL_L134, "<b>$key</b>")."<br />\n";
 170              }
 171          }
 172          if (isset($this->f_tables['drop'])) {
 173              foreach($this->f_tables['drop'] as $key => $val){
 174                  $content .= _NGIMG.sprintf(_INSTALL_L164, "<b>$key</b>")."<br />\n";
 175              }
 176          }
 177          $content .= "</td></tr></table>\n";
 178          return $content;
 179      }
 180  
 181      function query($sql){
 182          $this->db->connect();
 183          return $this->db->query($sql);
 184      }
 185  
 186      function prefix($table){
 187          $this->db->connect();
 188          return $this->db->prefix($table);
 189      }
 190  
 191      function fetchArray($ret){
 192          $this->db->connect();
 193          return $this->db->fetchArray($ret);
 194      }
 195  
 196      function insert($table, $query){
 197          $this->db->connect();
 198          $table = $this->db->prefix($table);
 199          $query = 'INSERT INTO '.$table.' '.$query;
 200          if(!$this->db->queryF($query)){
 201              //var_export($query);

 202              //echo '<br />' . mysql_error() . '<br />';

 203              if(!isset($this->f_tables['insert'][$table])){
 204                  $this->f_tables['insert'][$table] = 1;
 205              }else{
 206                  $this->f_tables['insert'][$table]++;
 207              }
 208              return false;
 209          }else{
 210              if(!isset($this->s_tables['insert'][$table])){
 211                  $this->s_tables['insert'][$table] = 1;
 212              }else{
 213                  $this->s_tables['insert'][$table]++;
 214              }
 215              return $this->db->getInsertId();
 216          }
 217      }
 218  
 219      function isError(){
 220          return (isset($this->f_tables)) ? true : false;
 221      }
 222  
 223      function deleteTables($tables){
 224          $deleted = array();
 225          $this->db->connect();
 226          foreach ($tables as $key => $val) {
 227              if(! $this->db->query("DROP TABLE ".$this->db->prefix($key))){
 228                  $deleted[] = $ct;
 229              }
 230          }
 231          return $deleted;
 232      }
 233  
 234  	function tableExists($table){
 235          $table = trim($table);
 236          $ret = false;
 237          if ($table != '') {
 238              $this->db->connect();
 239              $sql = 'SELECT * FROM '.$this->db->prefix($table);
 240              $ret = (false != $this->db->query($sql)) ? true : false;
 241          }
 242          return $ret;
 243      }
 244  }
 245  
 246  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics