*/ // Replace based on the type of table replacement selected. if (pb_backupbuddy::_POST('table_selection') == 'all') { // All tables. pb_backupbuddy::status('message', 'Replacing in all tables based on settings.'); $tables = array(); $result = mysql_query('SHOW TABLES', $wpdb->dbh); while ($rs = mysql_fetch_row($result)) { $tables[] = $rs[0]; } mysql_free_result($result); // Free memory. $rows_changed = 0; foreach ($tables as $table) { pb_backupbuddy::status('message', 'Replacing in table `' . $table . '`.'); $rows_changed += $dbreplace->bruteforce_table($table, array($needle), array($replacement)); } pb_backupbuddy::status('message', 'Total rows updated across all tables: ' . $rows_changed . '.'); pb_backupbuddy::status('message', 'Replacement finished.'); } elseif (pb_backupbuddy::_POST('table_selection') == 'single_table') { $table = mysql_real_escape_string(pb_backupbuddy::_POST('table')); // Single specified table. pb_backupbuddy::status('message', 'Replacing in single table `' . $table . '` based on settings.'); $dbreplace->bruteforce_table($table, array($needle), array($replacement)); pb_backupbuddy::status('message', 'Replacement finished.'); } elseif (pb_backupbuddy::_POST('table_selection') == 'prefix') { // Matching table prefix. $prefix = mysql_real_escape_string(pb_backupbuddy::_POST('table_prefix')); pb_backupbuddy::status('message', 'Replacing in all tables matching prefix `' . $prefix . '`.'); $tables = array(); $escaped_prefix = str_replace('_', '\\_', $prefix);
} */ // Replace based on the type of table replacement selected. if (pb_backupbuddy::_POST('table_selection') == 'all') { // All tables. pb_backupbuddy::status('message', 'Replacing in all tables based on settings.'); $tables = array(); $result = mysql_query('SHOW TABLES', $wpdb->dbh); while ($rs = mysql_fetch_row($result)) { $tables[] = $rs[0]; } mysql_free_result($result); // Free memory. foreach ($tables as $table) { pb_backupbuddy::status('message', 'Replacing in table `' . $table . '`.'); $dbreplace->bruteforce_table($table, array($needle), array($replacement)); } pb_backupbuddy::status('message', 'Replacement finished.'); } elseif (pb_backupbuddy::_POST('table_selection') == 'single_table') { $table = mysql_real_escape_string(pb_backupbuddy::_POST('table')); // Single specified table. pb_backupbuddy::status('message', 'Replacing in single table `' . $table . '` based on settings.'); $dbreplace->bruteforce_table($table, array($needle), array($replacement)); pb_backupbuddy::status('message', 'Replacement finished.'); } elseif (pb_backupbuddy::_POST('table_selection') == 'prefix') { // Matching table prefix. $prefix = mysql_real_escape_string(pb_backupbuddy::_POST('table_prefix')); pb_backupbuddy::status('message', 'Replacing in all tables matching prefix `' . $prefix . '`.'); $tables = array(); $escaped_prefix = str_replace('_', '\\_', $prefix); $result = mysql_query("SHOW TABLES LIKE '{$escaped_prefix}%'", $wpdb->dbh);
$dbreplace->text($destination_db_prefix . 'links', $old_urls, $new_urls, array('link_url', 'link_image', 'link_target', 'link_description', 'link_notes', 'link_rss')); pb_backupbuddy::status('message', 'WordPress core database text replaced.'); // Misc serialized data replacements. pb_backupbuddy::status('message', 'Replacing WordPress core database serialized data...'); $dbreplace->serialized($destination_db_prefix . 'options', $old_fullreplace, $new_fullreplace, array('option_value')); $dbreplace->serialized($multisite_network_db_prefix . 'usermeta', $old_fullreplace, $new_fullreplace, array('meta_value')); $dbreplace->serialized($destination_db_prefix . 'postmeta', $old_fullreplace, $new_fullreplace, array('meta_value')); $dbreplace->serialized($destination_db_prefix . 'commentmeta', $old_fullreplace, $new_fullreplace, array('meta_value')); pb_backupbuddy::status('message', 'WordPress core database serialized data replaced.'); if (isset(pb_backupbuddy::$options['skip_database_bruteforce']) && true === pb_backupbuddy::$options['skip_database_bruteforce']) { // skip bruteforce. pb_backupbuddy::status('details', 'Brute force database migration skipped based on advanced settings'); } else { // dont skip bruteforce. foreach ($bruteforce_tables as $bruteforce_table) { $dbreplace->bruteforce_table($bruteforce_table, $old_fullreplace, $new_fullreplace); } } // Update table prefixes in some WordPress meta data. $multisite_network_db_prefix is set to the normal prefix in non-ms environment. $old_prefix = pb_backupbuddy::$options['dat_file']['db_prefix']; $new_prefix = mysql_real_escape_string($destination_db_prefix); pb_backupbuddy::status('details', 'Old DB prefix: `' . $old_prefix . '`; New DB prefix: `' . $new_prefix . '`. Network prefix: `' . $multisite_network_db_prefix . '`'); if ($old_prefix != $new_prefix) { mysql_query("UPDATE `" . $new_prefix . "usermeta` SET meta_key = REPLACE(meta_key, '" . $old_prefix . "', '" . $new_prefix . "' );"); // usermeta table temporarily is in the new subsite's prefix until next step. pb_backupbuddy::status('details', 'Modified ' . mysql_affected_rows() . ' row(s) while updating meta_key\'s for DB prefix in subsite\'s [temporary if multisite] usermeta table from `' . mysql_real_escape_string($old_prefix) . '` to `' . mysql_real_escape_string($new_prefix) . '`.'); if (mysql_error() != '') { pb_backupbuddy::status('error', 'mysql error: ' . mysql_error()); } mysql_query("UPDATE `" . $new_prefix . "options` SET option_name = '" . $new_prefix . "user_roles' WHERE option_name ='" . $old_prefix . "user_roles' LIMIT 1"); pb_backupbuddy::status('details', 'Modified ' . mysql_affected_rows() . ' row(s) while updating option_name user_roles DB prefix in [subsite if multisite] options table to `' . mysql_real_escape_string($new_prefix) . '`.');
} elseif ($_POST['table_selection'] == 'single_table') { $bruteforce_tables = array($_POST['table']); } if ($_POST['trim_whitespace'] == 'true') { $needle = trim($_POST['needle']); $replacement = trim($_POST['replacement']); } else { $needle = $_POST['needle']; $replacement = $_POST['replacement']; } $db_replace_file = $this->get_plugin_dir('repairbuddy/lib/dbreplace/dbreplace.php', dirname(dirname(dirname(dirname(__FILE__))))); require_once $db_replace_file; $dbreplace = new pluginbuddy_dbreplace($pluginbuddy_repairbuddy); foreach ($bruteforce_tables as $bruteforce_table) { //echo 'force ' . $bruteforce_table . ' replace ' . $needle . ' with ' . $replacement . '<br>'; $dbreplace->bruteforce_table($bruteforce_table, $_POST['needle'], $_POST['replacement']); } $pluginbuddy_repairbuddy->output_status('Database replacement complete.', false); echo '<script type="text/javascript">jQuery("#pb_repairbuddy_working").hide();</script>'; echo '<br><div style="text-align: center; margin-top: 30px;"><span class="pb_fancy">Database replacement complete.</span></div>'; } else { ?> <script type="text/javascript"> jQuery(document).ready(function() { jQuery( '#pb_repairbuddy_table' ).change( function() { alert( jQuery( '#pb_repairbuddy_table' ).val() ); jQuery.post( '<?php echo $pluginbuddy_repairbuddy->page_link('database_string_replace', 'get_table_rows'); ?> ', { table: jQuery( '#pb_repairbuddy_table' ).val() },