FeedsItemUrlFormatter.php in Feeds 8.3
File
src/Plugin/Field/FieldFormatter/FeedsItemUrlFormatter.php
View source
<?php
namespace Drupal\feeds\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Drupal\feeds\FeedsItemInterface;
use InvalidArgumentException;
class FeedsItemUrlFormatter extends FeedsItemFormatterBase {
public static function defaultSettings() {
return [
'url_plain' => '',
] + parent::defaultSettings();
}
public function settingsForm(array $form, FormStateInterface $form_state) {
$elements = parent::settingsForm($form, $form_state);
$elements['url_plain'] = [
'#title' => $this
->t('Display URL as plain text'),
'#type' => 'checkbox',
'#default_value' => $this
->getSetting('url_plain'),
];
return $elements;
}
public function settingsSummary() {
$summary = [];
$settings = $this
->getSettings();
if (!empty($settings['url_plain'])) {
$summary[] = $this
->t('Show URL as plain-text');
}
else {
$summary[] = $this
->t('Show URL as link');
}
return $summary;
}
public function viewElements(FieldItemListInterface $items, $langcode) {
$element = [];
foreach ($items as $delta => $item) {
try {
$url = $this
->buildUrl($item);
$element[$delta] = $this
->generateLink($url);
} catch (InvalidArgumentException $e) {
continue;
}
}
return $element;
}
protected function buildUrl(FeedsItemInterface $item) {
return $item
->getUrl() ?: Url::fromRoute('<none>');
}
public function generateLink(Url $url) {
if ($this
->getSetting('url_plain')) {
return [
'#plain_text' => $url
->toString(),
];
}
return parent::generateLink($url);
}
}