You are here

public function MapProviderBase::getSettings in Geolocation Field 8.3

Same name and namespace in other branches
  1. 8.2 src/MapProviderBase.php \Drupal\geolocation\MapProviderBase::getSettings()

Provide map provider specific settings ready to handover to JS.

Parameters

array $settings: Current general map settings. Might contain unrelated settings as well.

Return value

array An array only containing keys defined in this plugin.

Overrides MapProviderInterface::getSettings

5 calls to MapProviderBase::getSettings()
Baidu::getSettings in modules/geolocation_baidu/src/Plugin/geolocation/MapProvider/Baidu.php
Provide map provider specific settings ready to handover to JS.
GoogleMapsProviderBase::getSettings in modules/geolocation_google_maps/src/GoogleMapsProviderBase.php
Provide map provider specific settings ready to handover to JS.
Here::getSettings in modules/geolocation_here/src/Plugin/geolocation/MapProvider/Here.php
Provide map provider specific settings ready to handover to JS.
Leaflet::getSettings in modules/geolocation_leaflet/src/Plugin/geolocation/MapProvider/Leaflet.php
Provide map provider specific settings ready to handover to JS.
Yandex::getSettings in modules/geolocation_yandex/src/Plugin/geolocation/MapProvider/Yandex.php
Provide map provider specific settings ready to handover to JS.
5 methods override MapProviderBase::getSettings()
Baidu::getSettings in modules/geolocation_baidu/src/Plugin/geolocation/MapProvider/Baidu.php
Provide map provider specific settings ready to handover to JS.
GoogleMapsProviderBase::getSettings in modules/geolocation_google_maps/src/GoogleMapsProviderBase.php
Provide map provider specific settings ready to handover to JS.
Here::getSettings in modules/geolocation_here/src/Plugin/geolocation/MapProvider/Here.php
Provide map provider specific settings ready to handover to JS.
Leaflet::getSettings in modules/geolocation_leaflet/src/Plugin/geolocation/MapProvider/Leaflet.php
Provide map provider specific settings ready to handover to JS.
Yandex::getSettings in modules/geolocation_yandex/src/Plugin/geolocation/MapProvider/Yandex.php
Provide map provider specific settings ready to handover to JS.

File

src/MapProviderBase.php, line 69

Class

MapProviderBase
Provide Map Provider Base class.

Namespace

Drupal\geolocation

Code

public function getSettings(array $settings) {
  $default_settings = $this
    ->getDefaultSettings();
  $settings = array_replace_recursive($default_settings, $settings);
  foreach ($settings as $key => $setting) {
    if (!isset($default_settings[$key])) {
      unset($settings[$key]);
    }
  }
  foreach ($this->mapFeatureManager
    ->getMapFeaturesByMapType($this
    ->getPluginId()) as $feature_id => $feature_definition) {
    if (!empty($settings['map_features'][$feature_id]['enabled'])) {
      $feature = $this->mapFeatureManager
        ->getMapFeature($feature_id, []);
      if ($feature) {
        if (empty($settings['map_features'][$feature_id]['settings'])) {
          $settings['map_features'][$feature_id]['settings'] = $feature
            ->getSettings([]);
        }
        else {
          $settings['map_features'][$feature_id]['settings'] = $feature
            ->getSettings($settings['map_features'][$feature_id]['settings']);
        }
      }
      else {
        unset($settings['map_features'][$feature_id]);
      }
    }
  }
  return $settings;
}