public function create(RESTRequest $request)
 {
     $stb_list = $request->getConvertedIdentifiers();
     $identifiers = $request->getIdentifiers();
     if (empty($stb_list) && !empty($identifiers)) {
         throw new RESTCommandException('STB not found');
     }
     $event = new SysEvent();
     if (empty($identifiers)) {
         $event->setUserListByMac('all');
     } else {
         $event->setUserListById($stb_list);
     }
     if ($request->getData('ttl')) {
         $event->setTtl($request->getData('ttl'));
     }
     switch ($request->getData('event')) {
         case 'send_msg':
             if ($request->getData('need_reboot')) {
                 $event->sendMsgAndReboot($request->getData('msg'));
             } else {
                 $event->sendMsg($request->getData('msg'));
             }
             if ($request->getData('auto_hide_timeout')) {
                 $event->setAutoHideTimeout($request->getData('auto_hide_timeout'));
             }
             break;
         case 'send_msg_with_video':
             $event->sendMsgWithVideo($request->getData('msg'), $request->getData('video'));
             break;
         case 'reboot':
             $event->sendReboot();
             break;
         case 'reload_portal':
             $event->sendReloadPortal();
             break;
         case 'update_channels':
             $event->sendUpdateChannels();
             break;
         case 'play_channel':
             $event->sendPlayChannel($request->getData('channel'));
             break;
         case 'play_radio_channel':
             $event->sendPlayRadioChannel($request->getData('channel'));
             break;
         case 'update_image':
             $event->sendUpdateImage();
             break;
         case 'cut_off':
             $event->sendCutOff();
             break;
         case 'show_menu':
             $event->sendShowMenu();
             break;
         default:
             return false;
     }
     return true;
 }
 public function create(RESTRequest $request)
 {
     $stb_list = $request->getConvertedIdentifiers();
     if (empty($stb_list)) {
         throw new RESTCommandException('Empty stb list');
     }
     $msg = $request->getData("msg");
     if (empty($msg)) {
         throw new RESTCommandException('Empty msg');
     }
     $event = new SysEvent();
     $ttl = (int) $request->getData("ttl");
     if (!empty($ttl)) {
         $event->setTtl($ttl);
     }
     $auto_hide_timeout = (int) $request->getData('auto_hide_timeout');
     if ($auto_hide_timeout) {
         $event->setAutoHideTimeout($auto_hide_timeout);
     }
     $event->setUserListById($stb_list);
     $event->sendMsg($msg);
     return true;
 }
