/**
  * @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);
     }
 }