diff --git a/dir2cast.php b/dir2cast.php index 2b41c7c..f91f33e 100644 --- a/dir2cast.php +++ b/dir2cast.php @@ -125,6 +125,7 @@ public function __call($method, $params) } interface Podcast_Helper { + public function id(); public function appendToChannel(DOMElement $d, DOMDocument $doc); public function appendToItem(DOMElement $d, DOMDocument $doc, RSS_Item $item); public function addNamespaceTo(DOMElement $d, DOMDocument $doc); @@ -135,7 +136,10 @@ public function addNamespaceTo(DOMElement $d, DOMDocument $doc); * */ class getID3_Podcast_Helper implements Podcast_Helper { - + public function id() + { + return get_class($this); + } static $AUTO_SAVE_COVER_ART = false; public function appendToChannel(DOMElement $d, DOMDocument $doc) { /* nothing */ } @@ -206,6 +210,10 @@ public function appendToItem(DOMElement $d, DOMDocument $doc, RSS_Item $item) * */ class Caching_getID3_Podcast_Helper implements Podcast_Helper { + public function id() + { + return get_class($this); + } protected $wrapped_helper; protected $cache_dir; @@ -267,6 +275,10 @@ protected function saveToCache($filename, Serializable $item) { } class Atom_Podcast_Helper extends GetterSetter implements Podcast_Helper { + public function id() + { + return get_class($this); + } protected $self_link; @@ -312,6 +324,10 @@ public function setSelfLink($link) } class iTunes_Podcast_Helper extends GetterSetter implements Podcast_Helper { + public function id() + { + return get_class($this); + } static $ITUNES_SUBTITLE_SUFFIX = ''; @@ -554,7 +570,7 @@ public function appendToChannel(DOMElement $channel, DOMDocument $doc) public function addHelper(Podcast_Helper $helper) { - $this->helpers[] = $helper; + $this->helpers[$helper->id()] = $helper; return $helper; } } @@ -978,7 +994,7 @@ abstract class Podcast extends GetterSetter public function addHelper(Podcast_Helper $helper) { - $this->helpers[] = $helper; + $this->helpers[$helper->id()] = $helper; // attach helper to items already added. // new items will have the helper attached when they are added. @@ -1415,7 +1431,7 @@ protected function cache_is_stale($cache_date, $most_recent_modification) */ public function renew() { - touch($this->temp_file); // renew cache file life expectancy + touch($this->temp_file); // renew cache file life expectancy } public function uncache() diff --git a/test/Dir_PodcastTest.php b/test/Dir_PodcastTest.php index 39eec7b..b6e3772 100644 --- a/test/Dir_PodcastTest.php +++ b/test/Dir_PodcastTest.php @@ -165,9 +165,11 @@ public function test_helpers_added_to_found_items() $mp = $this->newPodcast(); $helper = $this->createMock(Podcast_Helper::class); + $helper->expects($this->atLeastOnce())->method('id')->willReturn('Mock1'); $helper->expects($this->exactly(4))->method('appendToItem'); $helper2 = $this->createMock(Podcast_Helper::class); + $helper2->expects($this->atLeastOnce())->method('id')->willReturn('Mock2'); $helper2->expects($this->exactly(4))->method('appendToItem'); $mp->addHelper($helper); @@ -185,9 +187,11 @@ public function test_files_added_to_podcast_obeys_ITEM_COUNT() $mp = $this->newPodcast(); $helper = $this->createMock(Podcast_Helper::class); + $helper->expects($this->atLeastOnce())->method('id')->willReturn('Mock1'); $helper->expects($this->exactly(2))->method('appendToItem'); $helper2 = $this->createMock(Podcast_Helper::class); + $helper2->expects($this->atLeastOnce())->method('id')->willReturn('Mock2'); $helper2->expects($this->exactly(2))->method('appendToItem'); $mp->addHelper($helper); diff --git a/test/PodcastHelperTest.php b/test/PodcastHelperTest.php index 2409039..51e8cf1 100644 --- a/test/PodcastHelperTest.php +++ b/test/PodcastHelperTest.php @@ -13,9 +13,11 @@ public static function setUpBeforeClass(): void public function test_helpers_applied_to_newly_added_items() { $helper = $this->createMock(Podcast_Helper::class); + $helper->expects($this->atLeastOnce())->method('id')->willReturn('Mock1'); $helper->expects($this->exactly(2))->method('appendToItem'); $helper2 = $this->createMock(Podcast_Helper::class); + $helper2->expects($this->atLeastOnce())->method('id')->willReturn('Mock2'); $helper2->expects($this->exactly(2))->method('appendToItem'); $mp = new MyPodcast(); @@ -34,9 +36,11 @@ public function test_helpers_applied_to_newly_added_items() public function test_helpers_applied_to_already_added_items() { $helper = $this->createMock(Podcast_Helper::class); + $helper->expects($this->atLeastOnce())->method('id')->willReturn('Mock1'); $helper->expects($this->exactly(2))->method('appendToItem'); $helper2 = $this->createMock(Podcast_Helper::class); + $helper2->expects($this->atLeastOnce())->method('id')->willReturn('Mock2'); $helper2->expects($this->exactly(2))->method('appendToItem'); $mp = new MyPodcast(); @@ -57,9 +61,11 @@ public function test_helpers_applied_to_already_added_items() public function test_helpers_given_opportunity_to_add_namespace() { $helper = $this->createMock(Podcast_Helper::class); + $helper->expects($this->atLeastOnce())->method('id')->willReturn('Mock1'); $helper->expects($this->once())->method('addNamespaceTo'); $helper2 = $this->createMock(Podcast_Helper::class); + $helper2->expects($this->atLeastOnce())->method('id')->willReturn('Mock2'); $helper2->expects($this->once())->method('addNamespaceTo'); $mp = new MyPodcast(); diff --git a/test/RSS_Item_getID3_Podcast_Helper_AUTO_SAVE_COVERTest.php b/test/RSS_Item_getID3_Podcast_Helper_AUTO_SAVE_COVERTest.php index 420af84..74d42eb 100644 --- a/test/RSS_Item_getID3_Podcast_Helper_AUTO_SAVE_COVERTest.php +++ b/test/RSS_Item_getID3_Podcast_Helper_AUTO_SAVE_COVERTest.php @@ -72,7 +72,7 @@ public function test_auto_save_doesnt_create_spurious_helper_duplication() mkdir('temp'); $mp = new Cached_Dir_Podcast('.', 'temp'); $mp->init(); - $getid3 = $mp->addHelper(new Caching_getID3_Podcast_Helper('tmp', new getID3_Podcast_Helper())); + $getid3 = $mp->addHelper(new Caching_getID3_Podcast_Helper('temp', new getID3_Podcast_Helper())); $atom = $mp->addHelper(new Atom_Podcast_Helper()); $itunes = $mp->addHelper(new iTunes_Podcast_Helper()); $content = $mp->generate(); @@ -84,7 +84,7 @@ public function test_auto_save_doesnt_create_spurious_helper_duplication() $mp = new Cached_Dir_Podcast('.', 'temp'); $mp->init(); - $getid3 = $mp->addHelper(new Caching_getID3_Podcast_Helper('tmp', new getID3_Podcast_Helper())); + $getid3 = $mp->addHelper(new Caching_getID3_Podcast_Helper('temp', new getID3_Podcast_Helper())); $atom = $mp->addHelper(new Atom_Podcast_Helper()); $itunes = $mp->addHelper(new iTunes_Podcast_Helper()); $content = $mp->generate();