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

require_once 'lib/user_input_handler_registry.php';

class IptvEntryHandler
    implements UserInputHandler
{
    private $session;

    public function __construct($session)
    {
        $this->session = $session;

        UserInputHandlerRegistry::get_instance()->
            register_handler($this);
    }

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

    public function get_handler_id()
    {
        return 'entry';
    }

    public function handle_user_input(&$user_input, &$plugin_cookies)
    {
        hd_print('Entry handler: handle_user_input:');
        foreach ($user_input as $key => $value)
            hd_print("  $key => $value");

        if (!isset($user_input->entry_id))
            return null;

        $add_params = array(
            'entry_id' => $user_input->entry_id);

        if ($user_input->entry_id === 'setup' ||
            $user_input->entry_id === 'tv')
        {
            $res = $this->session->apply_subscription(
                $plugin_cookies, $user_input);
            if ($res !== false)
            {
                if (!isset($res['action']))
                {
                    return ActionFactory::close_dialog_and_run(
                        ActionFactory::open_folder());
                }

                return $res['need_close_dialog'] ?
                    ActionFactory::close_dialog_and_run($res['action']) :
                    $res['action'];
            }
            else
            {
                if ($this->session->is_logged_in())
                    return ActionFactory::open_folder();

                if (!isset($plugin_cookies->user_name) ||
                    $plugin_cookies->user_name === '')
                {
                    return $this->session->do_get_edit_subscription_action(
                        $plugin_cookies, $this, $add_params);
                }

                return ActionFactory::open_folder();
            }
        }

        return null;
    }
}

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