Skip to content

Commit cd4cfda

Browse files
author
Harrison Ifeanyichukwu
committed
feat: cordinate the feed items, create item instances from the appropriate item model
1 parent c691e73 commit cd4cfda

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/Feeds/BaseFeed.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
use Forensic\FeedParser\Enums\FeedTypes;
77
use Forensic\FeedParser\XPath;
88
use Forensic\FeedParser\Traits\Parser;
9+
use Forensic\FeedParser\Enums\FeedItemTypes;
10+
use Forensic\FeedParser\FeedItems\ATOMFeedItem;
11+
use Forensic\FeedParser\FeedItems\RSSFeedItem;
12+
use Forensic\FeedParser\FeedItems\RDFFeedItem;
913

1014
class BaseFeed
1115
{
@@ -98,5 +102,23 @@ public function __construct(FeedTypes $feed_type, string $default_lang, XPath $x
98102
//register namespaces and parse the feed
99103
$xpath->registerNamespaces($namespaces);
100104
$this->parse($xpath, $property_selectors, $remove_styles, $remove_scripts);
105+
106+
$item_class = null;
107+
switch($feed_type->value())
108+
{
109+
case FeedItemTypes::ATOM_FEED_ITEM:
110+
$item_class = ATOMFeedItem::class;
111+
break;
112+
case FeedItemTypes::RSS_FEED_ITEM:
113+
$item_class = RSSFeedItem::class;
114+
break;
115+
default:
116+
$item_class = RDFFeedItem::class;
117+
}
118+
119+
//get items and parse
120+
$items = $xpath->selectAltNodes($item_selector);
121+
for ($i = 0, $len = $items->length; $i < $len; $i++)
122+
$this->_items[] = new $item_class($items->item($i), $xpath, $remove_styles, $remove_scripts);
101123
}
102124
}

0 commit comments

Comments
 (0)