From fd254d9c4fd86487d341a148aa1f85864d1af063 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 22 Jul 2020 12:01:42 +0300 Subject: [PATCH] [FEATURE] Add EnclosureViewHelper Used to obtain image information from a feed item. Usage in template: `` Related: #23 --- .../ViewHelpers/Item/EnclosureViewHelper.php | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Classes/ViewHelpers/Item/EnclosureViewHelper.php diff --git a/Classes/ViewHelpers/Item/EnclosureViewHelper.php b/Classes/ViewHelpers/Item/EnclosureViewHelper.php new file mode 100644 index 0000000..db42bc9 --- /dev/null +++ b/Classes/ViewHelpers/Item/EnclosureViewHelper.php @@ -0,0 +1,49 @@ +registerArgument('attribute', 'string', 'The attribute to be obtained', true, 'url'); + $this->registerArgument('key', 'int', 'The enclosure item key. Starts with 0.', false, 0); + } + + public function render() { + $attribute = $this->arguments['attribute']; + if (!in_array($attribute, ['url', 'length', 'type'], true)) { + $message = sprintf('Attribute "%s" is no valid enclosure attribute.', $attribute); + throw new \InvalidArgumentException($message, 1500032671); + } + /** @var SimplePie_Item $item */ + $item = $this->templateVariableContainer->get('item'); + /** @var SimplePie_Enclosure $enclosure */ + $enclosure = $item->get_enclosure($this->arguments['key']); + if ($enclosure) { + switch ($this->arguments['attribute']) { + case 'url': + return $enclosure->get_link(); + case 'length': + return $enclosure->get_length(); + case 'type': + return $enclosure->get_type(); + default: + return ''; + } + } + return ''; + } +}