You are here

protected function SocialMediaLinksFieldBaseWidget::getAvailablePlatforms in Social Media Links Block and Field 8.2

Returns the list of platforms that was selected in field settings.

Return value

array $available_platforms

2 calls to SocialMediaLinksFieldBaseWidget::getAvailablePlatforms()
SocialMediaLinksFieldBaseWidget::getAvailablePlatformOptions in modules/social_media_links_field/src/Plugin/Field/FieldWidget/SocialMediaLinksFieldBaseWidget.php
Returns the available platforms as options array.
SocialMediaLinksFieldDefaultWidget::formElement in modules/social_media_links_field/src/Plugin/Field/FieldWidget/SocialMediaLinksFieldDefaultWidget.php
Returns the form for a single field widget.

File

modules/social_media_links_field/src/Plugin/Field/FieldWidget/SocialMediaLinksFieldBaseWidget.php, line 35

Class

SocialMediaLinksFieldBaseWidget
It allows to link social media.

Namespace

Drupal\social_media_links_field\Plugin\Field\FieldWidget

Code

protected function getAvailablePlatforms() {
  $platforms = \Drupal::service('plugin.manager.social_media_links.platform')
    ->getPlatforms();
  $platform_settings = $this->fieldDefinition
    ->getSetting('platforms');
  $available_platforms = [];
  foreach ($platforms as $platform_id => $platform) {
    if (isset($platform_settings[$platform_id]['enabled']) && $platform_settings[$platform_id]['enabled']) {
      $available_platforms[$platform_id] = $platform;
      $available_platforms[$platform_id]['weight'] = $platform_settings[$platform_id]['weight'];
    }
  }

  // If the array if empty no platform was selected which means, that all
  // platforms are available.
  if (empty($available_platforms)) {
    $available_platforms = $platforms;
    foreach ($platforms as $platform_id => $platform) {
      $available_platforms[$platform_id]['weight'] = isset($platform_settings[$platform_id]['weight']) ? $platform_settings[$platform_id]['weight'] : 0;
    }
  }
  uasort($available_platforms, [
    'Drupal\\Component\\Utility\\SortArray',
    'sortByWeightElement',
  ]);
  return $available_platforms;
}