33namespace librarianphp \Web ;
44
55use Librarian \Content ;
6+ use Librarian \Provider \FeedServiceProvider ;
67use Librarian \WebController ;
78use Librarian \Provider \ContentServiceProvider ;
89use Suin \RSSWriter \Channel ;
@@ -13,38 +14,10 @@ class FeedController extends WebController
1314{
1415 public function handle (): void
1516 {
16- $ feed = new Feed ();
17- $ channel = new Channel ();
18- $ channel
19- ->title ($ this ->getApp ()->config ->site_name )
20- ->description ($ this ->getApp ()->config ->site_description )
21- ->url ($ this ->getApp ()->config ->site_url )
22- ->feedUrl ($ this ->getApp ()->config ->site_url . '/feed ' )
23- ->language ('en-US ' )
24- ->copyright ('Copyright ' . date ('Y ' ) . ', ' . $ this ->getApp ()->config ->site_name )
25- ->pubDate (strtotime (date ('Y-m-d H:i:s ' )))
26- ->lastBuildDate (strtotime (date ('Y-m-d H:i:s ' )))
27- ->ttl (60 )
28- ->appendTo ($ feed );
17+ /** @var FeedServiceProvider $feed_provider */
18+ $ feed_provider = $ this ->getApp ()->feed ;
2919
30- /** @var ContentServiceProvider $content_provider */
31- $ content_provider = $ this ->getApp ()->content ;
32- $ content_list = $ content_provider ->fetchAll ();
33-
34- /** @var Content $content */
35- foreach ($ content_list as $ content ) {
36- $ item = new Item ();
37- $ item
38- ->title ($ content ->title ?? '' )
39- ->description ('<div> ' .($ content ->description ?? '' ).'</div> ' )
40- ->contentEncoded ('<div> ' .($ content ->description ?? '' ).'</div> ' )
41- ->url ($ this ->getApp ()->config ->site_url . '/ ' . $ content ->getLink ())
42- ->author ($ this ->getApp ()->config ->site_author )
43- ->pubDate (strtotime ($ content ->getDate ()))
44- ->guid ($ this ->getApp ()->config ->site_url . '/ ' . $ content ->getLink (), true )
45- ->preferCdata (true ) // By this, title and description become CDATA wrapped HTML.
46- ->appendTo ($ channel );
47- }
20+ $ feed = $ feed_provider ->buildFeed ();
4821
4922 header ('Content-type: application/rss+xml ' );
5023 echo $ feed ;
0 commit comments