예제 #1
0
파일: refresh.php 프로젝트: cretzu89/EPESI
if ($token === false) {
    exit;
}
if (Base_NotifyCommon::is_disabled()) {
    echo json_encode(array('disable' => 1));
    exit;
}
if (!Base_NotifyCommon::is_refresh_due($token)) {
    exit;
}
$ret = array();
$message_count = 0;
$notified_cache = array();
$group_similar = Base_NotifyCommon::group_similar();
$refresh_time = time();
$notifications = Base_NotifyCommon::get_notifications($token);
$all_notified = true;
foreach ($notifications as $module => $module_new_notifications) {
    $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) {
예제 #2
0
파일: refresh.php 프로젝트: 62BRAINS/EPESI
ob_start();
define('CID', $_REQUEST['cid']);
require_once '../../../include.php';
ModuleManager::load_modules();
if (!Base_AclCommon::is_user()) {
    exit;
}
$general_setting = Base_NotifyCommon::get_general_setting();
if ($general_setting == -1) {
    echo json_encode(array('disable' => 1));
    exit;
}
$ret = null;
$notify_count = 0;
$group_similar = Base_NotifyCommon::group_similar();
$notifications = Base_NotifyCommon::get_notifications();
foreach ($notifications as $module => $notify) {
    if (!isset($notify['tray'])) {
        continue;
    }
    $timeout = Base_NotifyCommon::get_module_setting($module);
    if ($timeout == -1) {
        continue;
    }
    $msg_count = 0;
    $new_messages = Base_NotifyCommon::get_new_messages($module, $notify['tray']);
    foreach ($new_messages as $id => $message) {
        $msg_count++;
        if (!$group_similar) {
            $notify_count++;
            if ($notify_count > Base_NotifyCommon::message_refresh_limit) {
예제 #3
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);
         }
     }
 }