<?php
///////////////////////////////////////////////////////////////////////////

require_once 'lib/vod/vod_list_screen.php';

class IptvVodListScreen extends VodListScreen
{
    public static function get_media_url_str($page_name, $arg = null)
    {
        $arr['screen_id'] = self::ID;
        $arr['page_name'] = $page_name;
        if ($page_name === 'search')
            $arr['pattern'] = $arg;
        else if ($page_name === 'genres')
            $arr['genre_id'] = $arg;
        return MediaURL::encode($arr);
    }

    ///////////////////////////////////////////////////////////////////////

    private $session;

    public function __construct($session, Vod $vod)
    {
        parent::__construct($vod);

        $this->session = $session;
    }

    ///////////////////////////////////////////////////////////////////////

    private function get_page_for_ndx($ndx, $page_size)
    {
        return intval($ndx / $page_size) + 1;
    }

    protected function get_short_movie_range(MediaURL $media_url, $from_ndx, $sortby, $sorting,
        &$plugin_cookies)
    {
        $nums = 24;
        $page = $this->get_page_for_ndx($from_ndx, $nums);
        $sortby_init = $sortby[(isset($plugin_cookies->sortby) ? $plugin_cookies->sortby : 1)];
        $sorting_init = $sorting[(isset($plugin_cookies->sorting) ? $plugin_cookies->sorting : 2)];

        if ($media_url->page_name === 'last')
            $doc = $this->session->api_vod_list_last($page, $nums, $sortby_init, $sorting_init);
        else if ($media_url->page_name === 'popular')
            $doc = $this->session->api_vod_list_popular($page, $nums, $sortby_init, $sorting_init);
        else if ($media_url->page_name === 'lastSorted')
            $doc = $this->session->api_vod_list_last_sorted($page, $nums, $sortby_init, $sorting_init);
        else if ($media_url->page_name === 'best')
            $doc = $this->session->api_vod_list_best($page, $nums, $sortby_init, $sorting_init);
        else if ($media_url->page_name === 'national')
            $doc = $this->session->api_vod_list_national($page, $nums, $sortby_init, $sorting_init);
        else if ($media_url->page_name === 'search')
        {
            $doc = $this->session->api_vod_list_search(
                $media_url->pattern, $page, $nums, $sortby_init, $sorting_init);
        }
        else if ($media_url->page_name === 'genres' AND !is_null($media_url->year))
        {
            $doc = $this->session->api_vod_list_by_genre_and_year(
                $media_url->genre_id, $media_url->year, $page, $nums, $sortby_init, $sorting_init);
        }
        else if ($media_url->page_name === 'genres' AND is_null($media_url->year))
        {
            $doc = $this->session->api_vod_list_genres(
                $media_url->genre_id, $page, $nums, $sortby_init, $sorting_init);
        }
        else if ($media_url->page_name === 'year')
        {
            $doc = $this->session->api_vod_list_year(
                $media_url->year, $page, $nums, $sortby_init, $sorting_init);
        }
        else if ($media_url->page_name === 'categories')
        {
            $doc = $this->session->api_vod_list_categories(
                $media_url->category_id, $page, $nums, $sortby_init, $sorting_init);
        }
        else
            throw new Exception('Vod list: invalid page name.');

        if (!isset($doc->total))
            throw new Exception('Invalid data returned from server');

        $total = intval($doc->total);
        if ($total === 0)
            return new ShortMovieRange(0, 0);

        $from_ndx = (intval($doc->page) - 1) * $nums;

        $movies = array();
        foreach ($doc->rows as $row)
        {
            $icon_url = 'http://' . IPTV::$SERVER . $row->poster;
            $movies[] = new ShortMovie(
                $row->id, $row->name, $icon_url);
        }

        return new ShortMovieRange($from_ndx, $total, $movies);
    }
}

///////////////////////////////////////////////////////////////////////////
?>
