You are here

function acquia_spi_handle_server_response in Acquia Connector 7.3

Same name and namespace in other branches
  1. 6.2 acquia_spi/acquia_spi.module \acquia_spi_handle_server_response()
  2. 7.2 acquia_spi/acquia_spi.module \acquia_spi_handle_server_response()

Act on specific elements of SPI update server response.

Parameters

mixed $spi_response: Array response from acquia_spi_send_data().

2 calls to acquia_spi_handle_server_response()
AcquiaSPITestCase::testAcquiaSpiRevokedInstall in acquia_spi/tests/acquia_spi.test
Needs comment.
acquia_spi_send_full_spi in acquia_spi/acquia_spi.module
Gather full SPI data and send to Acquia Insight.

File

acquia_spi/acquia_spi.module, line 450
Send site profile information (NSPI) and system data to Acquia Insight.

Code

function acquia_spi_handle_server_response($spi_response) {
  $changed_action = variable_get('acquia_spi_environment_changed_action');
  variable_set('acquia_spi_environment_changed_action', '');
  $site_uuid = variable_get('acquia_spi_site_uuid', NULL);
  $spi_environment_changes = isset($spi_response['spi_environment_changes']) ? drupal_json_decode($spi_response['spi_environment_changes']) : array();
  $site_blocked = array_key_exists('blocked', $spi_environment_changes) || !empty($spi_response['site_revoked']);

  // Set site_uuid if it changed or if it hasn't been previously captured.
  if (isset($spi_response['site_uuid']) && (is_null($site_uuid) || $spi_response['site_uuid'] != $site_uuid)) {
    variable_set('acquia_spi_site_uuid', $spi_response['site_uuid']);
  }

  // Wipe the site_uuid if it is set locally, but NSPI is trying to create a new
  // site.
  if (isset($spi_response['site_uuid']) && empty($spi_response['site_uuid']) && !is_null($site_uuid)) {
    variable_del('acquia_spi_site_uuid');
  }

  // Address any actions taken based on a site environment change.
  if (!empty($changed_action) || $site_blocked) {
    if ($changed_action == 'create' && isset($spi_response['site_uuid'])) {
      variable_set('acquia_spi_site_uuid', $spi_response['site_uuid']);
    }
    elseif ($changed_action == 'block' && isset($spi_response['spi_error']) && empty($spi_response['spi_error']) || $site_blocked) {
      variable_set('acquia_spi_blocked', TRUE);
    }
    elseif ($changed_action == 'unblock' && isset($spi_response['spi_error']) && empty($spi_response['spi_error'])) {
      variable_set('acquia_spi_blocked', FALSE);
    }

    // If there were no errors, clear any pending actions.
    if (empty($spi_response['spi_error'])) {
      variable_set('acquia_spi_environment_changes', array());
    }
  }

  // Check result for command to update SPI definition.
  $update = isset($spi_response['update_spi_definition']) ? $spi_response['update_spi_definition'] : FALSE;
  if ($update === TRUE) {
    acquia_spi_update_definition();
  }

  // Check for set_variables command.
  $set_variables = isset($spi_response['set_variables']) ? $spi_response['set_variables'] : FALSE;
  if ($set_variables !== FALSE) {
    acquia_spi_set_variables($set_variables);
  }

  // Log messages.
  $messages = isset($spi_response['nspi_messages']) ? $spi_response['nspi_messages'] : FALSE;
  if ($messages !== FALSE) {
    watchdog('acquia spi', 'SPI update server response messages: @messages', array(
      '@messages' => implode(', ', $messages),
    ));
  }
}