Blame view
app/Http/ViewComposers/LemixComposer.php
1.7 KB
e77200db5 Initial commit |
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 |
<?php namespace FootyRoom\Http\ViewComposers; use FootyRoom\Queries\PostQuery; use Illuminate\Contracts\View\View; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class LemixComposer { /** * @var int */ const LEMIX_CATEGORY_ID = 34; /** * @var \FootyRoom\Queries\PostQuery */ protected $postQuery; /** * Constructor. */ public function __construct(PostQuery $postQuery) { $this->postQuery = $postQuery; } /** * Compose the view. * * @param \Illuminate\Contracts\View\View $view * @param int $page * * @return \Illuminate\Contracts\View\View */ public function compose(View $view, $page) { $perPage = 24; $offset = $perPage * ($page - 1); $posts = $this->postQuery->findByCategoryIds([self::LEMIX_CATEGORY_ID], $offset, $perPage); if (!$posts) { throw new NotFoundHttpException(); } $this->setupPosts($view, $posts); $view->with('page', $page); $hasMorePosts = (bool) $this->postQuery->findByCategoryIds( [self::LEMIX_CATEGORY_ID], $offset + $perPage, 1 ); $view->with('hasMorePosts', $hasMorePosts); return $view; } /** * Setup posts. * * @param \Illuminate\Contracts\View\View $view * @param \FootyRoom\Queries\Post\Post[] $posts */ protected function setupPosts(View $view, $posts) { foreach ($posts as $post) { $post->url = route('lemixPost', ['slug' => $post->slug, 'id' => $post->id]); $post->categoryUrl = route('lemix'); } $view->with('posts', $posts); } } |