function snapshot_utility_consume_archive_manifest($manifestFile) { $snapshot_manifest = array(); $manifest_array = file($manifestFile); if ($manifest_array) { foreach($manifest_array as $file_line) { list($key, $value) = explode(':', $file_line, 2); $key = trim($key); if ($key == "TABLES") { if (is_serialized_snapshot($value)) { $value = maybe_unserialize_snapshot($value); } else { $table_values = explode(',', $value); foreach($table_values as $idx => $table_name) { $table_values[$idx] = trim($table_name); } $value = $table_values; } } else if (($key == "TABLES-DATA") || ($key == "ITEM") || ($key == "FILES-DATA")) { $value = maybe_unserialize_snapshot($value); } else { $value = trim($value); } $snapshot_manifest[$key] = $value; } //echo "snapshot_manifest<pre>"; print_r($snapshot_manifest); echo "</pre>"; if (isset($snapshot_manifest['VERSION'])) { if (($snapshot_manifest['VERSION'] == "1.0") && (!isset($snapshot_manifest['TABLES-DATA']))) { $backupFile = trailingslashit_snapshot($sessionRestoreFolder) . 'snapshot_backups.sql'; $table_segments = snapshot_utility_get_table_segments_from_single($backupFile); if ($table_segments) { $snapshot_manifest['TABLES-DATA'] = $table_segments; unlink($backupFile); } } } return $snapshot_manifest; } }
function step_4_show_form($form_errors) { ?> <h2>Processing Step: 4 - Database Import</h2> <form action="?step=4" method="post" class="restore_form"> <?php $db_link = mysql_connect($_SESSION['restore_form']['wordpress']['wp-config-db']['DB_HOST'], $_SESSION['restore_form']['wordpress']['wp-config-db']['DB_USER'], $_SESSION['restore_form']['wordpress']['wp-config-db']['DB_PASSWORD']); if (!$db_link) { echo "Could not connect to MySQL: ". mysql_error(); die(); } $db_selected = mysql_select_db($_SESSION['restore_form']['wordpress']['wp-config-db']['DB_NAME'], $db_link); if (!$db_selected) { echo "Can't select database [". $_SESSION['restore_form']['wordpress']['wp-config-db']['DB_NAME'] ."]: ". mysql_error(); } if ($_SESSION['restore_form']['wordpress']['wp-config-db']['DB_PREFIX'] !== $_SESSION['restore_form']['snapshot']['manifest-data']['PREFIX']) { $TABLE_REPLACE_PREFIX_STR = $_SESSION['restore_form']['wordpress']['wp-config-db']['DB_PREFIX']; } else { $TABLE_REPLACE_PREFIX_STR = ''; } //$TABLE_REPLACE_PREFIX_STR = 'wp_br549_'; if ((isset($_SESSION['restore_form']['snapshot']['manifest-data']['TABLES'])) && (is_array($_SESSION['restore_form']['snapshot']['manifest-data']['TABLES'])) && (count($_SESSION['restore_form']['snapshot']['manifest-data']['TABLES']))) { foreach($_SESSION['restore_form']['snapshot']['manifest-data']['TABLES'] as $tables_set_idx => $tables_set_data ) { if ((is_array($tables_set_data)) && (count($tables_set_data))) { foreach($tables_set_data as $table_name) { $table_file = trailingslashit_snapshot($_SESSION['restore_form']['snapshot']['extract-path']) . $table_name .".sql"; if (!file_exists($table_file)) { echo "table_file not found [". $table_file ."]<br />"; continue; } $table_file_handle = fopen($table_file, "r"); if (!$table_file_handle) { echo "unable to open table_file [". $table_file ."]<br />"; continue; } $table_name_new = ''; $table_name_base = str_replace($_SESSION['restore_form']['snapshot']['manifest-data']['PREFIX'], '', $table_name); if (strlen($TABLE_REPLACE_PREFIX_STR)) { $table_name_new = $TABLE_REPLACE_PREFIX_STR . $table_name_base; echo "Processing database table: ". $table_name ." to ". $table_name_new; } else { echo "Processing database table: ". $table_name; } $table_file_create_sql = ''; $table_file_create_done = false; $table_record_count = 0; while (($table_file_buffer = fgets($table_file_handle, 4096)) !== false) { if (!strlen( trim($table_file_buffer) )) { if ( ($table_file_create_done == false) && (strlen($table_file_create_sql)) ) { $table_file_create_done = true; $sql_split = explode(';', $table_file_create_sql); foreach($sql_split as $sql_str) { if (strlen($table_name_new)) { $sql_str = str_replace('`'. $table_name .'`', '`'.$table_name_new.'`', $sql_str); } $result = mysql_query($sql_str, $db_link); } } } else { if ($table_file_create_done == false) { $table_file_create_sql .= $table_file_buffer; } else { if (strlen($table_name_new)) { $table_file_buffer = str_replace('`'. $table_name .'`', '`'.$table_name_new.'`', $table_file_buffer); } $result = mysql_query($table_file_buffer, $db_link); $table_record_count += 1; } } } fclose($table_file_handle); echo " : total rows: ". $table_record_count ."<br />"; //echo "table_name_base=[". $table_name_base ."]<br />"; //echo "table_name_new=[". $table_name_new ."]<br />"; //echo "table_name=[". $table_name ."]<br />"; //echo "site_url=[". $_SESSION['restore_form']['wordpress']['site-url'] ."] [". $_SESSION['restore_form']['snapshot']['manifest-data']['SITEURL']."]<br />"; //echo "home_url=[". $_SESSION['restore_form']['wordpress']['home-url'] ."] [". $_SESSION['restore_form']['snapshot']['manifest-data']['HOME']."]<br />"; if (($_SESSION['restore_form']['wordpress']['site-url'] != $_SESSION['restore_form']['snapshot']['manifest-data']['SITEURL']) || ($_SESSION['restore_form']['wordpress']['home-url'] != $_SESSION['restore_form']['snapshot']['manifest-data']['HOME'])) { if ($table_name_base == "options") { if (strlen($table_name_new)) $table_name_replace = $table_name_new; else $table_name_replace = $table_name; //echo "table_name_replace=[". $table_name_replace ."]<br />"; search_replace_table_data( $table_name_replace, $db_link, $_SESSION['restore_form']['snapshot']['manifest-data']['SITEURL'], $_SESSION['restore_form']['wordpress']['site-url'] ); //die(); } } flush(); } } } } else { echo "Snapshot Archive manifest item 'TABLES' not set. Aborting"; } mysql_close($db_link); ?> <p><input type="submit" value="Finished" /></p> </form> <?php }
/** * @param $from_dir - Source Directory * @param $dest_dir Destination Directory * @param bool $move_files (true) will move each file individually. (false) will remove destination sub-directories and move entire source sub-directory */ public static function move_tree($from_dir, $dest_dir, $move_files = false) { if (!is_dir($from_dir)) { echo "Source Directory does not exists [" . $from_dir . "]<br />"; die; } if (!is_dir($dest_dir)) { echo "Destination Directory does not exists [" . $dest_dir . "]<br />"; die; } if ($move_files == true) { $from_files = Snapshot_Helper_Utility::scandir($from_dir); if (is_array($from_files) && count($from_files)) { foreach ($from_files as $from_file_full) { $from_file = str_replace(trailingslashit_snapshot($from_dir), '', $from_file_full); $dest_file_full = self::trailingslashit_snapshot($dest_dir) . $from_file; if (!file_exists(dirname($dest_file_full))) { mkdir(dirname($dest_file_full), 0777, true); } if (file_exists($dest_file_full)) { unlink($dest_file_full); } $rename_ret = rename($from_file_full, $dest_file_full); if ($rename_ret === false) { die; } } } } else { if ($from_dh = opendir($from_dir)) { while (($from_file = readdir($from_dh)) !== false) { if ($from_file == '.' || $from_file == '..') { continue; } $from_file_full = self::trailingslashit_snapshot($from_dir) . $from_file; $dest_file_full = self::trailingslashit_snapshot($dest_dir) . $from_file; if (file_exists($dest_file_full)) { if (is_dir($dest_file_full)) { Snapshot_Helper_Utility::recursive_rmdir($dest_file_full); } else { unlink($dest_file_full); } } rename($from_file_full, $dest_file_full); } closedir($from_dh); } } }