Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Backup/BackupTable.php
Строк: 76
<?php
namespace ConcreteCoreBackup;
use 
Loader;
class 
BackupTable {

   
//Public Class members
    
public $str_createTableSql"";
    public 
$str_insertionSql"";
    
//Private Class Members
    
private $db "";
    private 
$str_tablename"";
    private 
$arr_fields = Array();
    private 
$arr_fieldtypes = Array();
    private 
$rs_table;
    
/**
    * @desc class constructor, should load up the table information and create table sql and
    * insert statements
    * @param string $table case sensitive table name of the table to be processed
    **/
    
public function __construct($table)    {
        
$this->db Loader::db();
        
$this->db->setFetchMode(ADODB_FETCH_BOTH);
        if (
trim($table) == "") {
            return 
false;
        }
        
$this->str_tablename $table;
        
$this->rs_table $this->db->Execute("SELECT * FROM ".$this->str_tablename);
        if (!
$this->rs_table) {
            print 
"Error while retrieving data from"$this->str_tablename;
        }
        else {
            
$this->rs_table->MoveFirst();
            
//            while (!$rs_table->EOF){
                 
for ($f_it=0$f_it<$this->rs_table->FieldCount();$f_it++) {
                  
$obj_fld $this->rs_table->FetchField($f_it);
                  
$str_fieldtype $this->rs_table->MetaType($obj_fld->type);
//                 }
            
}
            
$this->generateCreateTableSql();
            
$this->generateDataInsertionSql();
            
$this->rs_table->Close();
        }
    }

    
/**
    * @desc determines weather or not a adodb field type is a quoted type
    * @param string $type the adodb field type specifier (C,X,B,D,T,L,I,N,R) see manual
    * @return boolean
    **/
    
public function isQuotedType($type)    {
        switch (
$type) {
            case 
"C":
            case 
"X":
            case 
"B":
         case 
"D":
         case 
"T":
                return 
true;
                break;
            default:
                return 
false;
        }
    }
        
/**
         * generateCreateTableSql
         * @desc Queries table for creation SQL and sets class variable
         * @access public
         * @return void
         */
        
public function generateCreateTableSql() {
        
$rs_createsql $this->db->Execute("SHOW CREATE TABLE "$this->str_tablename);
        if (!
$rs_createsql){
            print 
"Error while retrieving table creation SQL";
        }
        else {
            
$this->str_createTableSql preg_replace('/CREATE TABLE/','CREATE TABLE IF NOT EXISTS',$rs_createsql->fields['Create Table']). ";";
            
$rs_createsql->close();
        }
    }

    public function 
generateDataInsertionSql() {
        
$this->rs_table->MoveFirst(); // Just in case
        
while (!$this->rs_table->EOF) {
            
$arr_rowData = Array();
            for(
$int_cflds 0;$int_cflds $this->rs_table->FieldCount();$int_cflds++) {
                
$obj_fld $this->rs_table->FetchField($int_cflds);
                
$str_fieldtype $this->rs_table->MetaType($obj_fld->type);
                if (
$this->isQuotedType($str_fieldtype)) {
                    
$str_fieldData $this->db->qstr($this->rs_table->fields[$obj_fld->name]);
                    if (
$str_fieldData == "") {
                       
$str_fieldData "''";
                    }
                }
                else {
                    
$str_fieldData $this->rs_table->fields[$obj_fld->name];
                    if (
$str_fieldData == "") {
                       
$str_fieldData "NULL";
                    }
                }
                
$arr_rowData[] = $str_fieldData;
            }
            if (
$this->str_insertionSql == "") {
                
$this->str_insertionSql "INSERT INTO "$this->str_tablename ." VALUES(".implode(",",$arr_rowData).")";
            }
            else {
                
$this->str_insertionSql .= "n ,(".implode(",",$arr_rowData).")";
            }
            
$this->rs_table->MoveNext();
            }
         if (
$this->str_insertionSql != "") {
            
$this->str_insertionSql .= ";";
         }
    }
}
Онлайн: 1
Реклама