Guest User

Untitled

a guest
Jul 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.54 KB | None | 0 0
  1. class dump{
  2.     var $no_error = 0;
  3.     var $query_id = 0;
  4.     var $query_count = 0;
  5.     var $query_time = 0;
  6.     var $query_array = array();
  7.     var $table_fields = array();
  8.     function get_table_def_mysql($table, $crlf = "<br>") {
  9.         global $site_db, $tables_info;
  10.         $dump .= "\r\n## Ломаем таблицу " . $table . "\r\n";
  11.         $dump .= "DROP TABLE IF EXISTS " . $table . ";\r\n";
  12.         $dump .= "## Сструктура таблицы " . $table . "\r\n";
  13.         $this->query('SET SQL_QUOTE_SHOW_CREATE = 0');
  14.         if($row = $this->query_firstrow("SHOW CREATE TABLE " . $table)){
  15.             $dump .= str_replace("\n", $crlf, $row[1]);
  16.         }
  17.         $dump .= " ;";
  18.         $this->free_result();
  19.         return $dump;
  20.     }
  21.     function query_firstrow($query = "") {
  22.         if($query != ""){
  23.             $this->query($query);
  24.         }
  25.         $result = $this->fetch_array($this->query_id);
  26.         $this->free_result();
  27.         return $result;
  28.     }
  29.     function query($query = ""){
  30.         if($query != ""){
  31.             if((defined("PRINT_QUERIES") && PRINT_QUERIES == 1) || (defined("PRINT_STATS") && PRINT_STATS == 1)){
  32.                 $startsqltime = explode(" ", microtime());
  33.             }
  34.             if(!$this->query_id = @mysql_query($query)){
  35.                 $this->error("<b>Bad SQL Query</b>: ".htmlentities($query)."<br /><b>".mysql_error()."</b>");
  36.             }
  37.             if((defined("PRINT_QUERIES") && PRINT_QUERIES == 1) || (defined("PRINT_STATS") && PRINT_STATS == 1)){
  38.                 $endsqltime = explode(" ", microtime());
  39.                 $totalsqltime = round($endsqltime[0]-$startsqltime[0]+$endsqltime[1]-$startsqltime[1],3);
  40.                 $this->query_time += $totalsqltime;
  41.                 $this->query_count++;
  42.             }
  43.             if(defined("PRINT_QUERIES") && PRINT_QUERIES == 1){
  44.                 $query_stats = htmlentities($query);
  45.                 $query_stats .= "<br><b>Querytime:</b> ".$totalsqltime;
  46.                 $this->query_array[] = $query_stats;
  47.             }
  48.             return $this->query_id;
  49.         }
  50.     }
  51.     function fetch_array($query_id = -1, $assoc = 0){
  52.         if($query_id != -1){
  53.             $this->query_id = $query_id;
  54.         }
  55.         if($this->query_id){
  56.             return ($assoc) ? mysql_fetch_assoc($this->query_id) : mysql_fetch_array($this->query_id);
  57.         }
  58.     }
  59.     function free_result($query_id = -1){
  60.         if($query_id != -1){
  61.             $this->query_id = $query_id;
  62.         }
  63.         return @mysql_free_result($this->query_id);
  64.     }
  65.     function get_numrows($query_id = -1){
  66.         if($query_id != -1){
  67.             $this->query_id = $query_id;
  68.         }
  69.         return mysql_num_rows($this->query_id);
  70.     }
  71.     function get_insert_id(){
  72.         return ($this->connection) ? @mysql_insert_id($this->connection) : 0;
  73.     }
  74.     function get_numfields($query_id = -1){
  75.         if($query_id != -1){
  76.             $this->query_id = $query_id;
  77.         }
  78.         return @mysql_num_fields($this->query_id);
  79.     }
  80.     function get_fieldname($query_id = -1, $offset){
  81.         if($query_id != -1){
  82.             $this->query_id = $query_id;
  83.         }
  84.         return @mysql_field_name($this->query_id, $offset);
  85.     }
  86.     function get_fieldtype($query_id = -1, $offset){
  87.         if($query_id != -1){
  88.             $this->query_id = $query_id;
  89.         }
  90.         return @mysql_field_type($this->query_id, $offset);
  91.     }
  92.     function get_table_fields($table){
  93.         if(!empty($this->table_fields[$table])){
  94.             return $this->table_fields[$table];
  95.         }
  96.         $this->table_fields[$table] = array();
  97.         $result = $this->query("SHOW FIELDS FROM $table");
  98.         while($row = $this->fetch_array($result)){
  99.             $this->table_fields[$table][$row['Field']] = $row['Type'];
  100.         }
  101.         return $this->table_fields[$table];
  102.     }
  103.  
  104.     function error($errmsg, $halt = 0){
  105.         if(!$this->no_error){
  106.             global $user_info;
  107.             if(isset($user_info['user_level']) && $user_info['user_level'] == ADMIN){
  108.                 echo "<br /><font color='#FF0000'><b>DB Error</b></font>: ".$errmsg."<br />";
  109.             } else {
  110.                 echo "<br /><font color='#FF0000'><b>An unexpected error occured. Please try again later." . $errmsg . "</b></font><br />";
  111.             }
  112.             if($halt){
  113.                 exit;
  114.             }
  115.         }
  116.     }
  117.  
  118.     function get_table_content_mysql($table, $crlf = "<br>") {
  119.         $dump .= "\r\n";
  120.         $dump .= "##\r\n##Дамп данных для таблицы " . $table . "\r\n##\r\n";
  121.         $result = $this->query("SELECT * FROM " . $table);
  122.         if($result && mysql_num_rows($result)){
  123.             $column_list = "";
  124.             $num_fields = @mysql_num_fields($result);
  125.             for($i = 0; $i < $num_fields; $i++){
  126.                 $column_list .= (($column_list != "") ? ", " : "").$this->get_fieldname($result, $i);
  127.             }
  128.         }
  129.         while($row = mysql_fetch_array($result)){
  130.             $dump .= "\r\nINSERT INTO " . $table . " (" . $column_list . ") VALUES (";
  131.             for($i = 0; $i < $num_fields; $i++){
  132.                 $dump .= ($i > 0) ? ", " : "";
  133.                 if(!isset($row[$i])){
  134.                     $dump .= "NULL";
  135.                 }
  136.                 elseif($row[$i] == "0" || $row[$i] != ""){
  137.                     $type = @mysql_num_fields($result, $i);
  138.                     if($type == "tinyint" || $type == "smallint" || $type == "mediumint" || $type == "int" || $type == "bigint"){
  139.                         $dump .= $row[$i];
  140.                     }
  141.                     else {
  142.                         $search_array = array('\\', '\'', "\x00", "\x0a", "\x0d", "\x1a");
  143.                         $replace_array = array('\\\\', '\\\'', '\0', '\n', '\r', '\Z');
  144.                         $row[$i] = str_replace($search_array, $replace_array, $row[$i]);
  145.                         $dump .= htmlspecialchars("'".$row[$i]."'");
  146.                     }
  147.                 }
  148.                 else {
  149.                     $dump .= "''";
  150.                 }
  151.             }
  152.             $dump .= ');';
  153.         }
  154.         return $dump;
  155.     }
  156.     function dumping(){
  157.         $tables = array(
  158.             'storm_admin','storm_cats','storm_news','storm_conf','storm_comm'
  159.         );
  160.         $d .= "## Storm Dumper for Storm News CMS\r\n";
  161.         $d .= "## Version 0.1B\r\n";
  162.         $d .= "## Start\r\n\r\n";
  163.         foreach ($tables as $table) {
  164.             @set_time_limit(1200);
  165.             //echo "##\r\n## Структура таблицы ".$table."\r\n##\r\n";
  166.             $d .= $this->get_table_def_mysql($table, "\r\n");
  167.             $d .= $this->get_table_content_mysql($table, "\r\n");
  168.         }
  169.         $d .= "\r\n##END";
  170.         return $d;
  171.     }
  172. }
Add Comment
Please, Sign In to add comment