Ejemplo n.º 1
0
    $timeout = Base_NotifyCommon::get_module_setting($module);
    if ($group_similar && count($module_new_notifications) > 1) {
        $message_count++;
        if ($message_count > Base_NotifyCommon::message_refresh_limit) {
            break;
        }
        $notified_cache[$module] = array_keys($module_new_notifications);
        $title = EPESI . ' ' . Base_NotifyCommon::get_module_caption($module);
        $body = __('%d new notifications', array(count($module_new_notifications)));
        $icon = Base_NotifyCommon::get_icon($module);
        $ret[] = array('title' => $title, 'opts' => array('body' => $body, 'icon' => $icon), 'timeout' => $timeout);
    } else {
        foreach ($module_new_notifications as $id => $message) {
            $message_count++;
            if ($message_count > Base_NotifyCommon::message_refresh_limit) {
                break 2;
            }
            $notified_cache[$module][] = $id;
            $title = EPESI . ' ' . Base_NotifyCommon::strip_html($message['title']);
            $body = Base_NotifyCommon::strip_html($message['body']);
            $icon = Base_NotifyCommon::get_icon($module, $message);
            $ret[] = array('title' => $title, 'opts' => array('body' => $body, 'icon' => $icon, 'tag' => $id), 'timeout' => $timeout);
        }
    }
    $all_notified &= count($module_new_notifications) == count($notified_cache[$module]);
}
Base_NotifyCommon::set_notified_cache($notified_cache, $token, $all_notified ? $refresh_time : Base_NotifyCommon::get_last_refresh($token));
if (count($ret)) {
    echo json_encode(array('messages' => $ret));
}
exit;
Ejemplo n.º 2
0
 public static function telegram()
 {
     $tokens = DB::GetAssoc('SELECT token,single_cache_uid FROM base_notify WHERE telegram=1 AND single_cache_uid is not null');
     if (!$tokens) {
         return;
     }
     $ret = array();
     $map = array();
     $refresh_time = time();
     $notified_cache = array();
     foreach ($tokens as $token => $uid) {
         $msgs = array();
         if (Base_NotifyCommon::is_refresh_due_telegram($token)) {
             Base_AclCommon::set_user($uid);
             $notified_cache[$token] = array();
             $notifications = Base_NotifyCommon::get_notifications($token);
             foreach ($notifications as $module => $module_new_notifications) {
                 foreach ($module_new_notifications as $id => $message) {
                     $notified_cache[$token][$module][] = $id;
                     $title = EPESI . ' ' . Base_NotifyCommon::strip_html($message['title']);
                     $body = Base_NotifyCommon::strip_html($message['body']);
                     //$icon = Base_NotifyCommon::get_icon($module, $message);
                     $msgs[] = array('title' => $title, 'body' => $body);
                 }
             }
         }
         $remote_token = md5($uid . '#' . Base_UserCommon::get_user_login($uid) . '#' . $token);
         $ret[$remote_token] = $msgs ? $msgs : '0';
         $map[$remote_token] = $token;
     }
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, "https://telegram.epesicrm.com/");
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($ret));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     $status = curl_exec($ch);
     curl_close($ch);
     $status = @json_decode($status);
     if (is_array($status)) {
         foreach ($status as $remove) {
             if (isset($map[$remove])) {
                 DB::Execute('UPDATE base_notify SET telegram=0 WHERE token=%s', array($map[$remove]));
                 unset($notified_cache[$map[$remove]]);
             }
         }
         foreach ($notified_cache as $token => $nc) {
             Base_NotifyCommon::set_notified_cache($nc, $token, $refresh_time);
         }
     }
 }