File: D:/HostingSpaces/SBogers10/komma.pro/app/KommaApp/Posts/PostController.php
<?php
namespace App\KommaApp\Posts;
use App\Http\Controllers\Controller;
use App\KommaApp\Blocks\BlockService;
use App\KommaApp\Categories\Models\Category;
use App\KommaApp\Posts\Models\Post;
class PostController extends Controller
{
/**
* @var PostService
*/
private $postService;
/**
* @var BlockService
*/
private $blockService;
/**
* PostController constructor.
* @param PostService $postService
* @param BlockService $blockService
*/
public function __construct(PostService $postService, BlockService $blockService)
{
parent::__construct();
$this->postService = $postService;
$this->blockService = $blockService;
$this->blockService->setSubFolder('posts');
}
/**
* @return \Illuminate\Contracts\View\View
*/
public function index()
{
// Get page information
$page = $this->pageService->getPageByCodeName('posts');
// Get posts, if there are no blog-posts return a message
$posts = $this->postService->all();
$posts->withPath('/blog');
// Check if there are posts
if($posts->isEmpty()) return \View::make($this->baseViewPath . 'pages.posts.fallback');
// Separate featured and non-featured posts
$featuredPosts = $this->postService->featured($posts);
$nonFeaturedPosts = $this->postService->nonFeatured($posts);
$featuredPosts->isNotEmpty() ? $headerPost = $featuredPosts->first() : $headerPost = $nonFeaturedPosts->first();
// Return view
return \View::make($this->baseViewPath . 'pages.posts.index',[
'page' => $page,
'posts' => $posts,
// 'featuredPosts' => $featuredPosts,
// 'nonFeaturedPosts' => $nonFeaturedPosts,
// 'headerPost' => $headerPost,
'namespace' => 'posts',
]);
}
/**
* @param Post $post
* @return \Illuminate\Contracts\View\View
*/
public function show(Post $post)
{
// Load translations and sites
$post->load('translation','sites','categories','author','author.images');
// This checks if the post belongs to the set site
if(! $post->sites->contains(\App::getSite())) throw abort(404);
$relatedPosts = $this->postService->relatedPosts($post);
// Decode dynamic blocks
$post->blocks = $this->blockService->decode($post->translation->description);
// Return view
return \View::make($this->baseViewPath . 'pages.posts.show',[
'post' => $post,
'relatedPosts' => $relatedPosts,
'namespace' => 'post',
]);
}
}