cache = false; $feed->set_feed_url('http://mlpforums.com/blog/rss/404-ponyfm-development-blog/'); $feed->init(); $feed->handle_content_type(); $posts = $feed->get_items($start, $end); $postHashes = []; foreach ($posts as $post) { $postHashes[] = self::calculateHash($post->get_permalink()); } $seenRecords = self::where('user_id', '=', Auth::user()->id)->whereIn('post_hash', $postHashes)->get(); $seenHashes = []; foreach ($seenRecords as $record) { $seenHashes[$record->post_hash] = 1; } $postsReturn = []; // This date is around when the last blog post was posted as of now. // I put in a cutoff so that blog posts made before this update is pushed are always marked as 'read' $readCutoffDate = mktime(null, null, null, 4, 28, 2013); foreach ($posts as $post) { $autoRead = $post->get_date('U') < $readCutoffDate; $postsReturn[] = [ 'post' => [ 'title' => $post->get_title(), 'date' => $post->get_date('j F Y g:i a'), 'url' => $post->get_permalink() ], 'read' => $autoRead || isset($seenHashes[self::calculateHash($post->get_permalink())])]; } return $postsReturn; } public static function markPostAsRead($postUrl) { $postHash = self::calculateHash($postUrl); $news = News::create(['user_id' => Auth::user()->id, 'post_hash' => $postHash]); $news->save(); } private static function calculateHash($postPermalink) { return md5($postPermalink); } }