架設ROSE私服必備之物 ROSE數據庫

源代码在线查看: import.lib.php

软件大小: 32475 K
上传用户: zcflion
关键词: ROSE
下载地址: 免注册下载 普通下载 VIP

相关代码

								/* $Id: import.lib.php 9528 2006-10-10 13:04:24Z nijel $ */				// vim: expandtab sw=4 ts=4 sts=4:								/* Library that provides common import functions that are used by import plugins */								// We need to know something about user				require_once('./libraries/check_user_privileges.lib.php');				// We do this check				define('PMA_CHK_DROP', 1);								/**				 *  Check whether timeout is getting close				 *				 *  @return boolean true if timeout is close				 *  @access public				 */				function PMA_checkTimeout()				{				    global $timestamp, $maximum_time, $timeout_passed;				    if ($maximum_time == 0) {				        return FALSE;				    } elseif ($timeout_passed) {				        return TRUE;				    /* 5 in next row might be too much */				    } elseif ((time() - $timestamp) > ($maximum_time - 5)) {				        $timeout_passed = TRUE;				        return TRUE;				    } else {				        return FALSE;				    }				}								/**				 *  Detects what compression filse uses				 *				 *  @param  string filename to check				 *  @return string MIME type of compression, none for none				 *  @access public				 */				function PMA_detectCompression($filepath)				{				    $file = @fopen($filepath, 'rb');				    if (!$file) {				        return FALSE;				    }				    $test = fread($file, 4);				    $len = strlen($test);				    fclose($file);				    if ($len >= 2 && $test[0] == chr(31) && $test[1] == chr(139)) {				        return 'application/gzip';				    }				    if ($len >= 3 && substr($test, 0, 3) == 'BZh') {				        return 'application/bzip2';				    }				    if ($len >= 4 && $test == "PK\003\004") {				        return 'application/zip';				    }				    return 'none';				}								/**				 *  Runs query inside import buffer. This is needed to allow displaying				 *  of last SELECT, SHOW or HANDLER results and similar nice stuff.				 *				 *  @param  string query to run				 *  @param  string query to display, this might be commented				 *  @access public				 */				function PMA_importRunQuery($sql = '', $full = '')				{				    global $import_run_buffer, $go_sql, $complete_query, $display_query, $sql_query, $cfg, $my_die, $error, $reload, $finished, $timeout_passed, $skip_queries, $executed_queries, $max_sql_len, $read_multiply, $cfg, $sql_query_disabled, $db, $run_query, $is_superuser, $message, $show_error_header;				    $read_multiply = 1;				    if (isset($import_run_buffer)) {				        // Should we skip something?				        if ($skip_queries > 0) {				            $skip_queries--;				        } else {				            if (!empty($import_run_buffer['sql']) && trim($import_run_buffer['sql']) != '') {				                $max_sql_len = max($max_sql_len, strlen($import_run_buffer['sql']));				                if (!$sql_query_disabled) {				                    $sql_query .= $import_run_buffer['full'];				                }				                if (!$cfg['AllowUserDropDatabase']				                    && !$is_superuser				                    && preg_match('@^[[:space:]]*DROP[[:space:]]+(IF EXISTS[[:space:]]+)?DATABASE @i', $import_run_buffer['sql'])) {				                    $message = $GLOBALS['strNoDropDatabases'];				                    $show_error_header = TRUE;				                    $error = TRUE;				                } else {				                    $executed_queries++;				                    if ($run_query && $finished && empty($sql) && !$error && (				                            (!empty($import_run_buffer['sql']) && preg_match('/^[\s]*(SELECT|SHOW|HANDLER)/i', $import_run_buffer['sql'])) ||				                            ($executed_queries == 1)				                            )) {				                        $go_sql = TRUE;				                        if (!$sql_query_disabled) {				                            $complete_query = $sql_query;				                            $display_query = $sql_query;				                        } else {				                            $complete_query = '';				                            $display_query = '';				                        }				                        $sql_query = $import_run_buffer['sql'];				                    } elseif ($run_query) {				                        $result = PMA_DBI_try_query($import_run_buffer['sql']);				                        $msg = '# ';				                        if ($result === FALSE) { // execution failed				                            if (!isset($my_die)) {				                                $my_die = array();				                            }				                            $my_die[] = array('sql' => $import_run_buffer['full'], 'error' => PMA_DBI_getError());								                            if ($cfg['VerboseMultiSubmit']) {				                                $msg .= $GLOBALS['strError'];				                            }								                            if (!$cfg['IgnoreMultiSubmitErrors']) {				                                $error = TRUE;				                                return;				                            }				                        } elseif ($cfg['VerboseMultiSubmit']) {				                            $a_num_rows = (int)@PMA_DBI_num_rows($result);				                            $a_aff_rows = (int)@PMA_DBI_affected_rows();				                            if ($a_num_rows > 0) {				                                $msg .= $GLOBALS['strRows'] . ': ' . $a_num_rows;				                            } elseif ($a_aff_rows > 0) {				                                $a_rows =				                                $msg .= $GLOBALS['strAffectedRows'] . ' ' . $a_aff_rows;				                            } else {				                                $msg .= $GLOBALS['strEmptyResultSet'];				                            }				                        }				                        if (!$sql_query_disabled) {				                            $sql_query .= $msg . "\n";				                        }								                        // If a 'USE ' SQL-clause was found and the query succeeded, set our current $db to the new one				                        if ($result != FALSE && preg_match('@^[\s]*USE[[:space:]]*([\S]+)@i', $import_run_buffer['sql'], $match)) {				                            $db = trim($match[1]);				                            $db = trim($db,';'); // for example, USE abc;				                            $reload = TRUE;				                        }								                        if ($result != FALSE && preg_match('@^[\s]*(DROP|CREATE)[\s]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@im', $import_run_buffer['sql'])) {				                            $reload = TRUE;				                        }				                    } // end run query				                } // end if not DROP DATABASE				            } // end non empty query				            elseif (!empty($import_run_buffer['full'])) {				                if ($go_sql) {				                    $complete_query .= $import_run_buffer['full'];				                    $display_query .= $import_run_buffer['full'];				                } else {				                    if (!$sql_query_disabled) {				                        $sql_query .= $import_run_buffer['full'];				                    }				                }				            }				            // check length of query unless we decided to pass it to sql.php				            if (!$go_sql) {				                if ($cfg['VerboseMultiSubmit'] && !empty($sql_query)) {				                    if (strlen($sql_query) > 50000 || $executed_queries > 50 || $max_sql_len > 1000) {				                        $sql_query = '';				                        $sql_query_disabled = TRUE;				                    }				                } else {				                    if (strlen($sql_query) > 10000 || $executed_queries > 10 || $max_sql_len > 500) {				                        $sql_query = '';				                        $sql_query_disabled = TRUE;				                    }				                }				            }				        } // end do query (no skip)				    } // end buffer exists								    // Do we have something to push into buffer?				    if (!empty($sql) || !empty($full)) {				        $import_run_buffer = array('sql' => $sql, 'full' => $full);				    } else {				        unset($GLOBALS['import_run_buffer']);				    }				}												/**				 *  Returns next part of imported file/buffer				 *				 *  @param  integer size of buffer to read (this is maximal size				 *                  function will return)				 *  @return string part of file/buffer				 *  @access public				 */				function PMA_importGetNextChunk($size = 32768)				{				    global $import_file, $import_text, $finished, $compression, $import_handle, $offset, $charset_conversion, $charset_of_file, $charset, $read_multiply, $read_limit;								    // Add some progression while reading large amount of data				    if ($read_multiply 				        $size *= $read_multiply;				    } else {				        $size *= 8;				    }				    $read_multiply++;								    // We can not read too much				    if ($size > $read_limit) {				        $size = $read_limit;				    }								    if (PMA_checkTimeout()) {				        return FALSE;				    }				    if ($finished) {				        return TRUE;				    }								    if ($import_file == 'none') {				        // Well this is not yet supported and tested, but should return content of textarea				        if (strlen($import_text) < $size) {				            $finished = TRUE;				            return $import_text;				        } else {				            $r = substr($import_text, 0, $size);				            $offset += $size;				            $import_text = substr($import_text, $size);				            return $r;				        }				    }								    switch ($compression) {				        case 'application/bzip2':				            $result = bzread($import_handle, $size);				            $finished = feof($import_handle);				            break;				        case 'application/gzip':				            $result = gzread($import_handle, $size);				            $finished = feof($import_handle);				            break;				        case 'application/zip':				            $result = substr($import_text, 0, $size);				            $import_text = substr($import_text, $size);				            $finished = empty($import_text);				            break;				        case 'none':				            $result = fread($import_handle, $size);				            $finished = feof($import_handle);				            break;				    }				    $offset += $size;								    if ($charset_conversion) {				        return PMA_convert_string($charset_of_file, $charset, $result);				    } else {				        // Skip possible byte order marks (I do not think we need more				        // charsets, but feel free to add more, you can use wikipedia for				        // reference: )				        // @TODO: BOM could be used for charset autodetection				        if ($offset == $size) {				            // UTF-8				            if (strncmp($result, "\xEF\xBB\xBF", 3) == 0) {				                $result = substr($result, 3);				            // UTF-16 BE, LE				            } elseif (strncmp($result, "\xFE\xFF", 2) == 0 || strncmp($result, "\xFF\xFE", 2) == 0) {				                $result = substr($result, 2);				            }				        }				        return $result;				    }				}																?>							

相关资源