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); } } }