You are here

public function GeocodeFormatterBase::getEnabledGeocoderProviders in Geocoder 8.3

Returns the Geocoder providers that are enabled in this formatter.

Return value

\Drupal\geocoder\Entity\GeocoderProvider[] The enabled Geocoder providers, sorted by weight.

5 calls to GeocodeFormatterBase::getEnabledGeocoderProviders()
AddressGeocodeFormatter::viewElements in modules/geocoder_address/src/Plugin/Field/FieldFormatter/AddressGeocodeFormatter.php
Builds a renderable array for a field value.
FileGeocodeFormatter::getEnabledGeocoderProviders in modules/geocoder_field/src/Plugin/Field/FieldFormatter/FileGeocodeFormatter.php
Returns the Geocoder providers that are enabled in this formatter.
GeocodeFormatterBase::settingsSummary in modules/geocoder_field/src/Plugin/Field/GeocodeFormatterBase.php
Returns a short summary for the current formatter settings.
GeocodeFormatterBase::viewElements in modules/geocoder_field/src/Plugin/Field/GeocodeFormatterBase.php
Builds a renderable array for a field value.
ReverseGeocodeGeofieldFormatter::viewElements in modules/geocoder_geofield/src/Plugin/Field/FieldFormatter/ReverseGeocodeGeofieldFormatter.php
Builds a renderable array for a field value.
1 method overrides GeocodeFormatterBase::getEnabledGeocoderProviders()
FileGeocodeFormatter::getEnabledGeocoderProviders in modules/geocoder_field/src/Plugin/Field/FieldFormatter/FileGeocodeFormatter.php
Returns the Geocoder providers that are enabled in this formatter.

File

modules/geocoder_field/src/Plugin/Field/GeocodeFormatterBase.php, line 273

Class

GeocodeFormatterBase
Base Plugin implementation of the Geocode formatter.

Namespace

Drupal\geocoder_field\Plugin\Field

Code

public function getEnabledGeocoderProviders() : array {
  $formatter_settings = $this
    ->getSetting('providers');

  // Filter out all providers that are disabled.
  $providers = array_filter($this->geocoderProviders, function (GeocoderProvider $provider) use ($formatter_settings) : bool {
    return !empty($formatter_settings[$provider
      ->id()]) && $formatter_settings[$provider
      ->id()]['checked'] == TRUE;
  });

  // Sort providers according to weight.
  uasort($providers, function (GeocoderProvider $a, GeocoderProvider $b) use ($formatter_settings) : int {
    if ((int) $formatter_settings[$a
      ->id()]['weight'] === (int) $formatter_settings[$b
      ->id()]['weight']) {
      return 0;
    }
    return (int) $formatter_settings[$a
      ->id()]['weight'] < (int) $formatter_settings[$b
      ->id()]['weight'] ? -1 : 1;
  });
  return $providers;
}