diff --git a/bin/noblogs.in b/bin/noblogs.in index 418021f43cd83ad4db10cc5365dc2aa2236805b4..e912cae6413f832a24ad137e1f08f852efca7c2a 100755 --- a/bin/noblogs.in +++ b/bin/noblogs.in @@ -194,20 +194,26 @@ function do_dump_shards($args) { echo "\n"; } +function print_blogs($blogs, $print_url) { + foreach ($blogs as $blog) { + if ($print_url) { + echo("{$blog->domain}\n"); + } else { + echo("{$blog->blog_id}\n"); + } + } +} + // 'print-all-blogs': List all blog IDs. function do_print_all_blogs($args) { - $blogs = noblogs_get_blogs(); - foreach ($blogs as $blog) { - echo "{$blog->blog_id}\n"; - } + print_blogs(noblogs_get_blogs(), + (count($args) > 0 && $args[0] == "--urls")); } // 'print-local-blogs': List the blog IDs that are local to this machine. function do_print_local_blogs($args) { - $local_blogs = noblogs_get_local_blogs(); - foreach ($local_blogs as $b) { - echo $b . "\n"; - } + print_blogs(noblogs_get_local_blog_objects(), + (count($args) > 0 && $args[0] == "--urls")); } // 'remove-network-upgrade-message': Remove the annoying "network diff --git a/lib/blogs.php b/lib/blogs.php index 3055e2236b5b5dfafcdd6ca4b7f322ffa020f7b2..402fb210c12f65ecf19aa61a39d060071741b12b 100644 --- a/lib/blogs.php +++ b/lib/blogs.php @@ -1,15 +1,30 @@ <?php -// Return a list of all blog IDs. +// Return a list of all blogs (only blog_id and domain attrs). // (Does not include deleted and archived blogs). function noblogs_get_blogs() { global $wpdb; - $sql = "SELECT blog_id FROM $wpdb->blogs WHERE deleted = 0 AND archived = '0'"; + $sql = "SELECT blog_id, domain FROM $wpdb->blogs WHERE deleted = 0 AND archived = 0"; $result = $wpdb->get_results($sql); return ($result); } +// Return a list of local blog objects (only blog_id and domain attrs). +function noblogs_get_local_blog_objects() { + global $wpdb; + $blog_ids = noblogs_get_local_blogs(); + $n = count($blog_ids); + $blogs = array(); + for ($i = 0; $i < $n; $i += 100) { + $ids = array_slice($blog_ids, $i, 100); + $sql = "SELECT blog_id, domain FROM $wpdb->blogs WHERE deleted = 0 AND archived = 0 AND blog_id IN (" . implode(",", $ids) . ")"; + $result = $wpdb->get_results($sql); + array_push($blogs, ...$result); + } + return $blogs; +} + // Find a blog by its name or ID. function noblogs_get_blog($blogname) { global $wpdb;