public function getIndex() { Auth::getUser()->hasPermissionOr401(Config::get("permissions.mediaItems"), 0); $view = View::make('home.admin.media.index'); $tableData = array(); $pageNo = FormHelpers::getPageNo(); $searchTerm = FormHelpers::getValue("search", "", false, true); // get shared lock on records so that they can't be deleted before query runs to get specific range // (this doesn't prevent new ones getting added but that doesn't really matter too much) $noMediaItems = MediaItem::search($searchTerm)->sharedLock()->count(); $noPages = FormHelpers::getNoPages($noMediaItems); if ($pageNo > 0 && FormHelpers::getPageStartIndex() > $noMediaItems - 1) { App::abort(404); return; } $mediaItems = MediaItem::with("playlists", "liveStreamItem", "liveStreamItem.liveStream", "liveStreamItem.stateDefinition", "videoItem", "videoItem.sourceFile")->search($searchTerm)->usePagination()->orderBy("created_at", "desc")->orderBy("name", "asc")->orderBy("description", "asc")->sharedLock()->get(); foreach ($mediaItems as $a) { $enabled = (bool) $a->enabled; $enabledStr = $enabled ? "Yes" : "No"; $hasVod = !is_null($a->videoItem); $vodEnabled = $hasVod ? (bool) $a->videoItem->enabled : null; $hasStream = !is_null($a->liveStreamItem); $streamEnabled = $hasStream ? (bool) $a->liveStreamItem->enabled : null; $hasVodStr = $hasVod ? "Yes (" : "No"; if ($hasVod) { $hasVodStr .= $vodEnabled ? "Enabled" : "Disabled"; $hasVodStr .= ")"; if ($a->videoItem->getIsLive()) { $hasVodStr .= " (LIVE!)"; } } $streamState = null; $hasStreamStr = $hasStream ? "Yes (" : "No"; if ($hasStream) { $hasStreamStr .= $streamEnabled ? "Enabled" : "Disabled"; $hasStreamStr .= ")"; if ($a->liveStreamItem->getIsAccessible() && intval($a->liveStreamItem->getResolvedStateDefinition()->id) === 2) { $hasStreamStr .= " (LIVE!)"; } $streamState = $a->liveStreamItem->stateDefinition->name; } else { $streamState = "[N/A]"; } $playlists = $a->playlists; $names = array(); foreach ($playlists as $playlist) { $names[] = $playlist->generateName(); } $playlistsStr = count($names) > 0 ? '"' . implode('", "', $names) . '"' : "[Not In A Playlist]"; $viewUri = null; if ($a->getIsAccessible()) { $defaultPlaylist = $a->getDefaultPlaylist(); if (!is_null($defaultPlaylist)) { $viewUri = $defaultPlaylist->getMediaItemUri($a); } } $tableData[] = array("enabled" => $enabledStr, "enabledCss" => $enabled ? "text-success" : "text-danger", "name" => $a->name, "description" => !is_null($a->description) ? $a->description : "[No Description]", "playlists" => $playlistsStr, "hasVod" => $hasVodStr, "hasVodCss" => $vodEnabled ? "text-success" : "text-danger", "hasStream" => $hasStreamStr, "hasStreamCss" => $streamEnabled ? "text-success" : "text-danger", "streamState" => $streamState, "timeCreated" => $a->created_at->toDateTimeString(), "viewUri" => $viewUri, "editUri" => Config::get("custom.admin_base_url") . "/media/edit/" . $a->id, "id" => $a->id); } $view->tableData = $tableData; $view->editEnabled = Auth::getUser()->hasPermission(Config::get("permissions.mediaItems"), 1); $view->pageNo = $pageNo; $view->noPages = $noPages; $view->createUri = Config::get("custom.admin_base_url") . "/media/edit"; $view->deleteUri = Config::get("custom.admin_base_url") . "/media/delete"; $this->setContent($view, "media", "media"); }