private function open_popup_for_filter($current_url, $key)
 {
     $key = (string) $media_url->category_id;
     $doc = HD::http_get_document($current_url . '/' . $key);
     $pop_up_items = array();
     $xml = simplexml_load_string($doc);
     foreach ($xml->Directory as $c) {
         $key = (string) $c->attributes()->key;
         $prompt = (string) $c->attributes()->prompt;
         if ($key != 'all' && $key != 'folder' && !$prompt) {
             $pop_up_items[] = array(GuiMenuItemDef::caption => (string) $c->attributes()->title, GuiMenuItemDef::action => ActionFactory::open_folder($this->get_right_media_url($media_url, $key), $key));
         }
     }
     $action = ActionFactory::show_popup_menu($pop_up_items);
 }
 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;
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     hd_print('Vod search: handle_user_input:');
     foreach ($user_input as $key => $value) {
         hd_print("  {$key} => {$value}");
     }
     if ($user_input->action_type === 'apply') {
         $control_id = $user_input->control_id;
         if ($control_id === 'pattern') {
             $pattern = $user_input->pattern;
             $plugin_cookies->vod_search_pattern = $pattern;
             hd_print("Vod search: applying pattern '{$pattern}'");
             $defs = $this->do_get_control_defs($plugin_cookies);
             return ActionFactory::reset_controls($defs, ActionFactory::open_folder($this->vod->get_search_media_url_str($pattern), $pattern));
         }
     } else {
         if ($user_input->action_type === 'confirm') {
             $control_id = $user_input->control_id;
             $new_value = $user_input->{$control_id};
             if ($control_id === 'pattern') {
                 $pattern = $user_input->pattern;
                 if (preg_match('/^\\s*$/', $pattern)) {
                     return ActionFactory::show_error(false, 'Pattern should not be empty');
                 }
             }
         }
     }
     return null;
 }
 public function get_action_map(MediaURL $media_url, &$plugin_cookies)
 {
     // hd_print(__METHOD__);
     $enter_action = ActionFactory::open_folder();
     $pop_up_action = UserInputHandlerRegistry::create_action($this, 'pop_up', null, 'Filtos');
     return array(GUI_EVENT_KEY_ENTER => $enter_action, GUI_EVENT_KEY_PLAY => $enter_action, GUI_EVENT_KEY_POPUP_MENU => $pop_up_action);
 }
 public function get_action_map(MediaURL $media_url, &$plugin_cookies)
 {
     $actions = array();
     if ($this->vod->is_movie_page_supported()) {
         $actions[GUI_EVENT_KEY_ENTER] = ActionFactory::open_folder();
     } else {
         $actions[GUI_EVENT_KEY_ENTER] = ActionFactory::vod_play();
     }
     $remove_favorite_action = UserInputHandlerRegistry::create_action($this, 'remove_favorite');
     $remove_favorite_action['caption'] = 'Favorite';
     $menu_items[] = array(GuiMenuItemDef::caption => 'Remove from Favorites', GuiMenuItemDef::action => $remove_favorite_action);
     $popup_menu_action = ActionFactory::show_popup_menu($menu_items);
     $actions[GUI_EVENT_KEY_D_BLUE] = $remove_favorite_action;
     $actions[GUI_EVENT_KEY_POPUP_MENU] = $popup_menu_action;
     return $actions;
 }
 public function get_action_map(MediaURL $media_url, &$plugin_cookies)
 {
     $actions = array();
     if ($this->vod->is_movie_page_supported()) {
         $actions[GUI_EVENT_KEY_ENTER] = ActionFactory::open_folder();
     } else {
         $actions[GUI_EVENT_KEY_ENTER] = ActionFactory::vod_play();
     }
     if ($this->vod->is_favorites_supported()) {
         $add_favorite_action = UserInputHandlerRegistry::create_action($this, 'add_favorite');
         $add_favorite_action['caption'] = 'Favorite';
         $popup_menu_action = UserInputHandlerRegistry::create_action($this, 'popup_menu');
         $actions[GUI_EVENT_KEY_D_BLUE] = $add_favorite_action;
         $actions[GUI_EVENT_KEY_POPUP_MENU] = $popup_menu_action;
     }
     return $actions;
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     hd_print('Vod genres: handle_user_input:');
     foreach ($user_input as $key => $value) {
         hd_print("  {$key} => {$value}");
     }
     if ($user_input->control_id == 'select_genre') {
         if (!isset($user_input->selected_media_url)) {
             return null;
         }
         $media_url = MediaURL::decode($user_input->selected_media_url);
         $genre_id = $media_url->genre_id;
         $caption = $this->vod->get_genre_caption($genre_id);
         $media_url_str = $this->vod->get_genre_media_url_str($genre_id);
         return ActionFactory::open_folder($media_url_str, $caption);
     }
     return null;
 }
 public function get_action_map(MediaURL $media_url, &$plugin_cookies)
 {
     return array(GUI_EVENT_KEY_ENTER => ActionFactory::open_folder());
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     // hd_print(__METHOD__);
     hd_print(print_r($user_input, true));
     hd_print(print_r($plugin_cookies, true));
     $base_url = EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this);
     $media_url = MediaURL::decode($user_input->selected_media_url);
     if ($user_input->control_id == 'show_resume_menu') {
         $play_action = UserInputHandlerRegistry::create_action($this, 'play');
         if (!isset($plugin_cookies->resumePlayBack) || $plugin_cookies->resumePlayBack == "ask") {
             if ($media_url->viewOffset <= 0) {
                 self::$viewOffset = 0;
                 return $play_action;
             }
             $pop_up_items[] = array(GuiMenuItemDef::caption => 'Resume from ' . gmdate("H:i:s", $media_url->viewOffset / 1000), GuiMenuItemDef::action => UserInputHandlerRegistry::create_action($this, 'play', array('viewOffset' => $media_url->viewOffset)));
             $pop_up_items[] = array(GuiMenuItemDef::caption => 'Start from beginning', GuiMenuItemDef::action => UserInputHandlerRegistry::create_action($this, 'play', array('viewOffset' => 0)));
             return ActionFactory::show_popup_menu($pop_up_items);
         } else {
             if ($plugin_cookies->resumePlayBack == "resume") {
                 EmplexerVideoList::$viewOffset = $media_url->viewOffset;
                 return $play_action;
             } else {
                 EmplexerVideoList::$viewOffset = 0;
                 return $play_action;
             }
         }
     } else {
         if ($user_input->control_id == 'play') {
             if (isset($user_input->viewOffset)) {
                 EmplexerVideoList::$viewOffset = $user_input->viewOffset;
             }
             hd_print(__METHOD__ . ':' . print_r($user_input, true));
             if (strpos($media_url->video_url, "VIDEO_TS.IFO")) {
                 $url = dirname($media_url->video_url);
                 return ActionFactory::dvd_play($url);
             } else {
                 if (strpos(strtolower($media_url->video_url), ".iso")) {
                     return ActionFactory::launch_media_url($media_url->video_url);
                     //ActionFactory::dvd_play($media_url->video_url);
                 } else {
                     if (strpos(strtolower($media_url->video_url), "bdmv")) {
                         $pos = strpos(strtolower($media_url->video_url), 'bdmv');
                         $url = substr($media_url->video_url, 0, $pos - 1);
                         hd_print('tentando tocar bluray com a url ' . $url);
                         return ActionFactory::bluray_play($url);
                     } else {
                         if (strpos(strtolower($media_url->video_url), ".m2ts")) {
                             return ActionFactory::launch_media_url($media_url->video_url);
                         } else {
                             $url = $media_url->video_url;
                             $key = $media_url->key;
                             $startPosition = $media_url->viewOffset / 1000;
                             $plexFileId = $media_url->key;
                             $timeToMark = DEFAULT_TIME_TO_MARK;
                             $basePlexURL = $base_url;
                             $pooling = 5;
                             $time_action = UserInputHandlerRegistry::create_action($this, 'time', null);
                             // EmplexerFifoController::getInstance()->startPlexNotify($key, 5 , EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this).'/');
                             // EmplexerFifoController::getInstance()->startDefaultPlayBack($url,$startPosition,$plexFileId,$timeToMark,$basePlexURL,$pooling);
                             // EmplexerFifoController::getInstance()->startSetPlayBackPosition(200);
                             // return ActionFactory::launch_media_url($media_url->video_url);
                             $params = array('key' => $media_url->key, 'back_screen_id' => $media_url->back_screen_id, 'back_key' => $media_url->back_key, 'back_filter_name' => $media_url->back_filter_name);
                             $stop_action = UserInputHandlerRegistry::create_action($this, 'stop', $params);
                             // $time_action = UserInputHandlerRegistry::create_action($this->get_screen_by_id($handler), 'time', $params);
                             if (!isset($plugin_cookies->useVodPlayback) || $plugin_cookies->useVodPlayback === "true") {
                                 hd_print('vou chamar o vod_play');
                                 return ActionFactory::vod_play();
                             } else {
                                 // public function startSetPlayBackPosition($position, &$plugin_cookies, $id, $mark_time=40, $pooling_time=5, $delay=3){
                                 // $viewOffset = $media_url->viewOffset ? $media_url->viewOffset / 1000 : 1 ;
                                 hd_print(__METHOD__ . ': viewOffset = ' . self::$viewOffset);
                                 EmplexerFifoController::getInstance()->startSetPlayBackPosition(self::$viewOffset, $plugin_cookies, $key);
                                 //					$this->downLoadSubtitleFromPlex(&$user_input, &$plugin_cookies, $media_url->video_url, 'por');
                                 return ActionFactory::launch_media_url($media_url->video_url, $stop_action);
                             }
                         }
                     }
                 }
             }
         }
     }
     if ($user_input->control_id == 'stop') {
         //try to stop my transcoded session (if not a transcoded session nothing happend)
         //			TranscodeManager::getInstance($plugin_cookies->plexIp,$plugin_cookies->plexPort)->stopSession();
         hd_print('ENTREI NO EVENTO STOP' . print_r($user_input, true));
         hd_print('ENTREI NO EVENTO STOP' . print_r($plugin_cookies, true));
         $media_url = $this->get_media_url_str($user_input->back_key, $user_input->back_filter_name);
         EmplexerFifoController::getInstance()->killPlexNotify();
         $action = ActionFactory::invalidate_folders(array($media_url));
         return $action;
     }
     if ($user_input->control_id == 'time') {
         hd_print(__METHOD__ . ':' . ' aconteceu o evento time ' . print_r($user_input, true));
         // HD::print_backtrace();
         $key = $user_input->key;
         EmplexerFifoController::getInstance()->startPlexNotify($key, 5, EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this) . '/');
     }
     if ($user_input->control_id == 'info') {
         $extra = array('bgImage' => $media_url->art);
         return ActionFactory::open_folder(VodMovieScreen::get_media_url_str($media_url->detail_info_key, $extra));
     }
     if ($user_input->control_id == 'pop_up') {
         $key = (int) $media_url->key;
         $was_seen = $media_url->was_seen;
         $url = null;
         if ($was_seen) {
             // http://192.168.2.9:32400/:/unscrobble?key=19547&identifier=com.plexapp.plugins.library
             $url = EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this) . "/:/unscrobble?key={$key}&identifier=com.plexapp.plugins.library";
         } else {
             // http://192.168.2.9:32400/:/scrobble?key=19547&identifier=com.plexapp.plugins.library
             $url = EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this) . "/:/scrobble?key={$key}&identifier=com.plexapp.plugins.library";
         }
         // hd_print(__METHOD__ . 'url:' .$url );
         $params['url'] = $url;
         $pop_up_items[] = array(GuiMenuItemDef::caption => $was_seen ? 'mark as unwatched' : 'mark as watched', GuiMenuItemDef::action => UserInputHandlerRegistry::create_action($this, 'mark', $params));
         // hd_print(__METHOD__ . ' pop_up_items:' .print_r($pop_up_items, true) );
         return ActionFactory::show_popup_menu($pop_up_items);
     }
     if ($user_input->control_id == 'mark') {
         hd_print('mark = ' . print_r($user_input, true));
         $back_media_url = MediaURL::decode($user_input->selected_media_url);
         $media_url = $this->get_media_url_str($media_url->back_key, $media_url->back_filter_name);
         HD::http_get_document($user_input->url);
         $action = ActionFactory::invalidate_folders(array($media_url));
         return $action;
     }
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     hd_print(__METHOD__);
     hd_print(__METHOD__ . ":" . print_r($user_input, true));
     if ($user_input->control_id == 'pop_up') {
         $media_url = MediaURL::decode($user_input->selected_media_url);
         $key = (string) $media_url->category_id;
         // hd_print("key = $key");
         if ($key) {
             $url = EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this) . '/library/sections/' . $key;
             /*$popUp = new EmplexerPopUp(4);
             		$action = $popUp->showPopUpMenu($url);*/
             $doc = HD::http_get_document(EmplexerConfig::getInstance()->getPlexBaseUrl($plugin_cookies, $this) . '/library/sections/' . $key);
             $pop_up_items = array();
             $xml = simplexml_load_string($doc);
             $defaultFilter = 'all';
             if ($media_url->type == 'show') {
                 $defaultFilter = isset($plugin_cookies->defaultShowFilter) ? $plugin_cookies->defaultShowFilter : 'all';
             }
             if ($media_url->type == 'movie') {
                 $defaultFilter = isset($plugin_cookies->defaultMovieFilter) ? $plugin_cookies->defaultMovieFilter : 'all';
             }
             foreach ($xml->Directory as $c) {
                 $key = (string) $c->attributes()->key;
                 $prompt = (string) $c->attributes()->prompt;
                 $is_secondary = (string) $c->attributes()->secondary;
                 if ($key != $defaultFilter && $key != 'folder' && !$prompt) {
                     // if ($key != 'all' ){
                     $pop_up_items[] = array(GuiMenuItemDef::caption => (string) $c->attributes()->title, GuiMenuItemDef::action => ActionFactory::open_folder($this->get_right_media_url_for_pop_up($media_url, $key, $is_secondary != null), $key));
                 }
             }
             hd_print(__METHOD__ . ' pop_up_items:' . print_r($pop_up_items, true));
             $action = ActionFactory::show_popup_menu($pop_up_items);
             // hd_print(__METHOD__ . ': ' . print_r($action, true));
             return $action;
         } else {
             return null;
         }
     }
     if ($user_input->control_id == 'savePref') {
         hd_print(__METHOD__ . ':' . print_r($user_input, true));
         hd_print(__METHOD__ . ':' . print_r($plugin_cookies, true));
         EmplexerSetupScreen::savePreferences($user_input, $plugin_cookies);
     }
 }
 public function get_action_map(MediaURL $media_url, &$plugin_cookies)
 {
     hd_print(__METHOD__);
     $enter_action = ActionFactory::open_folder();
     return array(GUI_EVENT_KEY_ENTER => $enter_action, GUI_EVENT_KEY_PLAY => $enter_action);
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     if (!isset($user_input->control_id)) {
         if ($plugin_cookies->require_restart) {
             ZTVDaemonController::restart($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
             $plugin_cookies->require_restart = false;
         }
         if (!ZTVTerminal::login()) {
             return ActionFactory::show_dialog('%tr%dialog_registration_form', $this->do_registration_form_defs($plugin_cookies), true);
         }
         if ($this->load_profiles()) {
             return $this->profile->require_password ? ActionFactory::show_dialog('%ext%<key_local>dialog_profile_password<p>' . $this->profile->title . '</p></key_local>', $this->do_profile_form_defs($plugin_cookies), true) : ActionFactory::open_folder();
         }
         return;
     } else {
         if ($user_input->action_type == 'confirm' || $user_input->action_type == 'apply') {
             switch ($user_input->control_id) {
                 case 'epg_provider':
                     $plugin_cookies->epg_provider = $user_input->epg_provider;
                     break;
                 case 'use_proxy':
                     $plugin_cookies->use_proxy = $user_input->use_proxy;
                     $plugin_cookies->proxy_ip = isset($plugin_cookies->proxy_ip) ? $plugin_cookies->proxy_ip : '192.168.0.1';
                     $plugin_cookies->proxy_port = isset($plugin_cookies->proxy_port) ? $plugin_cookies->proxy_port : '8080';
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'proxy_ip':
                     $plugin_cookies->proxy_ip = $user_input->proxy_ip;
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'proxy_port':
                     $plugin_cookies->proxy_port = $user_input->proxy_port;
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'daemon_start':
                     ZTVDaemonController::start($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
                     break;
                 case 'daemon_restart':
                     ZTVDaemonController::restart($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
                     break;
                 case 'daemon_stop':
                     ZTVDaemonController::stop();
                     break;
                 case 'register_button':
                     return ActionFactory::show_dialog('%tr%dialog_registration_form', $this->do_registration_form_defs($plugin_cookies), true);
                     break;
                 case 'register_terminal':
                     if (is_null($user_input->username) || trim($user_input->username) == '') {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_username_empty'));
                     } else {
                         if (is_null($user_input->password) || trim($user_input->password) == '') {
                             return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_pin_empty'));
                         }
                     }
                     if (!ZTVTerminal::register($user_input->username, $user_input->password)) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_invalid_password_or_username'));
                     }
                     $plugin_cookies->username = $user_input->username;
                     $plugin_cookies->password = $user_input->password;
                     return $user_input->selected_media_url == 'setup' ? ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('%tr%dialog_successful_login')) : ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     break;
                 case 'deregister_terminal':
                     if (!ZTVTerminal::deregister()) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_cant_logout'));
                     }
                     return $user_input->selected_media_url == 'setup' ? ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('%tr%dialog_successful_login')) : ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     break;
                 case 'register_cancel':
                     if (ZTVTerminal::login() && $user_input->selected_media_url != 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     }
                     return ActionFactory::reset_controls($this->do_registration_form_defs($plugin_cookies));
                     break;
                 case 'profile':
                     $this->profile = $this->profiles[$user_input->profile];
                     if ($this->profile->require_password) {
                         return ActionFactory::show_dialog('%ext%<key_local>dialog_profile_password<p>' . $this->profile->title . '</p></key_local>', $this->do_profile_form_defs($plugin_cookies, !$this->profile->password ? 'set_profile_password' : 'change_profile_password'), true);
                     }
                     $json_reply = ZTVApi::call(ZTVApi::set_profile($this->profile));
                     if ($json_reply === false) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_cant_select_profile'));
                     }
                     break;
                 case 'check_profile_password':
                     if ($user_input->profile_password != $this->profile->password) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_invalid_password'));
                     }
                     if ($user_input->selected_media_url != 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     }
                     $json_reply = ZTVApi::call(ZTVApi::set_profile($this->profile));
                     if ($json_reply === false) {
                         return ActionFactory::close_dialog_and_run(ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_cant_validate_password')));
                     }
                     break;
                 case 'change_profile_password':
                     if ($user_input->profile_password != $this->profile->password) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_invalid_password'));
                     }
                     if (!$user_input->profile_password_new) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_new_password_empty'));
                     }
                     if ($user_input->profile_password_new != $user_input->profile_password_repeat) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_passwords_mismatch'));
                     }
                     $json_reply = ZTVApi::call(ZTVApi::set_profile($this->profile, $user_input->profile_password));
                     return $json_reply === false ? ActionFactory::close_dialog_and_run(ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_cant_change_password'))) : ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('%tr%dialog_successful_password_change'));
                     break;
                 case 'set_profile_password':
                     if (!$user_input->profile_password) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_new_password_empty'));
                     }
                     if ($user_input->profile_password != $user_input->profile_password_repeat) {
                         return ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_passwords_mismatch.'));
                     }
                     $json_reply = ZTVApi::call(ZTVApi::set_profile($this->profile, $user_input->profile_password));
                     return $json_reply === false ? ActionFactory::close_dialog_and_run(ActionFactory::show_error(false, '%tr%caption_error', array('%tr%error_cant_set_password'))) : ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('%tr%dialog_successful_password_set'));
                     break;
                 case 'profile_cancel':
                     // TODO: Reset to the last selected profile instead of default.
                     $this->profile = $this->profiles[1];
                     $json_reply = ZTVApi::call(ZTVApi::set_profile($this->profile));
                     if ($json_reply === false) {
                         return;
                     }
                     return $user_input->selected_media_url != 'setup' ? ActionFactory::close_dialog_and_run(ActionFactory::open_folder()) : ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('%ext%<key_local>dialog_default_profile_set<p>' . $this->profile->title . '</p></key_local>'));
                     break;
             }
         }
     }
     return ActionFactory::reset_controls($this->do_get_control_defs($plugin_cookies));
 }
 public function handle_user_input(&$user_input, &$plugin_cookies)
 {
     if (!isset($user_input->control_id)) {
         if ($plugin_cookies->require_restart) {
             ZTVDaemonController::restart($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
             $plugin_cookies->require_restart = false;
         }
         if (!ZTVTerminal::login()) {
             return ActionFactory::show_dialog('Введите регистрационные данные', $this->do_registration_form_defs($plugin_cookies), true);
         }
         $result = $this->load_profiles();
         if ($result) {
             if ($this->profile->require_password) {
                 return ActionFactory::show_dialog('Введите пароль профиля ' . $this->profile->title, $this->do_profile_form_defs($plugin_cookies, false), true);
             }
             return ActionFactory::open_folder();
         }
         return;
     } else {
         if ($user_input->action_type == 'confirm' || $user_input->action_type == 'apply') {
             switch ($user_input->control_id) {
                 case 'use_proxy':
                     $plugin_cookies->use_proxy = $user_input->use_proxy;
                     $plugin_cookies->proxy_ip = isset($plugin_cookies->proxy_ip) ? $plugin_cookies->proxy_ip : '192.168.0.1';
                     $plugin_cookies->proxy_port = isset($plugin_cookies->proxy_port) ? $plugin_cookies->proxy_port : '8080';
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'proxy_ip':
                     $plugin_cookies->proxy_ip = $user_input->proxy_ip;
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'proxy_port':
                     $plugin_cookies->proxy_port = $user_input->proxy_port;
                     $plugin_cookies->require_restart = true;
                     break;
                 case 'daemon_start_button':
                     ZTVDaemonController::start($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
                     break;
                 case 'daemon_restart_button':
                     ZTVDaemonController::restart($plugin_cookies->use_proxy == 'yes' ? array('-y' => $plugin_cookies->proxy_ip . ':' . $plugin_cookies->proxy_port) : array());
                     break;
                 case 'daemon_stop_button':
                     ZTVDaemonController::stop();
                     break;
                 case 'register_button':
                     return ActionFactory::show_dialog('Введите регистрационные данные', $this->do_registration_form_defs($plugin_cookies), true);
                     break;
                 case 'register_terminal':
                     if (is_null($user_input->username) || trim($user_input->username) === '') {
                         return ActionFactory::show_error(false, 'Ошибка', array('Идентификатор не может быть пустым.'));
                     } else {
                         if (is_null($user_input->password) || trim($user_input->password) === '') {
                             return ActionFactory::show_error(false, 'Ошибка', array('PIN-код не может быть пустым.'));
                         }
                     }
                     if (!ZTVTerminal::register($user_input->username, $user_input->password)) {
                         return ActionFactory::show_error(false, 'Ошибка', array('Неверный идентификатор или PIN-код.'));
                     }
                     $plugin_cookies->username = $user_input->username;
                     $plugin_cookies->password = $user_input->password;
                     if ($user_input->selected_media_url == 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('Вход выполнен.'));
                     }
                     return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     break;
                 case 'deregister_terminal':
                     if (ZTVTerminal::deregister() && $user_input->selected_media_url == 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('Выход выполнен.'));
                     }
                     return ActionFactory::show_error(false, 'Ошибка', array('Не удалось выполненить выход.'));
                     break;
                 case 'register_cancel':
                     if (ZTVTerminal::login() && $user_input->selected_media_url != 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     }
                     return ActionFactory::reset_controls($this->do_registration_form_defs($plugin_cookies));
                     break;
                 case 'profile':
                     $this->profile = $this->profiles[$user_input->profile];
                     if ($this->profile->require_password) {
                         return ActionFactory::show_dialog('Введите пароль профиля ' . $this->profile->title, $this->do_profile_form_defs($plugin_cookies, $this->profile->require_password && !$this->profile->password), true);
                     }
                     if ($this->tv->set_profile($this->profile->id)) {
                         return ActionFactory::show_title_dialog('Профиль успешно установлен');
                     }
                     break;
                 case 'set_profile_password':
                     if (!$user_input->profile_password) {
                         return ActionFactory::show_error(false, 'Ошибка', array('Пароль не задан.'));
                     }
                     if ($user_input->profile_password != $user_input->profile_password_repeat) {
                         return ActionFactory::show_error(false, 'Ошибка', array('Введенные пароли не совпадают.'));
                     }
                     $result = $this->tv->api_call(array(HD::make_json_rpc_request('set_terminal_params', array('macaddr' => HD::get_mac_addr_dashed(), 'profile_id' => $this->profile->id)), HD::make_json_rpc_request('update_profile', array('macaddr' => HD::get_mac_addr_dashed(), 'profile_id' => $this->profile->id, 'profile_password' => $user_input->profile_password))));
                     if (count($result) == 2 && $result[0]->result && $result[1]->result) {
                         return ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('Профиль успешно установлен'));
                     }
                     return;
                     break;
                 case 'verify_profile_password':
                     if ($user_input->profile_password != $this->profile->password) {
                         return ActionFactory::show_error(false, 'Ошибка', array('Неверный пароль.'));
                     }
                     if ($user_input->selected_media_url != 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     }
                     $result = $this->tv->set_profile($this->profile->id);
                     if ($result) {
                         return ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('Профиль успешно установлен'));
                     }
                     return;
                     break;
                 case 'profile_cancel':
                     $result = $this->tv->set_profile(1);
                     if (!$result) {
                         return;
                     }
                     if ($user_input->selected_media_url != 'setup') {
                         return ActionFactory::close_dialog_and_run(ActionFactory::open_folder());
                     }
                     $this->profile = $this->profiles[1];
                     return ActionFactory::close_dialog_and_run(ActionFactory::show_title_dialog('Установлен профиль по умолчанию(' . $this->profile->title . ')'));
                     break;
             }
         }
     }
     return ActionFactory::reset_controls($this->do_get_control_defs($plugin_cookies));
 }
 public function doSearch(&$user_input, &$plugin_cookies = null)
 {
     hd_print(__METHOD__);
     $url = $user_input->key . '&query=' . urlencode($user_input->query);
     hd_print("search url ={$url}");
     $parameters = array('key' => $url, 'type' => TYPE_DIRECTORY, 'params' => null);
     return ActionFactory::open_folder($this->getNextScreen($parameters));
     // return ActionFactory::open_folder( $this->get_media_url_str($url, TYPE_DIRECTORY));
 }