SocialMediaLinksFieldBaseWidget.php in Social Media Links Block and Field 8.2
File
modules/social_media_links_field/src/Plugin/Field/FieldWidget/SocialMediaLinksFieldBaseWidget.php
View source
<?php
namespace Drupal\social_media_links_field\Plugin\Field\FieldWidget;
use Drupal\Core\Field\WidgetBase;
abstract class SocialMediaLinksFieldBaseWidget extends WidgetBase {
protected function getAvailablePlatformOptions() {
$available_platforms = $this
->getAvailablePlatforms();
$options = [];
foreach ($available_platforms as $platform_id => $platform) {
$options[$platform_id] = $platform['name']
->render();
}
return $options;
}
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 (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;
}
}