diff options
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Processor/ItemPostProcessor.php')
-rw-r--r-- | vendor/fguillot/picofeed/lib/PicoFeed/Processor/ItemPostProcessor.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Processor/ItemPostProcessor.php b/vendor/fguillot/picofeed/lib/PicoFeed/Processor/ItemPostProcessor.php new file mode 100644 index 000000000..ff9740b78 --- /dev/null +++ b/vendor/fguillot/picofeed/lib/PicoFeed/Processor/ItemPostProcessor.php @@ -0,0 +1,84 @@ +<?php + +namespace PicoFeed\Processor; + +use PicoFeed\Base; +use PicoFeed\Parser\Feed; +use PicoFeed\Parser\Item; + +/** + * Item Post Processor + * + * @package PicoFeed\Processor + * @author Frederic Guillot + */ +class ItemPostProcessor extends Base +{ + /** + * List of processors + * + * @access private + * @var array + */ + private $processors = array(); + + /** + * Execute all processors + * + * @access public + * @param Feed $feed + * @param Item $item + * @return bool + */ + public function execute(Feed $feed, Item $item) + { + foreach ($this->processors as $processor) { + if ($processor->execute($feed, $item)) { + return true; + } + } + + return false; + } + + /** + * Register a new Item post-processor + * + * @access public + * @param ItemProcessorInterface $processor + * @return ItemPostProcessor + */ + public function register(ItemProcessorInterface $processor) + { + $this->processors[get_class($processor)] = $processor; + return $this; + } + + /** + * Remove Processor instance + * + * @access public + * @param string $class + * @return ItemPostProcessor + */ + public function unregister($class) + { + if (isset($this->processors[$class])) { + unset($this->processors[$class]); + } + + return $this; + } + + /** + * Get Processor instance + * + * @access public + * @param string $class + * @return ItemProcessorInterface|null + */ + public function getProcessor($class) + { + return isset($this->processors[$class]) ? $this->processors[$class] : null; + } +} |