diff --git a/src/Controller/DrupalGapController.php b/src/Controller/DrupalGapController.php index f4cddd0..a5ab0dc 100644 --- a/src/Controller/DrupalGapController.php +++ b/src/Controller/DrupalGapController.php @@ -71,13 +71,14 @@ class DrupalGapController extends ControllerBase { */ public function systemConnect() { - $output = array(); - - $output['remote_addr'] = $_SERVER['REMOTE_ADDR']; - $output['user'] = $this->userSystemResources(); - $output['user_permissions'] = user_role_permissions(\Drupal::currentUser()->getRoles()); - - return json_encode($output); + $results = array(); + // Make calls to various DrupalGap resources. + $results['site_settings'] = $this->drupalgapResourceSystemSiteSettings(); + $results['remote_addr'] = $_SERVER['REMOTE_ADDR']; + $results['user'] = $this->userSystemResources(); + $results['user_permissions'] = user_role_permissions(\Drupal::currentUser()->getRoles()); + + return json_encode($results); } @@ -97,4 +98,49 @@ class DrupalGapController extends ControllerBase { return $output; } + + /** + * Returns a collection of variables from the current Drupal site. + * + * @return array + * Array of variables from the configuration. + */ + public function drupalgapResourceSystemSiteSettings() { + + // Config names. + $names = array( + // @TODO for the moment only working for 'user_register' + /*'admin_theme', + 'clean_url', + 'date_default_timezone', + 'site_name', + 'theme_default', + 'user_pictures', + 'user_email_verification',*/ + 'user.settings' => array('register'), + ); + + // Invoke hook_drupalgap_site_settings() to let others specify variable names + // to use. + if (sizeof(\Drupal::moduleHandler()->getImplementations('drupalgap_site_settings')) > 0) { + \Drupal::moduleHandler()->invokeAll('drupalgap_site_settings', $names); + } + + // Now fetch the values. + $settings = new \stdClass(); + foreach($names as $settingKeys => $settingKey) { + foreach($settingKey as $name) { + $value = \Drupal::config($settingKeys)->get($name); + $settings->variable = new \stdClass(); + $settings->variable->$name = $value; + } + } + + // Add Drupal core version into settings. + $settings->variable->drupal_core = "8"; + + return $settings->variable; + + } + }