diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-22 12:14:23 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-22 12:14:23 +0200 |
commit | 19910df42e93ef370048e8d0d2609af71bf46676 (patch) | |
tree | 2a9557b219a6f3d8efb830333900473a93241b19 /articleenhancer/enhancer.php | |
parent | fa73d339df403506d58104ee60575972b88bfc09 (diff) |
fix #454, allow global enhancers
Diffstat (limited to 'articleenhancer/enhancer.php')
-rw-r--r-- | articleenhancer/enhancer.php | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/articleenhancer/enhancer.php b/articleenhancer/enhancer.php index 9aa2153d1..e0ad2ab2d 100644 --- a/articleenhancer/enhancer.php +++ b/articleenhancer/enhancer.php @@ -17,6 +17,7 @@ namespace OCA\News\ArticleEnhancer; class Enhancer { private $enhancers = []; + private $globalEnhancers = []; /** * @param string $feedUrl @@ -35,6 +36,16 @@ class Enhancer { /** + * Registers enhancers that are run for every item and after all previous + * enhancers have been run + * @param ArticleEnhancer $enhancer + */ + public function registerGlobalEnhancer (ArticleEnhancer $enhancer) { + $this->globalEnhancers[] = $enhancer; + } + + + /** * @param \OCA\News\Db\Item $item * @param string $feedUrl * @return \OCA\News\Db\Item enhanced item @@ -43,10 +54,16 @@ class Enhancer { $feedUrl = $this->removeTrailingSlash($feedUrl); if(array_key_exists($feedUrl, $this->enhancers)) { - return $this->enhancers[$feedUrl]->enhance($item); + $result = $this->enhancers[$feedUrl]->enhance($item); } else { - return $item; + $result = $item; + } + + foreach ($this->globalEnhancers as $enhancer) { + $result = $enhancer->enhance($result); } + + return $result; } |