public static function getCachedMostPopularItems() { return Cache::remember('mostPopularMediaItems', Config::get("custom.cache_time"), function () { $numPopularItems = intval(Config::get("custom.num_popular_items")); // get ids for media items with ones with most views at the top $popularMediaItemIds = PlaybackHistory::groupBy("media_item_id")->selectRaw("SUM(constitutes_view) as view_count, media_item_id")->orderBy("view_count", "desc")->orderBy("id", "asc")->lists("media_item_id"); if (count($popularMediaItemIds) === 0) { return array(); } $tmp = ""; foreach ($popularMediaItemIds as $i => $a) { if ($i > 0) { $tmp .= ","; } $tmp .= "'" . $a . "'"; } $mediaItems = self::accessible()->whereIn("id", $popularMediaItemIds)->orderBy(DB::raw("FIELD(id," . $tmp . ")"), "asc")->orderBy("scheduled_publish_time", "desc")->orderBy("name", "asc")->take($numPopularItems)->get(); $items = array(); $coverArtResolutions = Config::get("imageResolutions.coverArt"); foreach ($mediaItems as $a) { $playlist = $a->getDefaultPlaylist(); $generatedName = $playlist->generateEpisodeTitle($a); $uri = $playlist->getMediaItemUri($a); $playlistName = $playlist->generateName(); $items[] = array("playlist" => $playlist, "mediaItem" => $a, "generatedName" => $generatedName, "playlistName" => $playlistName, "duration" => PlaylistTableHelpers::getDuration($a), "uri" => $uri, "coverArtUri" => $playlist->getMediaItemCoverArtUri($a, $coverArtResolutions['thumbnail']['w'], $coverArtResolutions['thumbnail']['h'])); } return $items; }); }
public function getViewCount() { return PlaybackHistory::getStreamViewCount(intval($this->media_item_id)); }