function acquia_spi_get in Acquia Connector 6.2
Same name and namespace in other branches
- 6 acquia_spi/acquia_spi.module \acquia_spi_get()
- 7.3 acquia_spi/acquia_spi.module \acquia_spi_get()
- 7 acquia_spi/acquia_spi.module \acquia_spi_get()
- 7.2 acquia_spi/acquia_spi.module \acquia_spi_get()
Gather site profile information about this site.
Return value
An associative array keyed by types of information.
1 call to acquia_spi_get()
- 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 495 - Send site profile information (NSPI) and system data to Acquia Insight.
Code
function acquia_spi_get() {
// Get file hashes and compute serialized version.
list($hashes, $fileinfo) = acquia_spi_file_hashes();
$hashes_string = serialize($hashes);
// 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();
}
$spi = array(
'spi_data_version' => ACQUIA_SPI_DATA_VERSION,
'site_key' => sha1(drupal_get_private_key()),
'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) ? acquai_spi_get_last_nodes() : array(),
'last_users' => variable_get('acquia_spi_send_node_user', 1) ? acquai_spi_get_last_users() : array(),
'extra_files' => acquia_spi_check_files_present(),
'ssl_login' => acquia_spi_check_login(),
'file_hashes' => $hashes,
'hashes_md5' => md5($hashes_string),
'hashes_sha1' => sha1($hashes_string),
'fileinfo' => $fileinfo,
'distribution' => $drupal_version['distribution'],
'base_version' => $drupal_version['base_version'],
'build_data' => $drupal_version,
'roles' => _acquia_spi_json(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();
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 './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;
}
}
}
// 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.
// hook_node_access() is hook_access() in Drupal 6, but we place it into
// the same additional data key for ease of processing.
$additional_data['node_access_modules'] = module_implements('access', TRUE);
if (!empty($additional_data)) {
// JSON encode this additional data.
$spi['additional_data'] = _acquia_spi_json($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);
}
}