summaryrefslogtreecommitdiff
path: root/app/Libraries/Helper.php
blob: be055b98dd8e7c0ad997ccd192052cdf7662dcaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
namespace App\Libraries;
use App\Libraries\Helper;
use Carbon\Carbon;

class Helper {
	public static function escapeLike($string){
		$search = array('%', '_');
		$replace   = array('\%', '\_');
		$string = str_replace($search, $replace, $string);
		$string = explode(" ", $string);
		return implode("%", $string);
	}

	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(false); // true or false
	       $feed->setTextLimit(100); // maximum length of description text

	       foreach ($model as $post)
	       {

		       $desc = ($post->excerpt_html);

		       if ( ! $post->getCategories()->get()->isEmpty()  ) {
			       $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->addItem([
				'title' => $post->title,
				'author' => env('APP_NAME'),
				'url' => \URL::to($post->url),
				'link' => \URL::to($post->url),
				'pubdate' => $post->created_at,
				'description' => $desc,
				'content' => $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);
	}
}