aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/admin/admin_db_utilities.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/admin/admin_db_utilities.php')
-rw-r--r--phpBB/admin/admin_db_utilities.php749
1 files changed, 373 insertions, 376 deletions
diff --git a/phpBB/admin/admin_db_utilities.php b/phpBB/admin/admin_db_utilities.php
index 00762f567c..e1599fb272 100644
--- a/phpBB/admin/admin_db_utilities.php
+++ b/phpBB/admin/admin_db_utilities.php
@@ -30,21 +30,20 @@
define('IN_PHPBB', 1);
-if( !empty($setmodules) )
+if ( !empty($setmodules) )
{
- $filename = basename(__FILE__);
- $module['General']['Backup_DB'] = $filename . "?perform=backup";
- if(@phpversion() >= '4.0.0')
- {
- $file_uploads = @ini_get('file_uploads');
- }
- else
+ if ( !$acl->get_acl_admin('general') )
{
- $file_uploads = @get_cfg_var('file_uploads');
+ return;
}
+
+ $filename = basename(__FILE__);
+ $module['DB']['DB_Backup'] = $filename . "?perform=backup";
+
+ $file_uploads = @ini_get('file_uploads');
if( ($file_uploads != 0 || empty($file_uploads)) && (strtolower($file_uploads) != 'off') && (@phpversion() != '4.0.4pl1') )
{
- $module['General']['Restore_DB'] = $filename . "?perform=restore";
+ $module['DB']['DB_Restore'] = $filename . "?perform=restore";
}
return;
@@ -57,12 +56,12 @@ $no_page_header = TRUE;
$phpbb_root_path = "../";
require($phpbb_root_path . 'extension.inc');
require('pagestart.' . $phpEx);
-include($phpbb_root_path . 'includes/sql_parse.'.$phpEx);
+include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
-//
-// Set VERBOSE to 1 for debugging info..
-//
-define("VERBOSE", 0);
+if ( !$acl->get_acl_admin('general') )
+{
+ message_die(MESSAGE, $lang['No_admin']);
+}
//
// Increase maximum execution time, but don't complain about it if it isn't
@@ -70,6 +69,364 @@ define("VERBOSE", 0);
//
@set_time_limit(1200);
+//
+// Begin program proper
+//
+
+if ( isset($HTTP_GET_VARS['perform']) || isset($HTTP_POST_VARS['perform']) )
+{
+ $perform = ( isset($HTTP_POST_VARS['perform']) ) ? $HTTP_POST_VARS['perform'] : $HTTP_GET_VARS['perform'];
+
+ switch($perform)
+ {
+ case 'backup':
+
+ if ( SQL_LAYER == 'oracle' || SQL_LAYER == 'odbc' || SQL_LAYER == 'mssql' )
+ {
+ switch ( SQL_LAYER )
+ {
+ case 'oracle':
+ $db_type = 'Oracle';
+ break;
+ case 'odbc':
+ $db_type = 'ODBC';
+ break;
+ case 'mssql':
+ $db_type = 'MSSQL';
+ break;
+ }
+
+ include('page_header_admin.'.$phpEx);
+
+ $template->assign_vars(array(
+ "MESSAGE_TITLE" => $lang['Information'],
+ "MESSAGE_TEXT" => $lang['Backups_not_supported'])
+ );
+
+ break;
+ }
+
+ $tables = array('auth_access', 'banlist', 'categories', 'config', 'disallow', 'forums', 'forum_prune', 'groups', 'posts', 'posts_text', 'privmsgs', 'privmsgs_text', 'ranks', 'search_results', 'search_results', 'search_wordlist', 'search_wordmatch', 'sessions', 'smilies', 'themes', 'themes_name', 'topics', 'topics_watch', 'user_group', 'users', 'vote_desc', 'vote_results', 'vote_voters', 'words');
+
+ $additional_tables = (isset($HTTP_POST_VARS['additional_tables'])) ? $HTTP_POST_VARS['additional_tables'] : ( ( isset($HTTP_GET_VARS['additional_tables']) ) ? $HTTP_GET_VARS['additional_tables'] : "" );
+
+ $backup_type = (isset($HTTP_POST_VARS['backup_type'])) ? $HTTP_POST_VARS['backup_type'] : ( ( isset($HTTP_GET_VARS['backup_type']) ) ? $HTTP_GET_VARS['backup_type'] : "" );
+
+ $gzipcompress = (!empty($HTTP_POST_VARS['gzipcompress'])) ? $HTTP_POST_VARS['gzipcompress'] : ( ( !empty($HTTP_GET_VARS['gzipcompress']) ) ? $HTTP_GET_VARS['gzipcompress'] : 0 );
+
+ if ( !empty($additional_tables) )
+ {
+ if ( ereg(",", $additional_tables))
+ {
+ $additional_tables = split(",", $additional_tables);
+
+ for($i = 0; $i < count($additional_tables); $i++)
+ {
+ $tables[] = trim($additional_tables[$i]);
+ }
+
+ }
+ else
+ {
+ $tables[] = trim($additional_tables);
+ }
+ }
+
+ if ( !isset($HTTP_POST_VARS['backupstart']) && !isset($HTTP_GET_VARS['backupstart']))
+ {
+ $s_hidden_fields = '<input type="hidden" name="perform" value="backup" /><input type="hidden" name="drop" value="1" /><input type="hidden" name="perform" value="$perform" />';
+
+ page_header($lang['DB']);
+?>
+
+<h1><?php echo $lang['DB_Backup']; ?></h1>
+
+<p><?php echo $lang['Backup_explain']; ?></p>
+
+<form method="post" action="<?php echo "admin_db_utilities.$phpEx$SID"; ?>"><table cellspacing="1" cellpadding="4" border="0" align="center" bgcolor="#98AAB1">
+ <tr>
+ <th colspan="2"><?php echo $lang['Backup_options']; ?></th>
+ </tr>
+ <tr>
+ <td class="row2"><?php echo $lang['Full_backup']; ?></td>
+ <td class="row2"><input type="radio" name="backup_type" value="full" checked /></td>
+ </tr>
+ <tr>
+ <td class="row1"><?php echo $lang['Structure_backup']; ?></td>
+ <td class="row1"><input type="radio" name="backup_type" value="structure" /></td>
+ </tr>
+ <tr>
+ <td class="row2"><?php echo $lang['Data_backup']; ?></td>
+ <td class="row2"><input type="radio" name="backup_type" value="data" /></td>
+ </tr>
+ <tr>
+ <td class="row1"><?php echo $lang['Additional_tables']; ?></td>
+ <td class="row1"><input type="text" name="additional_tables" /></td>
+ </tr>
+ <tr>
+ <td class="row1"><?php echo $lang['Gzip_compress']; ?></td>
+ <td class="row1"><?php echo $lang['No']; ?> <input type="radio" name="gzipcompress" value="0" checked /> &nbsp;<?php echo $lang['Yes']; ?> <input type="radio" name="gzipcompress" value="1" /></td>
+ </tr>
+ <tr>
+ <td class="cat" colspan="2" align="center"><?php echo $s_hidden_fields; ?><input type="submit" name="backupstart" value="<?php echo $lang['Start_backup']; ?>" class="mainoption" /></td>
+ </tr>
+</table></form>
+
+<?php
+
+ break;
+
+ }
+ else if ( !isset($HTTP_POST_VARS['startdownload']) && !isset($HTTP_GET_VARS['startdownload']) )
+ {
+ $template->assign_vars(array(
+ "META" => "<meta http-equiv=\"refresh\" content=\"0;url=admin_db_utilities.$phpEx?perform=backup&amp;additional_tables=" . quotemeta($additional_tables) . "&amp;backup_type=$backup_type&amp;drop=1&amp;backupstart=1&amp;gzipcompress=$gzipcompress&amp;startdownload=1\">",
+
+ "MESSAGE_TITLE" => $lang['Database_Utilities'] . " : " . $lang['Backup'],
+ "MESSAGE_TEXT" => $lang['Backup_download'])
+ );
+
+ include('page_header_admin.php');
+
+ include('page_footer_admin.'.$phpEx);
+
+ }
+
+ header("Pragma: no-cache");
+ $do_gzip_compress = FALSE;
+
+ if( $gzipcompress )
+ {
+ $phpver = phpversion();
+
+ if($phpver >= "4.0")
+ {
+ if(extension_loaded("zlib"))
+ {
+ $do_gzip_compress = TRUE;
+ }
+ }
+ }
+ if($do_gzip_compress)
+ {
+ @ob_start();
+ @ob_implicit_flush(0);
+ header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql.gz\"");
+ header("Content-disposition: attachment; filename=phpbb_db_backup.sql.gz");
+ }
+ else
+ {
+ header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql\"");
+ header("Content-disposition: attachment; filename=phpbb_db_backup.sql");
+ }
+
+ //
+ // Build the sql script file...
+ //
+ echo "#\n";
+ echo "# phpBB Backup Script\n";
+ echo "# Dump of tables for $dbname\n";
+ echo "#\n# DATE : " . gmdate("d-m-Y H:i:s", time()) . " GMT\n";
+ echo "#\n";
+
+ if(SQL_LAYER == 'postgresql')
+ {
+ echo "\n" . pg_get_sequences("\n", $backup_type);
+ }
+ for($i = 0; $i < count($tables); $i++)
+ {
+ $table_name = $tables[$i];
+ if(SQL_LAYER != 'mysql4')
+ {
+ $table_def_function = "get_table_def_" . SQL_LAYER;
+ $table_content_function = "get_table_content_" . SQL_LAYER;
+ }
+ else
+ {
+ $table_def_function = "get_table_def_mysql";
+ $table_content_function = "get_table_content_mysql";
+ }
+
+ if($backup_type != 'data')
+ {
+ echo "#\n# TABLE: " . $table_prefix . $table_name . "\n#\n";
+ echo $table_def_function($table_prefix . $table_name, "\n") . "\n";
+ }
+
+ if($backup_type != 'structure')
+ {
+ $table_content_function($table_prefix . $table_name, "output_table_content");
+ }
+ }
+
+ if($do_gzip_compress)
+ {
+ $Size = ob_get_length();
+ $Crc = crc32(ob_get_contents());
+ $contents = gzcompress(ob_get_contents());
+ ob_end_clean();
+ echo "\x1f\x8b\x08\x00\x00\x00\x00\x00".substr($contents, 0, strlen($contents) - 4).gzip_PrintFourChars($Crc).gzip_PrintFourChars($Size);
+ }
+ exit;
+
+ break;
+
+ case 'restore':
+
+ if ( !isset($restore_start) )
+ {
+ $s_hidden_fields = '<input type="hidden" name="perform" value="restore" /><input type="hidden" name="perform" value="$perform" />';
+
+ page_header($lang['DB']);
+
+?>
+
+<h1><?php echo $lang['DB_Restore']; ?></h1>
+
+<p><?php echo $lang['Restore_explain']; ?></p>
+
+<form enctype="multipart/form-data" method="post" action="<?php echo "admin_db_utilities.$phpEx$SID"; ?>"><table cellspacing="1" cellpadding="4" border="0" align="center" bgcolor="#98AAB1">
+ <tr>
+ <th class="th"><?php echo $lang['Select_file']; ?></th>
+ </tr>
+ <tr>
+ <td class="row1" align="center"><?php echo $s_hidden_fields; ?>&nbsp;<input type="file" name="backup_file">&nbsp;&nbsp;<input type="submit" name="restore_start" value="<?php echo $lang['Start_Restore']; ?>" class="mainoption" />&nbsp;</td>
+ </tr>
+</table></form>
+
+<?php
+
+ break;
+
+ }
+ else
+ {
+ //
+ // Handle the file upload ....
+ // If no file was uploaded report an error...
+ //
+ $backup_file_name = (!empty($HTTP_POST_FILES['backup_file']['name'])) ? $HTTP_POST_FILES['backup_file']['name'] : "";
+ $backup_file_tmpname = ($HTTP_POST_FILES['backup_file']['tmp_name'] != "none") ? $HTTP_POST_FILES['backup_file']['tmp_name'] : "";
+ $backup_file_type = (!empty($HTTP_POST_FILES['backup_file']['type'])) ? $HTTP_POST_FILES['backup_file']['type'] : "";
+
+ if ( $backup_file_tmpname == "" || $backup_file_name == "" )
+ {
+ message_die(MESSAGE, $lang['Restore_Error_no_file']);
+ }
+ //
+ // If I file was actually uploaded, check to make sure that we
+ // are actually passed the name of an uploaded file, and not
+ // a hackers attempt at getting us to process a local system
+ // file.
+ //
+ if( file_exists($backup_file_tmpname) )
+ {
+ if( preg_match("/^(text\/[a-zA-Z]+)|(application\/(x\-)?gzip(\-compressed)?)|(application\/octet-stream)$/is", $backup_file_type) )
+ {
+ if( preg_match("/\.gz$/is",$backup_file_name) )
+ {
+ $do_gzip_compress = FALSE;
+ $phpver = phpversion();
+ if($phpver >= "4.0")
+ {
+ if(extension_loaded("zlib"))
+ {
+ $do_gzip_compress = TRUE;
+ }
+ }
+
+ if($do_gzip_compress)
+ {
+ $gz_ptr = gzopen($backup_file_tmpname, 'rb');
+ $sql_query = "";
+ while( !gzeof($gz_ptr) )
+ {
+ $sql_query .= gzgets($gz_ptr, 100000);
+ }
+ }
+ else
+ {
+ include('page_header_admin.'.$phpEx);
+ message_die(ERROR, $lang['Restore_Error_decompress']);
+ }
+ }
+ else
+ {
+ $sql_query = fread(fopen($backup_file_tmpname, 'r'), filesize($backup_file_tmpname));
+ }
+ //
+ // Comment this line out to see if this fixes the stuff...
+ //
+ //$sql_query = stripslashes($sql_query);
+ }
+ else
+ {
+ include('page_header_admin.'.$phpEx);
+ message_die(ERROR, $lang['Restore_Error_filename'] ." $backup_file_type $backup_file_name");
+ }
+ }
+ else
+ {
+ include('page_header_admin.'.$phpEx);
+ message_die(ERROR, $lang['Restore_Error_uploading']);
+ }
+
+ if($sql_query != "")
+ {
+ // Strip out sql comments...
+ $sql_query = remove_remarks($sql_query);
+ $pieces = split_sql_file($sql_query, ";");
+
+ $sql_count = count($pieces);
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $sql = trim($pieces[$i]);
+
+ if(!empty($sql) and $sql[0] != "#")
+ {
+ if(DEBUG == 1)
+ {
+ echo "Executing: $sql\n<br>";
+ flush();
+ }
+
+ $result = $db->sql_query($sql);
+
+ if(!$result && ( !(SQL_LAYER == 'postgresql' && eregi("drop table", $sql) ) ) )
+ {
+ //include('page_header_admin.'.$phpEx);
+ // echo "~~$sql~~";
+ message_die(ERROR, "Error importing backup file", "", __LINE__, __FILE__, $sql);
+ }
+ }
+ }
+ }
+
+ include('page_header_admin.'.$phpEx);
+
+ $message = $lang['Restore_success'];
+
+ $template->assign_vars(array(
+ "MESSAGE_TITLE" => $lang['Database_Utilities'] . " : " . $lang['Restore'],
+ "MESSAGE_TEXT" => $message)
+ );
+
+ break;
+ }
+ break;
+ }
+}
+
+?>
+
+ </td>
+ </tr>
+</table>
+
+<?php
+
+page_footer();
+
// -----------------------
// The following functions are adapted from phpMyAdmin and upgrade_20.php
//
@@ -83,8 +440,6 @@ function gzip_PrintFourChars($Val)
return $return;
}
-
-
//
// This function is used for grabbing the sequences for postgres...
//
@@ -410,10 +765,6 @@ function get_table_def_mysql($table, $crlf)
// Get any Indexed fields from the database...
//
$result = $db->sql_query($key_query);
- if(!$result)
- {
- message_die(GENERAL_ERROR, "FAILED IN get_table_def (show keys)", "", __LINE__, __FILE__, $key_query);
- }
while($row = $db->sql_fetchrow($result))
{
@@ -667,358 +1018,4 @@ function output_table_content($content)
// End Functions
// -------------
-
-//
-// Begin program proper
-//
-
-if( isset($HTTP_GET_VARS['perform']) || isset($HTTP_POST_VARS['perform']) )
-{
- $perform = (isset($HTTP_POST_VARS['perform'])) ? $HTTP_POST_VARS['perform'] : $HTTP_GET_VARS['perform'];
-
- switch($perform)
- {
- case 'backup':
-
- if( SQL_LAYER == 'oracle' || SQL_LAYER == 'odbc' || SQL_LAYER == 'mssql' )
- {
- switch(SQL_LAYER)
- {
- case 'oracle':
- $db_type = "Oracle";
- break;
- case 'odbc':
- $db_type = "ODBC";
- break;
- case 'mssql':
- $db_type = "MSSQL";
- break;
- }
-
- include('page_header_admin.'.$phpEx);
-
- $template->set_filenames(array(
- "body" => "admin/admin_message_body.tpl")
- );
-
- $template->assign_vars(array(
- "MESSAGE_TITLE" => $lang['Information'],
- "MESSAGE_TEXT" => $lang['Backups_not_supported'])
- );
-
- $template->pparse("body");
-
- break;
- }
-
- $tables = array('auth_access', 'banlist', 'categories', 'config', 'disallow', 'forums', 'forum_prune', 'groups', 'posts', 'posts_text', 'privmsgs', 'privmsgs_text', 'ranks', 'search_results', 'search_results', 'search_wordlist', 'search_wordmatch', 'sessions', 'smilies', 'themes', 'themes_name', 'topics', 'topics_watch', 'user_group', 'users', 'vote_desc', 'vote_results', 'vote_voters', 'words');
-
-
- $additional_tables = (isset($HTTP_POST_VARS['additional_tables'])) ? $HTTP_POST_VARS['additional_tables'] : ( (isset($HTTP_GET_VARS['additional_tables'])) ? $HTTP_GET_VARS['additional_tables'] : "" );
-
- $backup_type = (isset($HTTP_POST_VARS['backup_type'])) ? $HTTP_POST_VARS['backup_type'] : ( (isset($HTTP_GET_VARS['backup_type'])) ? $HTTP_GET_VARS['backup_type'] : "" );
-
- $gzipcompress = (!empty($HTTP_POST_VARS['gzipcompress'])) ? $HTTP_POST_VARS['gzipcompress'] : ( (!empty($HTTP_GET_VARS['gzipcompress'])) ? $HTTP_GET_VARS['gzipcompress'] : 0 );
-
- if(!empty($additional_tables))
- {
- if(ereg(",", $additional_tables))
- {
- $additional_tables = split(",", $additional_tables);
-
- for($i = 0; $i < count($additional_tables); $i++)
- {
- $tables[] = trim($additional_tables[$i]);
- }
-
- }
- else
- {
- $tables[] = trim($additional_tables);
- }
- }
-
- if( !isset($HTTP_POST_VARS['backupstart']) && !isset($HTTP_GET_VARS['backupstart']))
- {
- include('page_header_admin.'.$phpEx);
-
- $template->set_filenames(array(
- "body" => "admin/db_utils_backup_body.tpl")
- );
-
- $s_hidden_fields = "<input type=\"hidden\" name=\"perform\" value=\"backup\" /><input type=\"hidden\" name=\"drop\" value=\"1\" /><input type=\"hidden\" name=\"perform\" value=\"$perform\" />";
-
- $template->assign_vars(array(
- "L_DATABASE_BACKUP" => $lang['Database_Utilities'] . " : " . $lang['Backup'],
- "L_BACKUP_EXPLAIN" => $lang['Backup_explain'],
- "L_FULL_BACKUP" => $lang['Full_backup'],
- "L_STRUCTURE_BACKUP" => $lang['Structure_backup'],
- "L_DATA_BACKUP" => $lang['Data_backup'],
- "L_ADDITIONAL_TABLES" => $lang['Additional_tables'],
- "L_START_BACKUP" => $lang['Start_backup'],
- "L_BACKUP_OPTIONS" => $lang['Backup_options'],
- "L_GZIP_COMPRESS" => $lang['Gzip_compress'],
- "L_NO" => $lang['No'],
- "L_YES" => $lang['Yes'],
-
- "S_HIDDEN_FIELDS" => $s_hidden_fields,
- "S_DBUTILS_ACTION" => append_sid("admin_db_utilities.$phpEx"))
- );
- $template->pparse("body");
-
- break;
-
- }
- else if( !isset($HTTP_POST_VARS['startdownload']) && !isset($HTTP_GET_VARS['startdownload']) )
- {
- $template->set_filenames(array(
- "body" => "admin/admin_message_body.tpl")
- );
-
- $template->assign_vars(array(
- "META" => "<meta http-equiv=\"refresh\" content=\"0;url=admin_db_utilities.$phpEx?perform=backup&amp;additional_tables=" . quotemeta($additional_tables) . "&amp;backup_type=$backup_type&amp;drop=1&amp;backupstart=1&amp;gzipcompress=$gzipcompress&amp;startdownload=1\">",
-
- "MESSAGE_TITLE" => $lang['Database_Utilities'] . " : " . $lang['Backup'],
- "MESSAGE_TEXT" => $lang['Backup_download'])
- );
-
- include('page_header_admin.php');
-
- $template->pparse("body");
-
- include('page_footer_admin.'.$phpEx);
-
- }
- header("Pragma: no-cache");
- $do_gzip_compress = FALSE;
- if( $gzipcompress )
- {
- $phpver = phpversion();
-
- if($phpver >= "4.0")
- {
- if(extension_loaded("zlib"))
- {
- $do_gzip_compress = TRUE;
- }
- }
- }
- if($do_gzip_compress)
- {
- @ob_start();
- @ob_implicit_flush(0);
- header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql.gz\"");
- header("Content-disposition: attachment; filename=phpbb_db_backup.sql.gz");
- }
- else
- {
- header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.sql\"");
- header("Content-disposition: attachment; filename=phpbb_db_backup.sql");
- }
-
- //
- // Build the sql script file...
- //
- echo "#\n";
- echo "# phpBB Backup Script\n";
- echo "# Dump of tables for $dbname\n";
- echo "#\n# DATE : " . gmdate("d-m-Y H:i:s", time()) . " GMT\n";
- echo "#\n";
-
- if(SQL_LAYER == 'postgresql')
- {
- echo "\n" . pg_get_sequences("\n", $backup_type);
- }
- for($i = 0; $i < count($tables); $i++)
- {
- $table_name = $tables[$i];
- if(SQL_LAYER != 'mysql4')
- {
- $table_def_function = "get_table_def_" . SQL_LAYER;
- $table_content_function = "get_table_content_" . SQL_LAYER;
- }
- else
- {
- $table_def_function = "get_table_def_mysql";
- $table_content_function = "get_table_content_mysql";
- }
-
- if($backup_type != 'data')
- {
- echo "#\n# TABLE: " . $table_prefix . $table_name . "\n#\n";
- echo $table_def_function($table_prefix . $table_name, "\n") . "\n";
- }
-
- if($backup_type != 'structure')
- {
- $table_content_function($table_prefix . $table_name, "output_table_content");
- }
- }
-
- if($do_gzip_compress)
- {
- $Size = ob_get_length();
- $Crc = crc32(ob_get_contents());
- $contents = gzcompress(ob_get_contents());
- ob_end_clean();
- echo "\x1f\x8b\x08\x00\x00\x00\x00\x00".substr($contents, 0, strlen($contents) - 4).gzip_PrintFourChars($Crc).gzip_PrintFourChars($Size);
- }
- exit;
-
- break;
-
- case 'restore':
- if(!isset($restore_start))
- {
- //
- // Define Template files...
- //
- include('page_header_admin.'.$phpEx);
-
- $template->set_filenames(array(
- "body" => "admin/db_utils_restore_body.tpl")
- );
-
- $s_hidden_fields = "<input type=\"hidden\" name=\"perform\" value=\"restore\" /><input type=\"hidden\" name=\"perform\" value=\"$perform\" />";
-
- $template->assign_vars(array(
- "L_DATABASE_RESTORE" => $lang['Database_Utilities'] . " : " . $lang['Restore'],
- "L_RESTORE_EXPLAIN" => $lang['Restore_explain'],
- "L_SELECT_FILE" => $lang['Select_file'],
- "L_START_RESTORE" => $lang['Start_Restore'],
-
- "S_DBUTILS_ACTION" => append_sid("admin_db_utilities.$phpEx"),
- "S_HIDDEN_FIELDS" => $s_hidden_fields)
- );
- $template->pparse("body");
-
- break;
-
- }
- else
- {
- //
- // Handle the file upload ....
- // If no file was uploaded report an error...
- //
- $backup_file_name = (!empty($HTTP_POST_FILES['backup_file']['name'])) ? $HTTP_POST_FILES['backup_file']['name'] : "";
- $backup_file_tmpname = ($HTTP_POST_FILES['backup_file']['tmp_name'] != "none") ? $HTTP_POST_FILES['backup_file']['tmp_name'] : "";
- $backup_file_type = (!empty($HTTP_POST_FILES['backup_file']['type'])) ? $HTTP_POST_FILES['backup_file']['type'] : "";
-
- if($backup_file_tmpname == "" || $backup_file_name == "")
- {
- include('page_header_admin.'.$phpEx);
- message_die(GENERAL_MESSAGE, $lang['Restore_Error_no_file']);
- }
- //
- // If I file was actually uploaded, check to make sure that we
- // are actually passed the name of an uploaded file, and not
- // a hackers attempt at getting us to process a local system
- // file.
- //
- if( file_exists($backup_file_tmpname) )
- {
- if( preg_match("/^(text\/[a-zA-Z]+)|(application\/(x\-)?gzip(\-compressed)?)|(application\/octet-stream)$/is", $backup_file_type) )
- {
- if( preg_match("/\.gz$/is",$backup_file_name) )
- {
- $do_gzip_compress = FALSE;
- $phpver = phpversion();
- if($phpver >= "4.0")
- {
- if(extension_loaded("zlib"))
- {
- $do_gzip_compress = TRUE;
- }
- }
-
- if($do_gzip_compress)
- {
- $gz_ptr = gzopen($backup_file_tmpname, 'rb');
- $sql_query = "";
- while( !gzeof($gz_ptr) )
- {
- $sql_query .= gzgets($gz_ptr, 100000);
- }
- }
- else
- {
- include('page_header_admin.'.$phpEx);
- message_die(GENERAL_ERROR, $lang['Restore_Error_decompress']);
- }
- }
- else
- {
- $sql_query = fread(fopen($backup_file_tmpname, 'r'), filesize($backup_file_tmpname));
- }
- //
- // Comment this line out to see if this fixes the stuff...
- //
- //$sql_query = stripslashes($sql_query);
- }
- else
- {
- include('page_header_admin.'.$phpEx);
- message_die(GENERAL_ERROR, $lang['Restore_Error_filename'] ." $backup_file_type $backup_file_name");
- }
- }
- else
- {
- include('page_header_admin.'.$phpEx);
- message_die(GENERAL_ERROR, $lang['Restore_Error_uploading']);
- }
-
- if($sql_query != "")
- {
- // Strip out sql comments...
- $sql_query = remove_remarks($sql_query);
- $pieces = split_sql_file($sql_query, ";");
-
- $sql_count = count($pieces);
- for($i = 0; $i < $sql_count; $i++)
- {
- $sql = trim($pieces[$i]);
-
- if(!empty($sql) and $sql[0] != "#")
- {
- if(VERBOSE == 1)
- {
- echo "Executing: $sql\n<br>";
- flush();
- }
-
- $result = $db->sql_query($sql);
-
- if(!$result && ( !(SQL_LAYER == 'postgresql' && eregi("drop table", $sql) ) ) )
- {
- //include('page_header_admin.'.$phpEx);
- // echo "~~$sql~~";
- message_die(GENERAL_ERROR, "Error importing backup file", "", __LINE__, __FILE__, $sql);
- }
- }
- }
- }
-
- include('page_header_admin.'.$phpEx);
-
- $template->set_filenames(array(
- "body" => "admin/admin_message_body.tpl")
- );
-
- $message = $lang['Restore_success'];
-
- $template->assign_vars(array(
- "MESSAGE_TITLE" => $lang['Database_Utilities'] . " : " . $lang['Restore'],
- "MESSAGE_TEXT" => $message)
- );
-
- $template->pparse("body");
- break;
- }
- break;
- }
-}
-
-include('page_footer_admin.'.$phpEx);
-
-?>
+?> \ No newline at end of file