From e1b500325b76656fcc3a9c109b52fa679f0a3e2b Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Mon, 17 Dec 2018 21:54:50 +0000
Subject: [PATCH] Add JSON shard map generator

---
 wp-nginx-map-json.php | 47 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100644 wp-nginx-map-json.php

diff --git a/wp-nginx-map-json.php b/wp-nginx-map-json.php
new file mode 100644
index 000000000..b5f9490ae
--- /dev/null
+++ b/wp-nginx-map-json.php
@@ -0,0 +1,47 @@
+<?php
+
+// wp-nginx-map.php (JSON version)
+
+// Load wordpress api.
+define('WP_CACHE',false);
+require_once('/opt/noblogs/www/wp-load.php');
+
+// Return all blogs.
+function get_blogs() {
+  global $wpdb;
+  $sql = "SELECT blog_id, domain FROM $wpdb->blogs WHERE deleted = 0 AND archived = '0' ORDER BY domain ASC";
+  $result = $wpdb->get_results($sql);
+  return ($result);
+}
+
+function backend_to_shard_id($backend) {
+  if (substr($backend, 0, 8) != 'backend_') {
+    error_log('diamine, di questo backend non so che farmene: ' . $backend);
+    return '0';
+  }
+  return substr($backend, 8);
+}
+
+// Print the blog -> shard_id map.
+function generate_shard_map($blogs) {
+  global $wpdb;
+  $wpdb_hash = &$wpdb->hash_map;
+
+  $shard_map = array();
+  foreach ($blogs as $blog) {
+    $blog_id = $blog->blog_id;
+    if ($blog_id == 1)
+      continue;
+    $backend_id = $wpdb_hash->lookup($blog_id);
+    $shard_id = backend_to_shard_id($backend_id);
+    $shard_map[$blog->domain] = $shard_id;
+  }
+  echo json_encode($shard_map);
+}
+
+function generate_maps() {
+  $all_blogs = get_blogs();
+  generate_shard_map($all_blogs);
+}
+
+generate_maps();
-- 
GitLab