예제 #1
0
 public function getIndex($pageNo = 0)
 {
     $pageNo = intval($pageNo);
     $itemsPerPage = intval(Config::get("custom.num_playlists_per_page"));
     $itemOffset = $pageNo * $itemsPerPage;
     $numPlaylists = Playlist::accessibleToPublic()->belongsToShow(false)->count();
     $numPages = ceil($numPlaylists / $itemsPerPage);
     $playlists = Playlist::accessibleToPublic()->belongsToShow(false)->orderBy("name", "asc")->orderBy("description", "asc")->skip($itemOffset)->take($itemsPerPage)->get();
     if ($pageNo > 0 && $playlists->count() === 0) {
         App::abort(404);
     }
     $coverArtResolutions = Config::get("imageResolutions.coverArt");
     $playlistTableData = array();
     foreach ($playlists 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->generateName(), "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("playlists", 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.playlists.index");
     $view->playlistFragment = $playlistFragment;
     $view->pageSelectorFragment = View::make("fragments.home.pageSelector", array("nextUri" => $pageNo < $numPages - 1 ? URL::route("playlists", array($pageNo + 1)) : null, "prevUri" => $pageNo > 0 ? URL::route("playlists", array($pageNo - 1)) : null, "numbers" => $pageNumbers));
     $this->setContent($view, "playlists", "playlists", $openGraphProperties, "Playlists");
 }
 public function generatePlaylistsResponseData()
 {
     $data = $this->playlistTransformer->transformCollection(Playlist::accessibleToPublic()->orderBy("id")->get()->all());
     return new ApiResponseData($data);
 }
예제 #3
0
 public function postPlaylistInfo($id)
 {
     $playlist = Playlist::accessibleToPublic()->find(intval($id));
     if (is_null($playlist)) {
         App::abort(404);
     }
     $data = array();
     $mediaItems = $playlist->mediaItems()->accessible()->orderBy("media_item_to_playlist.position")->get();
     $mediaItems->load("videoItem", "liveStreamItem", "liveStreamItem.stateDefinition");
     foreach ($mediaItems as $a) {
         $vod = null;
         $stream = null;
         if (!is_null($a->videoItem)) {
             $available = false;
             if (!Config::get("degradedService.enabled")) {
                 $available = $a->videoItem->getIsLive();
             }
             $vod = array("available" => $available);
         }
         if (!is_null($a->liveStreamItem)) {
             $stream = array("state" => intval($a->liveStreamItem->getResolvedStateDefinition()->id));
         }
         $data[] = array("id" => intval($a->id), "vod" => $vod, "stream" => $stream, "url" => $playlist->getMediaItemUri($a));
     }
     return Response::json($data);
 }
예제 #4
0
 public function postRegisterLike($playlistId, $mediaItemId)
 {
     $playlist = Playlist::accessibleToPublic()->find($playlistId);
     if (is_null($playlist)) {
         App::abort(404);
     }
     $mediaItem = $playlist->mediaItems()->accessible()->find($mediaItemId);
     if (is_null($mediaItem)) {
         App::abort(404);
     }
     $success = false;
     if (isset($_POST['type'])) {
         $type = $_POST['type'];
         if ($type === "like" || $type === "dislike" || $type === "reset") {
             // an item can only be liked when it has an accessible video, or live stream which is enabled and not in the 'not live' state
             $mediaItemVideo = $mediaItem->videoItem;
             $mediaItemLiveStream = $mediaItem->liveStreamItem;
             $mediaItemVideoAccessible = false;
             if (!Config::get("degradedService.enabled")) {
                 $mediaItemVideoAccessible = !is_null($mediaItemVideo) && $mediaItemVideo->getIsLive();
             }
             $mediaItemLiveStreamValidState = !is_null($mediaItemLiveStream) && $mediaItemLiveStream->getIsAccessible() && intval($mediaItemLiveStream->getResolvedStateDefinition()->id) !== 1;
             if ($mediaItemVideoAccessible || $mediaItemLiveStreamValidState) {
                 $user = Facebook::getUser();
                 if (!is_null($user)) {
                     if ($type === "like") {
                         $mediaItem->registerLike($user);
                     } else {
                         if ($type === "dislike") {
                             $mediaItem->registerDislike($user);
                         } else {
                             if ($type === "reset") {
                                 $mediaItem->removeLike($user);
                             }
                         }
                     }
                     $success = true;
                 }
             }
         }
     }
     return Response::json(array("success" => $success));
 }