diff options
| author | horus | 2020-04-11 19:44:37 +0200 |
|---|---|---|
| committer | horus | 2020-04-11 19:44:37 +0200 |
| commit | 3afd5b2fd1f217f12ecad465449524fe93cacf09 (patch) | |
| tree | 0e495bb39f3f2c27b7bd2a53b5ffb1daab06057c /app/Libraries/Helper.php | |
| parent | 6bb11edffaa0850f741022b608a4c032986b45c4 (diff) | |
| download | curious-3afd5b2fd1f217f12ecad465449524fe93cacf09.tar.gz | |
Adds RSS- and Atom-Feeds.
Diffstat (limited to 'app/Libraries/Helper.php')
| -rw-r--r-- | app/Libraries/Helper.php | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/app/Libraries/Helper.php b/app/Libraries/Helper.php index d85d216..69e7de6 100644 --- a/app/Libraries/Helper.php +++ b/app/Libraries/Helper.php @@ -15,4 +15,77 @@ class Helper { public static function formatTimestamp($timestamp) { return Carbon::createFromTimestamp($timestamp)->format("Y-m-d"); } + + public static function makeFeed($model, $title, $cache = 60) { + + switch($title) { + case("new"): + $feed_title = 'Newest Articles'; + $feed_description = 'Newest interesting articles from Wikipedia. Keep exploring.'; + break; + case( "popular"): + $feed_title = 'Popular Articles'; + $feed_description = 'The most popular articles. Keep exploring.'; + break; + default: + $feed_title = 'Search for: ' . $title; + $feed_description = 'All articles for "' . $title . '".'; + break; + } + // create new feed + $feed = \App::make("feed"); + + // multiple feeds are supported + // if you are using caching you should set different cache keys for your feeds + + // cache the feed for $cache minutes (second parameter is optional) + $feed->setCache($cache, 'feed_' . $title); + + // check if there is cached feed and build new only if is not + if (!$feed->isCached()) + { + + // set your feed's title, description, link, pubdate and language + $feed->title = $feed_title; + $feed->description = $feed_description; + #$feed->logo = 'http://yoursite.tld/logo.jpg'; + $feed->link = url('feed/' . $title); + $feed->setDateFormat('datetime'); // 'datetime', 'timestamp' or 'carbon' + $feed->pubdate = $model[0]->created_at; + $feed->lang = 'en'; + $feed->setShortening(true); // true or false + $feed->setTextLimit(100); // maximum length of description text + + foreach ($model as $post) + { + + $desc = ($post->excerpt_html); + + $categories = "<br>"; + foreach( $post->getCategories()->get() as $cat ) { + $categories .= "<a href='". \URL::to('/topic/' . $cat->name) ."'>". $cat->name . "</a> | "; + } + $categories = rtrim($categories, " | "); + $desc .= "<br>Topics:"; + $desc .= $categories; + + $discussions = "<br>"; + foreach( $post->getDiscussions()->orderBy('comments', 'desc')->get() as $dis ) { + $discussions .= "<a href='" . $dis->source_url . "'>" . $dis->title . "</a> "; + $discussions .= $dis->upvotes . " Upvotes | " . $dis->comments . " Comments<br>"; + } + $desc .= "<br><br>Discussions:"; + $desc .= $discussions; + + // set item's title, author, url, pubdate, description, content, enclosure (optional)* + $feed->add($post->title, env('APP_NAME'), \URL::to($post->url), $post->created_at, $desc, $desc); + } + + } + + // first param is the feed format + // optional: second param is cache duration (value of 0 turns off caching) + // optional: you can set custom cache key with 3rd param as string + return $feed->render('atom', $cache, 'feed_' . $title); + } } |