Пример #3
0
if (@$_GET['del'] == 1) {
    Admin::checkAccess(AdminAccess::ACCESS_DELETE);
    $uid = Middleware::getUidByMac(@$_GET['mac']);
    Mysql::getInstance()->delete('events', array('uid' => $uid));
    header("Location: events.php?mac=" . @$_GET['mac']);
    exit;
}
if (!empty($_POST['user_list_type']) && !empty($_POST['event'])) {
    Admin::checkAccess(AdminAccess::ACCESS_CREATE);
    if (@$_POST['need_reboot']) {
        $reboot_after_ok = 1;
    } else {
        $reboot_after_ok = 0;
    }
    $event = new SysEvent();
    $event->setTtl($_POST['ttl']);
    if (@$_POST['user_list_type'] == 'to_all') {
        if ($_POST['event'] == 'send_msg' || $_POST['event'] == 'send_msg_with_video') {
            $event->setUserListByMac('all');
            $user_list = Middleware::getOnlineUsersId();
        } else {
            $event->setUserListByMac('online');
            $user_list = Middleware::getAllUsersId();
        }
    } elseif (@$_POST['user_list_type'] == 'to_single') {
        $event->setUserListByMac(@$_POST['mac']);
        $user_list = Middleware::getUidByMac(@$_POST['mac']);
        $user_list = array($user_list);
    } elseif (@$_POST['user_list_type'] == 'by_pattern') {
        if (@$_POST['pattern'] == 'mag100') {
            $user_list = Middleware::getUidsByPattern(array('hd' => 0));
<?php

include "./common.php";
if (Config::getSafe('enable_internal_billing', false) && Config::getSafe('number_of_days_to_send_message', false) !== FALSE) {
    $locales = array();
    $allowed_locales = Config::get("allowed_locales");
    $default_locale = Config::get("default_locale");
    bindtextdomain('stb', PROJECT_PATH . '/locale');
    textdomain('stb');
    bind_textdomain_codeset('stb', 'UTF-8');
    $end_billing_interval = Config::getSafe('number_of_days_to_send_message', false);
    $users = Mysql::getInstance()->select(array('id', '(TO_DAYS(`expire_billing_date`) - TO_DAYS(NOW())) as `end_billing_days`', 'locale'))->from("`users`")->where(array("(TO_DAYS(`expire_billing_date`) - TO_DAYS(NOW())) <= {$end_billing_interval} AND CAST(`expire_billing_date` AS CHAR) <> '0000-00-00 00:00:00' AND 1=" => 1, 'status' => 0))->get()->all();
    $event = new SysEvent();
    $event->setTtl(86340);
    $msg_more = 'Dear Subscriber! Your payment term will expire in "%s" days. Please refill a personal account in order to avoid tripping of services.';
    $msg_today = "Dear Subscriber! Your payment term will expire today. Please refill a personal account in order to avoid tripping of services.";
    $msg = '';
    $locale = $default_locale;
    foreach ($users as $user) {
        $current_local = setlocale(LC_MESSAGES, 0);
        $event->setUserListById($user['id']);
        if (in_array($user['locale'], $allowed_locales)) {
            $locale = $user['locale'];
        } else {
            $locale = $default_locale;
        }
        putenv("LC_MESSAGES={$locale}");
        putenv("LANGUAGE={$locale}");
        setlocale(LC_MESSAGES, $locale);
        $msg = $user['end_billing_days'] > 0 ? sprintf(_($msg_more), $user['end_billing_days']) : _($msg_today);
        $event->sendMsg($msg);
Пример #5
0
 public function unsubscribeFromPackage($package_id, $packages = null, $force_no_check_billing = false)
 {
     if ($packages === null) {
         $packages = $this->getPackages();
     }
     $filtered_packages = array_filter($packages, function ($item) use($package_id) {
         return $package_id == $item['package_id'] && $item['optional'] == 1 && $item['subscribed'];
     });
     if (empty($filtered_packages)) {
         return false;
     }
     if (!$force_no_check_billing) {
         $ext_package_id = Mysql::getInstance()->from('services_package')->where(array('id' => $package_id))->get()->first('external_id');
         $on_unsubscribe_result = OssWrapper::getWrapper()->unsubscribeFromPackage($ext_package_id);
         var_dump($on_unsubscribe_result);
         if ($on_unsubscribe_result === true) {
             Log::writePackageSubscribeLog($this->id, $package_id, 0);
             return Mysql::getInstance()->delete('user_package_subscription', array('user_id' => $this->id, 'package_id' => $package_id))->result();
         } else {
             return false;
         }
     }
     $result = Mysql::getInstance()->delete('user_package_subscription', array('user_id' => $this->id, 'package_id' => $package_id))->result();
     Log::writePackageSubscribeLog($this->id, $package_id, 0);
     $event = new SysEvent();
     $event->setUserListById($this->id);
     $event->setTtl(Config::get('watchdog_timeout') * 2);
     $event->sendMsgAndReboot($this->getLocalizedText('Services are updated according to the subscription. The STB will be rebooted.'));
     return $result;
 }
Пример #6
0
 public function add_event()
 {
     if (!$this->isAjax || $this->method != 'POST' || empty($this->postData['user_list_type']) || empty($this->postData['event'])) {
         $this->app->abort(404, $this->setLocalization('Page not found'));
     }
     if ($no_auth = $this->checkAuth()) {
         return $no_auth;
     }
     $data = array();
     $data['action'] = 'addEvent';
     $data['msg'] = $this->setlocalization('Added') . ' ' . $this->setlocalization('for') . ' ';
     $error = $this->setlocalization('Error. Event has not been added.');
     $_SERVER['TARGET'] = 'ADM';
     $event = new \SysEvent();
     $event->setTtl($this->postData['ttl']);
     $get_list_func_name = 'get_userlist_' . str_replace('to_', '', $this->postData['user_list_type']);
     $set_event_func_name = 'set_event_' . str_replace('to_', '', $this->postData['event']);
     $user_list = array_intersect($this->{$get_list_func_name}($event), $this->getFieldFromArray($this->db->getUser(array(), 'ALL'), 'id'));
     $event->setUserListById($user_list);
     if ($this->{$set_event_func_name}($event, $user_list)) {
         $data['msg'] .= count($user_list) . ' ' . $this->setlocalization('users');
         $error = '';
     }
     $response = $this->generateAjaxResponse($data, $error);
     return new Response(json_encode($response), empty($error) ? 200 : 500);
 }