. * */ namespace OCA\News\ArticleEnhancer; class Enhancer { private $enhancers = array(); public function registerEnhancer($feedUrl, ArticleEnhancer $enhancer){ $feedUrl = $this->removeTrailingSlash($feedUrl); // create hashkeys for all supported protocols for quick access $this->enhancers[$feedUrl] = $enhancer; $this->enhancers['https://' . $feedUrl] = $enhancer; $this->enhancers['http://' . $feedUrl] = $enhancer; $this->enhancers['https://www.' . $feedUrl] = $enhancer; $this->enhancers['http://www.' . $feedUrl] = $enhancer; } public function enhance($item, $feedUrl){ $feedUrl = $this->removeTrailingSlash($feedUrl); if(array_key_exists($feedUrl, $this->enhancers)) { return $this->enhancers[$feedUrl]->enhance($item); } else { return $item; } } private function removeTrailingSlash($url) { if($url[strlen($url)-1] === '/') { return substr($url, 0, -1); } else { return $url; } } }