You are here

class GeolocationFieldProvider in Geolocation Field 8.3

Same name and namespace in other branches
  1. 8.2 src/Plugin/geolocation/DataProvider/GeolocationFieldProvider.php \Drupal\geolocation\Plugin\geolocation\DataProvider\GeolocationFieldProvider

Provides default geolocation field.

Plugin annotation


@DataProvider(
  id = "geolocation_field_provider",
  name = @Translation("Geolocation Field"),
  description = @Translation("Geolocation Field."),
)

Hierarchy

Expanded class hierarchy of GeolocationFieldProvider

File

src/Plugin/geolocation/DataProvider/GeolocationFieldProvider.php, line 21

Namespace

Drupal\geolocation\Plugin\geolocation\DataProvider
View source
class GeolocationFieldProvider extends DataProviderBase implements DataProviderInterface {

  /**
   * {@inheritdoc}
   */
  public function getTokenHelp(FieldDefinitionInterface $fieldDefinition = NULL) {
    $element = parent::getTokenHelp($fieldDefinition);
    $element['token_items'][] = [
      'token' => [
        '#plain_text' => '[geolocation_current_item:lat_sex]',
      ],
      'description' => [
        '#plain_text' => $this
          ->t('Latitude value in sexagesimal notation'),
      ],
    ];
    $element['token_items'][] = [
      'token' => [
        '#plain_text' => '[geolocation_current_item:lng_sex]',
      ],
      'description' => [
        '#plain_text' => $this
          ->t('Longitude value in sexagesimal notation'),
      ],
    ];
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public function replaceFieldItemTokens($text, FieldItemInterface $fieldItem) {
    $token_context['geolocation_current_item'] = $fieldItem;
    $text = \Drupal::token()
      ->replace($text, $token_context, [
      'callback' => [
        $this,
        'geolocationItemTokens',
      ],
      'clear' => FALSE,
    ]);
    return parent::replaceFieldItemTokens($text, $fieldItem);
  }

  /**
   * {@inheritdoc}
   */
  public function geolocationItemTokens(array &$replacements, array $data, array $options) {
    if (isset($data['geolocation_current_item'])) {

      /** @var \Drupal\geolocation\Plugin\Field\FieldType\GeolocationItem $item */
      $item = $data['geolocation_current_item'];
      $replacements['[geolocation_current_item:lat_sex]'] = GeolocationItem::decimalToSexagesimal($item
        ->get('lat')
        ->getValue());
      $replacements['[geolocation_current_item:lng_sex]'] = GeolocationItem::decimalToSexagesimal($item
        ->get('lng')
        ->getValue());

      // Handle data tokens.
      $metadata = $item
        ->get('data')
        ->getValue();
      if (is_array($metadata) || $metadata instanceof \Traversable) {
        foreach ($metadata as $key => $value) {
          try {

            // Maybe there is values inside the values.
            if (is_array($value) || $value instanceof \Traversable) {
              foreach ($value as $deepkey => $deepvalue) {
                if (is_string($deepvalue)) {
                  $replacements['[geolocation_current_item:data:' . $key . ':' . $deepkey . ']'] = (string) $deepvalue;
                }
              }
            }
            else {
              $replacements['[geolocation_current_item:data:' . $key . ']'] = (string) $value;
            }
          } catch (\Exception $e) {
            watchdog_exception('geolocation', $e);
          }
        }
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function isViewsGeoOption(FieldPluginBase $views_field) {
    return $views_field
      ->getPluginId() == 'geolocation_field';
  }

  /**
   * {@inheritdoc}
   */
  public function isFieldGeoOption(FieldDefinitionInterface $fieldDefinition) {
    return $fieldDefinition
      ->getType() == 'geolocation';
  }

  /**
   * {@inheritdoc}
   */
  public function getPositionsFromItem(FieldItemInterface $fieldItem) {
    if ($fieldItem instanceof GeolocationItem) {
      return [
        [
          'lat' => $fieldItem
            ->get('lat')
            ->getValue(),
          'lng' => $fieldItem
            ->get('lng')
            ->getValue(),
        ],
      ];
    }
    return FALSE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DataProviderBase::$entityFieldManager protected property Entity field manager.
DataProviderBase::$fieldDefinition protected property Field definition.
DataProviderBase::$viewsField protected property Views field.
DataProviderBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 1
DataProviderBase::defaultSettings protected function Default settings. 2
DataProviderBase::fieldItemTokens public function Token replacement support function, callback to token replacement function.
DataProviderBase::getFieldItemsFromViewsRow protected function
DataProviderBase::getLocationsFromItem public function Get locations from field item list. Overrides DataProviderInterface::getLocationsFromItem 2
DataProviderBase::getLocationsFromViewsRow public function Get locations from views row. Overrides DataProviderInterface::getLocationsFromViewsRow 1
DataProviderBase::getPositionsFromViewsRow public function Get positions from views row. Overrides DataProviderInterface::getPositionsFromViewsRow 1
DataProviderBase::getSettings protected function Add default settings.
DataProviderBase::getSettingsForm public function Provide data provider settings form array. Overrides DataProviderInterface::getSettingsForm 3
DataProviderBase::getShapesFromItem public function Get shapes from field item list. Overrides DataProviderInterface::getShapesFromItem 2
DataProviderBase::getShapesFromViewsRow public function Get shapes from views row. Overrides DataProviderInterface::getShapesFromViewsRow 1
DataProviderBase::setFieldDefinition public function Set field definition. Overrides DataProviderInterface::setFieldDefinition
DataProviderBase::setViewsField public function Set views field. Overrides DataProviderInterface::setViewsField
DataProviderBase::__construct public function Constructs a new GeocoderBase object. Overrides PluginBase::__construct 1
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
GeolocationFieldProvider::geolocationItemTokens public function
GeolocationFieldProvider::getPositionsFromItem public function Get positions from field item list. Overrides DataProviderBase::getPositionsFromItem
GeolocationFieldProvider::getTokenHelp public function Return field item tokens. Overrides DataProviderBase::getTokenHelp
GeolocationFieldProvider::isFieldGeoOption public function Determine valid field geo option. Overrides DataProviderInterface::isFieldGeoOption
GeolocationFieldProvider::isViewsGeoOption public function Determine valid views option. Overrides DataProviderBase::isViewsGeoOption
GeolocationFieldProvider::replaceFieldItemTokens public function Replace field item tokens. Overrides DataProviderBase::replaceFieldItemTokens
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.