public function getIndex($pageNo = 0) { $pageNo = intval($pageNo); $itemsPerPage = intval(Config::get("custom.num_shows_per_page")); $itemOffset = $pageNo * $itemsPerPage; $numPlaylists = Show::accessible()->count(); $numPages = ceil($numPlaylists / $itemsPerPage); $shows = Show::accessible()->orderBy("name", "asc")->orderBy("description", "asc")->skip($itemOffset)->take($itemsPerPage)->get(); if ($pageNo > 0 && $shows->count() === 0) { App::abort(404); } $coverArtResolutions = Config::get("imageResolutions.coverArt"); $playlistTableData = array(); foreach ($shows as $i => $item) { $thumbnailUri = Config::get("custom.default_cover_uri"); if (!Config::get("degradedService.enabled")) { $thumbnailUri = $item->getCoverArtUri($coverArtResolutions['thumbnail']['w'], $coverArtResolutions['thumbnail']['h']); } $playlistTableData[] = array("uri" => $item->getUri(), "title" => $item->name, "escapedDescription" => !is_null($item->description) ? e($item->description) : null, "playlistName" => null, "episodeNo" => null, "thumbnailUri" => $thumbnailUri, "thumbnailFooter" => null, "duration" => null, "active" => false); } $playlistFragment = count($playlistTableData) > 0 ? View::make("fragments.home.playlist", array("stripedTable" => true, "headerRowData" => null, "tableData" => $playlistTableData)) : null; $pageNumbers = array(); for ($i = 0; $i < $numPages; $i++) { $pageNumbers[] = array("num" => $i + 1, "uri" => URL::route("shows", array($i)), "active" => $i === $pageNo); } $openGraphProperties = array(); $openGraphProperties[] = array("name" => "video:release_date", "content" => null); foreach ($playlistTableData as $a) { $openGraphProperties[] = array("name" => "og:see_also", "content" => $a['uri']); } $view = View::make("home.shows.index"); $view->playlistFragment = $playlistFragment; $view->pageSelectorFragment = View::make("fragments.home.pageSelector", array("nextUri" => $pageNo < $numPages - 1 ? URL::route("shows", array($pageNo + 1)) : null, "prevUri" => $pageNo > 0 ? URL::route("shows", array($pageNo - 1)) : null, "numbers" => $pageNumbers)); $this->setContent($view, "shows", "shows", $openGraphProperties, "Shows"); }
public function generateShowsResponseData() { $data = $this->showTransformer->transformCollection(Show::accessible()->orderBy("id")->get()->all()); return new ApiResponseData($data); }