You are here

function acquia_spi_get in Acquia Connector 7.3

Same name and namespace in other branches
  1. 6.2 acquia_spi/acquia_spi.module \acquia_spi_get()
  2. 6 acquia_spi/acquia_spi.module \acquia_spi_get()
  3. 7 acquia_spi/acquia_spi.module \acquia_spi_get()
  4. 7.2 acquia_spi/acquia_spi.module \acquia_spi_get()

Gather site profile information about this site.

Return value

array An associative array keyed by types of information.

8 calls to acquia_spi_get()
AcquiaSPITestCase::testAcquiaSpiGet in acquia_spi/tests/acquia_spi.test
Needs comment.
AcquiaSPITestCase::testAcquiaSpiMessages in acquia_spi/tests/acquia_spi.test
Needs comment.
AcquiaSPITestCase::testAcquiaSpiRevokedInstall in acquia_spi/tests/acquia_spi.test
Needs comment.
AcquiaSPITestCase::testAcquiaSpiSend in acquia_spi/tests/acquia_spi.test
Needs comment.
AcquiaSPITestCase::testAcquiaSpiSetVariables in acquia_spi/tests/acquia_spi.test
Needs comment.

... See full list

1 string reference to 'acquia_spi_get'
_acquia_spi_drush_get in acquia_spi/acquia_spi.drush.inc
If the Acquia SPI module is not enabled, include acquia_spi.module.

File

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

Code

function acquia_spi_get() {

  // Get the Drupal version.
  $drupal_version = acquia_spi_get_version_info();
  $stored = acquia_spi_data_store_get(array(
    'platform',
  ));
  if (!empty($stored['platform'])) {
    $platform = $stored['platform'];
  }
  else {
    $platform = acquia_spi_get_platform();
  }
  $acquia_hosted = acquia_spi_check_acquia_hosted();
  $environment = variable_get('acquia_spi_site_environment');
  $env_detection_enabled = variable_get('acquia_spi_env_detection_enabled');
  $server = acquia_agent_get_server_superglobal();
  if ($acquia_hosted) {
    if ($environment != $server['AH_SITE_ENVIRONMENT']) {
      variable_set('acquia_spi_site_environment', $server['AH_SITE_ENVIRONMENT']);
      $environment = $server['AH_SITE_ENVIRONMENT'];
      if ($env_detection_enabled) {
        variable_set('acquia_spi_site_machine_name', acquia_spi_get_acquia_hosted_machine_name());
      }
    }
  }
  else {
    if ($environment) {
      variable_set('acquia_spi_site_environment', NULL);
    }
    $environment = NULL;
  }
  if ($env_detection_enabled === NULL) {
    variable_set('acquia_spi_env_detection_enabled', TRUE);
  }
  $spi = array(
    'spi_data_version' => ACQUIA_SPI_DATA_VERSION,
    'site_key' => sha1(drupal_get_private_key()),
    'site_uuid' => variable_get('acquia_spi_site_uuid'),
    'env_changed_action' => variable_get('acquia_spi_environment_changed_action'),
    'acquia_hosted' => $acquia_hosted,
    'name' => variable_get('acquia_spi_site_name'),
    'machine_name' => variable_get('acquia_spi_site_machine_name'),
    'environment' => $environment,
    'modules' => acquia_spi_get_modules(),
    'platform' => $platform,
    'quantum' => acquia_spi_get_quantum(),
    'system_status' => acquia_spi_get_system_status(),
    'failed_logins' => variable_get('acquia_spi_send_watchdog', 1) ? acquia_spi_get_failed_logins() : array(),
    '404s' => variable_get('acquia_spi_send_watchdog', 1) ? acquai_spi_get_404s() : array(),
    'watchdog_size' => acquai_spi_get_watchdog_size(),
    'watchdog_data' => variable_get('acquia_spi_send_watchdog', 1) ? acquia_spi_get_watchdog_data() : array(),
    'last_nodes' => variable_get('acquia_spi_send_node_user', 1) ? acquia_spi_get_last_nodes() : array(),
    'last_users' => variable_get('acquia_spi_send_node_user', 1) ? acquia_spi_get_last_users() : array(),
    'extra_files' => acquia_spi_check_files_present(),
    'ssl_login' => acquia_spi_check_login(),
    'distribution' => isset($drupal_version['distribution']) ? $drupal_version['distribution'] : '',
    'base_version' => $drupal_version['base_version'],
    'build_data' => $drupal_version,
    'roles' => drupal_json_encode(user_roles()),
    'uid_0_present' => acquia_spi_uid_0_present(),
  );
  $scheme = parse_url(variable_get('acquia_spi_server', 'https://nspi.acquia.com'), PHP_URL_SCHEME);
  $via_ssl = in_array('ssl', stream_get_transports(), TRUE) && $scheme == 'https' ? TRUE : FALSE;
  if (variable_get('acquia_spi_ssl_override', FALSE)) {
    $via_ssl = TRUE;
  }
  $additional_data = array();
  $security_review_results = acquia_spi_run_security_review();

  // It's worth sending along node access control information even if there are
  // no modules implementing it - some alerts are simpler if we know we don't
  // have to worry about node access.
  // Check for node grants modules.
  $additional_data['node_grants_modules'] = module_implements("node_grants", TRUE);

  // Check for node access modules.
  $additional_data['node_access_modules'] = module_implements("node_access", TRUE);

  // Check for drupal_fast_404 usage.
  $additional_data['fast_404'] = acquia_spi_get_fast404();
  if (!empty($security_review_results)) {
    $additional_data['security_review'] = $security_review_results['security_review'];
  }

  // Collect all user-contributed custom tests that pass validation.
  $custom_tests_results = acquia_spi_test_collect();
  if (!empty($custom_tests_results)) {
    $additional_data['custom_tests'] = $custom_tests_results;
  }
  $spi_data = module_invoke_all('acquia_spi_get');
  if (!empty($spi_data)) {
    foreach ($spi_data as $name => $data) {
      if (is_string($name) && is_array($data)) {
        $additional_data[$name] = $data;
      }
    }
  }

  // Database updates required?
  // Based on code from system.install.
  include_once DRUPAL_ROOT . '/includes/install.inc';
  drupal_load_updates();
  $additional_data['pending_updates'] = FALSE;
  foreach (module_list() as $module) {
    $updates = drupal_get_schema_versions($module);
    if ($updates !== FALSE) {
      $default = drupal_get_installed_schema_version($module);
      if (max($updates) > $default) {
        $additional_data['pending_updates'] = TRUE;
        break;
      }
    }
  }
  if (!empty($additional_data)) {

    // JSON encode this additional data.
    $spi['additional_data'] = drupal_json_encode($additional_data);
  }
  if (!$via_ssl) {
    return $spi;
  }
  else {

    // Values returned only over SSL.
    $spi_ssl = array(
      'system_vars' => acquia_spi_get_variables_data(),
      'settings_ra' => acquia_spi_get_settings_permissions(),
      'admin_count' => variable_get('acquia_spi_admin_priv', 1) ? acquia_spi_get_admin_count() : '',
      'admin_name' => variable_get('acquia_spi_admin_priv', 1) ? acquia_spi_get_super_name() : '',
    );
    return array_merge($spi, $spi_ssl);
  }
}