From cff39fc3e669488e1d6e7b581b4246c703ca11a2 Mon Sep 17 00:00:00 2001 From: root <root@rivolta.investici.org> Date: Sun, 6 Mar 2011 01:40:07 +0000 Subject: [PATCH] a few fixes to the global wpdb_hash instance (moved into $wpdb) --- db-backends.php | 2 +- db-hash.php | 6 +++--- tools/db-migrate-to-new-schema.php | 19 +++++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/db-backends.php b/db-backends.php index af79164..d7eafc9 100644 --- a/db-backends.php +++ b/db-backends.php @@ -1,6 +1,6 @@ <?php -function noblogs_load_backends($db_config_file, &$hashptr) { +function noblogs_load_backends($db_config_file, $hashptr) { global $wpdb; $backend_map = array(); diff --git a/db-hash.php b/db-hash.php index 2c14ce2..6f69aaf 100644 --- a/db-hash.php +++ b/db-hash.php @@ -1,15 +1,15 @@ <?php -require_once('flexihash.php'); +require_once(dirname(__FILE__) . '/flexihash.php'); -$wpdb_hash = new Flexihash(); +$wpdb->hash_map = new Flexihash(); /* Hashing function to map blogs to databases. * * Implements a consistent hashing scheme using Flexihash. */ function noblogs_db_callback($query, $wpdb) { - global $wpdb_hash; + $wpdb_hash = $wpdb->hash_map; if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $wpdb->table, $matches)) { $blog_id = $matches[1]; return $wpdb_hash->lookup($blog_id); diff --git a/tools/db-migrate-to-new-schema.php b/tools/db-migrate-to-new-schema.php index e393de0..b1083e7 100755 --- a/tools/db-migrate-to-new-schema.php +++ b/tools/db-migrate-to-new-schema.php @@ -5,7 +5,7 @@ define('WP_CACHE',false); /** Setup WordPress environment */ require_once('wp-load.php'); -require_once('db-config-new.php'); +require_once('db-config.php'); function old_hash($dbid) { @@ -24,11 +24,10 @@ function old_hash($dbid) { } } -function new_hash($dbid) { - global $wpdb_hash; - global $wpdb_reverse_backend_map; - $lookup = $wpdb_hash->lookup($dbid); - $backend = $wpdb_reverse_backend_map[$lookup]; +function new_hash($dbid, $reversemap) { + global $wpdb; + $lookup = $wpdb->hash_map->lookup($dbid); + $backend = $reversemap[$lookup]; $result = array(); if (preg_match('/^(.*):([0-9]*)$/', $backend['host'], $matches)) { $result['host'] = $matches[1]; @@ -54,11 +53,15 @@ function get_all_blogs() { global $wpdb; - $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 1 AND deleted = 0 AND archived = '0' ORDER BY domain, path"; +// $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 1 AND deleted = 0 AND archived = '0' ORDER BY domain, path"; + $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 0 ORDER BY domain, path"; $result = $wpdb->get_results($sql); return ($result); } +$hashmap = new Flexihash(); +$reverse_backend_map = noblogs_load_backends(NOBLOGS_BACKEND_CONFIG, $hashmap); + $new_counts = array(); $moved_count = 0; $blogs = get_all_blogs(); @@ -67,7 +70,7 @@ foreach ($blogs as $blog) { $old_params = old_hash($blog_id); $old_dburi = mysqlurl($old_params); - $new_params = new_hash($blog_id); + $new_params = new_hash($blog_id, $reverse_backend_map); $new_dburi = mysqlurl($new_params); if ($new_counts[$new_params['host']]) { -- GitLab