/** * @return array */ public function getVariablesData() { return parent::getVariablesData(); }
/** * Gather site profile information about this site. * * @param string $method * Optional identifier for the method initiating request. * Values could be 'cron' or 'menu callback' or 'drush'. * * @return array * An associative array keyed by types of information. */ public function get($method = '') { // Get file hashes and compute serialized version. list($hashes, $fileinfo) = $this->getFileHashes(); $hashes_string = serialize($hashes); // Get the Drupal version $drupal_version = $this->getVersionInfo(); $stored = $this->dataStoreGet(array('platform')); if (!empty($stored['platform'])) { $platform = $stored['platform']; } else { $platform = $this->getPlatform(); } $spi = array('rpc_version' => ACQUIA_SPI_DATA_VERSION, 'spi_data_version' => ACQUIA_SPI_DATA_VERSION, 'site_key' => sha1(\Drupal::service('private_key')->get()), 'modules' => $this->getModules(), 'platform' => $platform, 'quantum' => $this->getQuantum(), 'system_status' => $this->getSystemStatus(), 'failed_logins' => $this->config('acquia_connector.settings')->get('spi.send_watchdog') ? $this->getFailedLogins() : array(), '404s' => $this->config('acquia_connector.settings')->get('spi.send_watchdog') ? $this->get404s() : array(), 'watchdog_size' => $this->getWatchdogSize(), 'watchdog_data' => $this->config('acquia_connector.settings')->get('spi.send_watchdog') ? $this->getWatchdogData() : array(), 'last_nodes' => $this->config('acquia_connector.settings')->get('spi.send_node_user') ? $this->getLastNodes() : array(), 'last_users' => $this->config('acquia_connector.settings')->get('spi.send_node_user') ? $this->getLastUsers() : array(), 'extra_files' => $this->checkFilesPresent(), 'ssl_login' => $this->checkLogin(), 'file_hashes' => $hashes, 'hashes_md5' => md5($hashes_string), 'hashes_sha1' => sha1($hashes_string), 'fileinfo' => $fileinfo, 'distribution' => isset($drupal_version['distribution']) ? $drupal_version['distribution'] : '', 'base_version' => $drupal_version['base_version'], 'build_data' => $drupal_version, 'roles' => Json::encode(user_roles()), 'uid_0_present' => $this->getUidZerroIsPresent()); $scheme = parse_url($this->config('acquia_connector.settings')->get('spi.server'), PHP_URL_SCHEME); $via_ssl = in_array('ssl', stream_get_transports(), TRUE) && $scheme == 'https' ? TRUE : FALSE; if ($this->config('acquia_connector.settings')->get('spi.ssl_override')) { $via_ssl = TRUE; } $additional_data = array(); $security_review = new SecurityReviewController(); $security_review_results = $security_review->runSecurityReview(); // 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'] = \Drupal::moduleHandler()->getImplementations('node_grants'); // Check for node access modules. $additional_data['node_access_modules'] = \Drupal::moduleHandler()->getImplementations('node_access'); 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 = $this->testCollect(); if (!empty($custom_tests_results)) { $additional_data['custom_tests'] = $custom_tests_results; } $spi_data = \Drupal::moduleHandler()->invokeAll('acquia_connector_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 $additional_data['pending_updates'] = FALSE; foreach (\Drupal::moduleHandler()->getModuleList() as $module => $filename) { $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 (!$additional_data['pending_updates'] && \Drupal::service('entity.definition_update_manager')->needsUpdates()) { $additional_data['pending_updates'] = TRUE; } if (!empty($additional_data)) { // JSON encode this additional data. $spi['additional_data'] = json_encode($additional_data); } if (!empty($method)) { $spi['send_method'] = $method; } if (!$via_ssl) { return $spi; } else { $variablesController = new VariablesController(); // Values returned only over SSL $spi_ssl = array('system_vars' => $variablesController->getVariablesData(), 'settings_ra' => $this->getSettingsPermissions(), 'admin_count' => $this->config('acquia_connector.settings')->get('spi.admin_priv') ? $this->getAdminCount() : '', 'admin_name' => $this->config('acquia_connector.settings')->get('spi.admin_priv') ? $this->getSuperName() : ''); return array_merge($spi, $spi_ssl); } }