<?php

// wp-nginx-map.php (JSON version)

// Load wordpress api.
define('WP_CACHE',false);
require_once(__DIR__ . '/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();