diff options
Diffstat (limited to 'plugins/grum_plugins_classes-2/tables.class.inc.php')
-rwxr-xr-x | plugins/grum_plugins_classes-2/tables.class.inc.php | 447 |
1 files changed, 0 insertions, 447 deletions
diff --git a/plugins/grum_plugins_classes-2/tables.class.inc.php b/plugins/grum_plugins_classes-2/tables.class.inc.php deleted file mode 100755 index f29092caa..000000000 --- a/plugins/grum_plugins_classes-2/tables.class.inc.php +++ /dev/null @@ -1,447 +0,0 @@ -<?php - -/* ----------------------------------------------------------------------------- - class name: manage_tables - class version: 1.3 - date: 2007-12-02 - ------------------------------------------------------------------------------ - author: grum at grum.dnsalias.com - << May the Little SpaceFrog be with you >> - ------------------------------------------------------------------------------ - - this class provides base functions to manage tables while plugin installation - - constructor manage_tables($tables) - - (public) function create_tables($tables_def) - - (public) function update_tables_fields($tables_alteration) - - (public) function drop_tables() - - (public) function rename_tables($list) -v1.1 - - (public) function tables_exists() -v1.1 - - (public) function export($filename, $options, $tables, $infos) -v1.3 - - (public) function multi_queries($queries) -v1.3 - - (public) function import($filename) -v1.3 - - ------------------------------------------------------------------------------ - v1.1 + add rename_tables($list) function - + add tables_exists() function - v1.2 + add export($filename, $options, $tables) function - v1.3 + modify export($filename, $options, $tables, $infos, $resultboolean) function - + new parameters '$infos' allows to add some information on the - exported file - + add 'delete' and 'colnames' options - + $resultbooelan option for return - + add multi_queries($queries) function - + add import($filename) function - - -------------------------------------------------------------------------- */ -class manage_tables -{ - var $tables; //array of tables names - var $version = "1.3"; - - function manage_tables($tables) - { - $this->tables = $tables; - } - - /* - create tables - $tables_def is an array of SQL CREATE queries - - return true if everything is ok, otherwise tablename - */ - function create_tables($tables_def) - { - //deleting tables if exists - $this->drop_tables(); - - for($i=0;$i<count($tables_def);$i++) - { - $result=pwg_query($tables_def[$i]); - if(!$result) - { - //if an error occurs, deleting created tables - $this->drop_tables(); - return(false); - } - } - return(true); - } - - /* update tables definition - $tables_alteration : array of arrays - example : - $tables_alteration['table1']=array( - "attribute1" => " ADD COLUMN `attribute1` text null default ''", - "attribute2" => " ADD COLUMN `attribute2` text null default ''")); - $tables_alteration['table2']=array( - "attribute1" => " ADD COLUMN `attribute1` text null default ''", - "attribute2" => " ADD COLUMN `attribute2` text null default ''")); - - return true if no error, otherwise return table.fields of error - */ - function update_tables_fields($tables_alteration) - { - if(!is_array($tables_alteration)) - { - return(''); - } - - reset($tables_alteration); - while (list($key, $val) = each($tables_alteration)) - { - $sql="SHOW COLUMNS FROM $key"; - $result=pwg_query($sql); - if($result) - { - $columns=array(); - while($row=mysql_fetch_assoc($result)) - { - array_push($columns, $row['Field']); - } - - reset($val); - while (list($attname, $sql) = each($val)) - { - if(!in_array($attname, $columns)) - { - $result=pwg_query("ALTER TABLE `$key` ".$sql); - if(!$result) - { - return($key.".".$attname); - } - } - } - } - } - return(true); - } - - - /* - delete tables listed in $this->tables_list - */ - function drop_tables() - { - foreach($this->tables as $key => $table_name) - { - $sql="DROP TABLE IF EXISTS ".$table_name; - $result=pwg_query($sql); - } - } - - /* - rename tables name of list - $list is an array('old_name' => 'new_name') - return true if ok, else old table name - */ - function rename_tables($list) - { - $tmplist=array_flip($this->tables); - foreach($list as $key => $val) - { - if(isset($tmplist[$key])) - { - $this->tables[$tmplist[$key]] = $val; - $sql="ALTER TABLE `$key` RENAME TO `$val`"; - if(!pwg_query($sql)) - { - return($key); - } - } - else - { - return($key); - } - } - return(true); - } - - /* - return true if all listed tables exists - */ - function tables_exists() - { - $list=array_flip($this->tables); - $sql="SHOW TABLES"; - $result=pwg_query($sql); - if($result) - { - while($row=mysql_fetch_row($result)) - { - if(isset($list[$row[0]])) - { - array_splice($list, $row[0],1); - } - } - } - if(count($list)>0) - { - return(false); - } - else - { - return(true); - } - } - - /* - export all tables as SQL in a text file - - each query end with a " -- EOQ" ; it's just a method to increase parsing for - import function - - $filename : name of the file - $options : array of options like - array( - 'drop' => true/false, //add DROP TABLE statements - 'create' => true/false, //add CREATE TABLE statements - 'insert' => true/false, //add INSERT statements - 'delete' => true/false, //add delete statements - 'colnames' => true/false, //add columns names for inserts statements - ) - $tables : array of tables names to export - array('tablename1', 'tablenamen', 'tablename3', ...) - if empty, assume that all tables have to be exported - $infos : additional info written in exported file (as comment) - $resultboolean : if true, result is true/false ; - if false, if result, return a string with nfo about export - */ - function export($filename, $options=array(), $tables=array(), $infos="", $resultboolean=true) - { - $defaultopt=array( - 'drop' => true, - 'create' => true, - 'insert' => true, - 'delete' => false, - 'colnames' => false - ); - - if(!isset($options['drop'])) - { - $options['drop']=$defaultopt['drop']; - } - if(!isset($options['create'])) - { - $options['create']=$defaultopt['create']; - } - if(!isset($options['insert'])) - { - $options['insert']=$defaultopt['insert']; - } - if(!isset($options['delete'])) - { - $options['delete']=$defaultopt['delete']; - } - if(!isset($options['colnames'])) - { - $options['colnames']=$defaultopt['colnames']; - } - if(count($tables)==0) - { - $tables=$this->tables; - } - - $resultnfo=''; - - $returned=true; - $text=' --- *************************************************************** -- EOQ --- * SQL export made with Grum Plugins Classes (Export tool r'.$this->version.') -- EOQ --- * Export date :'.date('Y-m-d H:i:s').' -- EOQ --- * Export options :'; -if($options['drop']){$text.=' [drop]';} -if($options['delete']){$text.=' [delete]';} -if($options['create']){$text.=' [create]';} -if($options['insert']){$text.=' [insert]';} -if($options['colnames']){$text.=' [colnames]';} -$text.=" -- EOQ"; -if($infos!="") -{ - $text.=' --- * '.$infos." -- EOQ"; -} -$text.=' --- *************************************************************** -- EOQ - -'; - foreach($tables as $key => $val) - { - $countelems=0; - - $text.=" - --- *************************************************************** -- EOQ --- * Statements for ".$this->tables[$key]." table -- EOQ --- *************************************************************** -- EOQ -"; - - if($options['drop']) - { - $text.=sprintf("DROP TABLE `%s`; -- EOQ\n", $this->tables[$key]); - } - - if($options['delete']) - { - $text.=sprintf("DELETE FROM `%s`; -- EOQ\n", $this->tables[$key]); - } - - if($options['create']) - { - $sql='SHOW CREATE TABLE '.$this->tables[$key]; - $result=pwg_query($sql); - if($result) - { - while($row=mysql_fetch_row($result)) - { - $text.=sprintf("%s; -- EOQ\n", $row[1]); - } - } - else - { - $returned=false; - } - } - - if($options['insert']) - { - $colnames=""; - if($options['colnames']) - { - $sql='SHOW COLUMNS FROM `'.$this->tables[$key].'`'; - $result=pwg_query($sql); - if($result) - { - $tmp=array(); - while($row=mysql_fetch_row($result)) - { - $tmp[]=$row[0]; - } - } - $colnames='('.implode(',', $tmp).')'; - } - - $sql='SELECT * FROM '.$this->tables[$key]; - $result=pwg_query($sql); - if($result) - { - while($row=mysql_fetch_row($result)) - { - foreach($row as $key2 => $val2) - { - $row[$key2]="'".addslashes($val2)."'"; - } - $text.=sprintf("INSERT INTO `%s` %s VALUES(%s); -- EOQ\n", $this->tables[$key], $colnames, implode(', ', $row)); - $countelems++; - } - } - else - { - $returned=false; - } - $resultnfo.=$key.':'.$countelems.'@'; - } - } - $fhandle=fopen($filename, 'wb'); - if($fhandle) - { - fwrite($fhandle, $text); - fclose($fhandle); - } - else - { - $returned=false; - } - if(($resultboolean==false)&&($returned)) - { - $returned=$resultnfo; - } - return($returned); - } - - /* - import an .sql file - $filename : name of the file - 'errors' : -1 file don't exists - -2 can't open file - */ - function import($filename) - { - $return = array( - 'numinsert'=>0, - 'numdelete'=>0, - 'numdrop'=>0, - 'numcreate'=>0, - 'errors'=>array(), - 'total_ok'=>0 - ); - - if(file_exists($filename)) - { - $fhandle=fopen($filename, 'r'); - if($fhandle) - { - $queries=fread($fhandle, filesize($filename)); - fclose($fhandle); - $return=$this->multi_queries($queries); - } - else - { - $return['errors']=-2; - } - } - else - { - $return['errors']=-1; - } - return($return); - } - - /* - execute multiple query - each query have to be separated by a "-- EOQ\n" - - $queries : sql queries - */ - function multi_queries($queries) - { - $queries_list=preg_split( - '/\s*;?\s*--\s+EOQ[\r\n]{1}/i', $queries, -1, PREG_SPLIT_NO_EMPTY); - - $return = array( - 'numinsert'=>0, - 'numdelete'=>0, - 'numdrop'=>0, - 'numcreate'=>0, - 'errors'=>array(), - 'total_ok'=>0 - ); - - $i=0; - foreach($queries_list as $key => $sql) - { - $i++; - @$result=pwg_query($sql); - if($result) - { - $return['total_ok']++; - if(preg_match('/\b[\s]*insert[\s]+/i', $sql)>0) - {$return['numinsert']++;} - elseif(preg_match('/\b[\s]*drop[\s]+/i', $sql)>0) - {$return['numdrop']++;} - elseif(preg_match('/\b[\s]*delete[\s]+/i', $sql)>0) - {$return['numdelete']++;} - elseif(preg_match('/\b[\s]*create[\s]+/i',$sql)>0) - {$return['numcreate']++;} - } - else - { - array_push($return['errors'], '['.$i.'] '.$sql); - } - } - return($return); - } - -} //class - - -?>
\ No newline at end of file |