<?php

require_once 'lib/tv/tv_channel_list_screen.php';

class I24hTvChannelListScreen extends TvChannelListScreen
{
    private $session;

    public function __construct($session, Tv $tv, $folder_views)
    {
        parent::__construct($tv, $folder_views);

        $this->session = $session;
    }

    public function get_all_folder_items(MediaURL $media_url, &$plugin_cookies)
    {
        $this->session->ensure_logged_in($plugin_cookies);

        if (I24hConfig::USE_M3U_FILE && !isset($media_url->group_id))
            $media_url->group_id = $this->tv->get_all_channel_group_id();

        return parent::get_all_folder_items($media_url, $plugin_cookies);
    }

    public function get_sel_item_update_action(&$user_input, &$plugin_cookies)
    {
        return parent::get_sel_item_update_action($user_input, $plugin_cookies);
    }

    public function handle_user_input(&$user_input, &$plugin_cookies)
    {

        if ($user_input->control_id == 'info')
        {
            if (!isset($user_input->selected_media_url))
                return null;

            $media_url = MediaURL::decode($user_input->selected_media_url);
            $channel_id = $media_url->channel_id;

            $channels = $this->tv->get_channels();
            $c = $channels->get($channel_id);
            $id = $c->get_id();
            $title = $c->get_title();

            return ActionFactory::show_title_dialog("ТВ-канал '$title' (id=$id)");
        }
        else if ($user_input->control_id == 'play_tv')
        {
            $media_url = MediaURL::decode($user_input->selected_media_url);
            $channel_id = $media_url->channel_id;
            $channels = $this->tv->get_channels();
            $c = $this->tv->get_channel($channel_id);

            if ($c->get_streaming_url() == "passive"){

                $channels = $this->tv->get_channels();
                $c = $channels->get($channel_id);
                $title = $c->get_title();

                $defs = array();

                $quicksales = $this->session->get_packets_quicksale_channel($channel_id);
                $tarifs = "";
                $tarif_lines = 0;
                foreach ($quicksales as $packet){
                    $ps = array();
                    foreach ($packet['packets'] as $p){
                        $ps[] = $p['name'];
                        $tarif_lines++;
                    }
                    $tarifs .= implode(" + ", $ps);
                    $tarifs .= ', '.$packet['total_price']." руб.\n";
                }

                $defs = array();
                ControlFactory::add_label($defs, null, 'К сожалению, у Вас нет доступа к каналу "'.$title.'"!');
                ControlFactory::add_vgap($defs, 1);
                ControlFactory::add_multiline_label($defs, null, "Для доступа к каналу \"".$title."\" зайдите в личный кабинет и\nвыберите один из следующих тарифов:", 2);
                ControlFactory::add_multiline_label($defs, null, $tarifs, $tarif_lines);
                ControlFactory::add_label($defs, null, '"Для выбора тарифа, нажмите кнопку "Подключить".');
                ControlFactory::add_vgap($defs, 10);
                ControlFactory::add_button_close($defs, $this, array('button_caption_centered' => true), 'to_tariffs', null, ' Подключить', 300);
                ControlFactory::add_button_close($defs, $this, array('button_caption_centered' => true), 'cancel', null, '    Отмена', 300);
                return ActionFactory::show_dialog('Внимание!', $defs, true, 1400);


//                $tarifs = implode(", ", $c->get_tariffs($channel_id));
//
//                ControlFactory::add_label($defs, null, 'К сожалению, у Вас нет доступа к каналу "'.$title.'"!');
//                ControlFactory::add_vgap($defs, 40);
//                ControlFactory::add_label($defs, null, 'Для доступа к каналу "'.$title.'" зайдите в личный кабинет');
//                ControlFactory::add_label($defs, null, 'и выберите один из следующих тарифов:');
//                ControlFactory::add_vgap($defs, 40);
//                ControlFactory::add_label($defs, null, $tarifs);
//                ControlFactory::add_vgap($defs, 40);
//                ControlFactory::add_label($defs, null, 'Для выбора тарифа, нажмите кнопку "Подключить".');
//                ControlFactory::add_vgap($defs, 40);
//                ControlFactory::add_button_close($defs, $this, array('button_caption_centered'=>true), 'to_tariffs', null, ' Подключить', 300);
//                ControlFactory::add_button_close($defs, $this, array('button_caption_centered'=>true), 'cancel', null, '    Отмена', 300);
//
//                return ActionFactory::show_dialog('Внимание!', $defs);

            }else{
                return ActionFactory::tv_play();
            }

        }
        else if ($user_input->control_id == 'to_tariffs'){
            return ActionFactory::open_folder(I24hPrivateScreen::get_media_url_str(''),'Управление тарифами');
        }
        else if ($user_input->control_id == 'popup_menu')
        {
            if (!isset($user_input->selected_media_url))
                return null;

            $media_url = MediaURL::decode($user_input->selected_media_url);
            $channel_id = $media_url->channel_id;

            $is_favorite = $this->tv->is_favorite_channel_id(
                $channel_id, $plugin_cookies);
            $caption = $is_favorite ?
                'Удалить из избранного' : 'Добавить в избранное';
            $add_favorite_action =
                UserInputHandlerRegistry::create_action(
                    $this, 'toggle_favorite');
            $menu_items[] = array(
                GuiMenuItemDef::caption => $caption,
                GuiMenuItemDef::action => $add_favorite_action);

            return ActionFactory::show_popup_menu($menu_items);
        }
        else if ($user_input->control_id == 'toggle_favorite')
        {
            if (!isset($user_input->selected_media_url))
                return null;

            $media_url = MediaURL::decode($user_input->selected_media_url);
            $channel_id = $media_url->channel_id;

            $is_favorite = $this->tv->is_favorite_channel_id(
                $channel_id, $plugin_cookies);
            if ($is_favorite)
            {
                $this->tv->change_tv_favorites(PLUGIN_FAVORITES_OP_REMOVE,
                    $channel_id, $plugin_cookies);

                return ActionFactory::show_title_dialog(
                    'Канал удален из избранного',
                    $this->get_sel_item_update_action(
                        $user_input, $plugin_cookies));
            }
            else
            {
                $this->tv->change_tv_favorites(PLUGIN_FAVORITES_OP_ADD,
                    $channel_id, $plugin_cookies);

                return ActionFactory::show_title_dialog(
                    'Канал добавлен в избранное',
                    $this->get_sel_item_update_action(
                        $user_input, $plugin_cookies));
            }
        }

        return null;
    }


}

?>
