ItemPostProcessor.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace PicoFeed\Processor;
  3. use PicoFeed\Base;
  4. use PicoFeed\Parser\Feed;
  5. use PicoFeed\Parser\Item;
  6. use PicoFeed\Config\Config;
  7. /**
  8. * Item Post Processor
  9. *
  10. * @package PicoFeed\Processor
  11. * @author Frederic Guillot
  12. */
  13. class ItemPostProcessor extends Base
  14. {
  15. /**
  16. * List of processors
  17. *
  18. * @access private
  19. * @var array
  20. */
  21. private $processors = array();
  22. /**
  23. * Execute all processors
  24. *
  25. * @access public
  26. * @param Feed $feed
  27. * @param Item $item
  28. * @return bool
  29. */
  30. public function execute(Feed $feed, Item $item)
  31. {
  32. foreach ($this->processors as $processor) {
  33. if ($processor->execute($feed, $item)) {
  34. return true;
  35. }
  36. }
  37. return false;
  38. }
  39. /**
  40. * Register a new Item post-processor
  41. *
  42. * @access public
  43. * @param ItemProcessorInterface $processor
  44. * @return ItemPostProcessor
  45. */
  46. public function register(ItemProcessorInterface $processor)
  47. {
  48. $this->processors[get_class($processor)] = $processor;
  49. return $this;
  50. }
  51. /**
  52. * Remove Processor instance
  53. *
  54. * @access public
  55. * @param string $class
  56. * @return ItemPostProcessor
  57. */
  58. public function unregister($class)
  59. {
  60. if (isset($this->processors[$class])) {
  61. unset($this->processors[$class]);
  62. }
  63. return $this;
  64. }
  65. /**
  66. * Checks whether a specific processor is registered or not
  67. *
  68. * @access public
  69. * @param string $class
  70. * @return bool
  71. */
  72. public function hasProcessor($class)
  73. {
  74. return isset($this->processors[$class]);
  75. }
  76. /**
  77. * Get Processor instance
  78. *
  79. * @access public
  80. * @param string $class
  81. * @return ItemProcessorInterface|null
  82. */
  83. public function getProcessor($class)
  84. {
  85. return isset($this->processors[$class]) ? $this->processors[$class] : null;
  86. }
  87. public function setConfig(Config $config)
  88. {
  89. foreach ($this->processors as $processor) {
  90. $processor->setConfig($config);
  91. }
  92. return false;
  93. }
  94. }