MobileNumberCountryFormatter.php in Mobile Number 2.0.x
File
src/Plugin/Field/FieldFormatter/MobileNumberCountryFormatter.php
View source
<?php
namespace Drupal\mobile_number\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
class MobileNumberCountryFormatter extends FormatterBase {
public static function defaultSettings() {
return parent::defaultSettings() + [
'type' => 'name',
];
}
public function settingsForm(array $form, FormStateInterface $form_state) {
$settings = $this
->getSettings() + static::defaultSettings();
$form['type'] = [
'#type' => 'radios',
'#options' => [
'name' => t('Country name'),
'code' => t('Country code'),
],
'#default_value' => $settings['type'],
];
return parent::settingsForm($form, $form_state);
}
public function settingsSummary() {
$summary = [];
$settings = $this
->getSettings() + static::defaultSettings();
if (!empty($settings['type'])) {
$texts = [
'name' => t('Show as country name'),
'code' => t('Show as country code'),
];
$summary[] = $texts[$settings['type']];
}
return $summary;
}
public function viewElements(FieldItemListInterface $items, $langcode) {
$util = \Drupal::service('mobile_number.util');
$element = [];
$settings = $this
->getSettings() + static::defaultSettings();
foreach ($items as $delta => $item) {
if ($mobile_number = $util
->getMobileNumber($item
->getValue()['value'], NULL, [])) {
if ($settings['type'] == 'code') {
$element[$delta] = [
'#plain_text' => $util
->getCountry($mobile_number),
];
}
else {
$element[$delta] = [
'#plain_text' => $util
->getCountryName($util
->getCountry($mobile_number)),
];
}
}
}
return $element;
}
}