function drush_search_api_set_index_server in Search API 7
Same name and namespace in other branches
- 8 search_api.drush.inc \drush_search_api_set_index_server()
Set the server for a given index.
File
- ./search_api.drush.inc, line 552 
- Drush commands for SearchAPI.
Code
function drush_search_api_set_index_server($index_id = NULL, $server_id = NULL) {
  if (search_api_drush_static(__FUNCTION__)) {
    return;
  }
  // Make sure we have parameters to work with.
  if (empty($index_id) || empty($server_id)) {
    drush_log(dt('You must specify both an index and server.'), 'error');
    return;
  }
  // Fetch current index and server data.
  $indexes = search_api_drush_get_index($index_id);
  $servers = search_api_drush_get_server($server_id);
  if (empty($indexes) || empty($servers)) {
    // If the specified index or server can't be found, just return. An
    // appropriate error message should have been printed already.
    return;
  }
  // Set the new server on the index.
  $success = FALSE;
  $index = reset($indexes);
  $server = reset($servers);
  try {
    $success = $index
      ->update(array(
      'server' => $server->machine_name,
    ));
  } catch (SearchApiException $e) {
    drush_log($e
      ->getMessage(), 'error');
  }
  if ($success === FALSE) {
    drush_log(dt('There was an error setting index !index to use server !server.', array(
      '!index' => $index->name,
      '!server' => $server->name,
    )), 'error');
  }
  elseif (!$success) {
    drush_log(dt('Index !index was already using server !server.', array(
      '!index' => $index->name,
      '!server' => $server->name,
    )), 'ok');
  }
  else {
    drush_log(dt('Index !index has been set to use server !server and items have been queued for indexing.', array(
      '!index' => $index->name,
      '!server' => $server->name,
    )), 'ok');
  }
}