public static function AddByUsers($userIds, $arMessage, $channelType = 'private') { if (!is_array($userIds)) { return false; } $arPush = array(); if (isset($arMessage['push'])) { $arPush = $arMessage['push']; unset($arMessage['push']); } $channels = array(); foreach ($userIds as $userId) { $userId = intval($userId); if ($userId > 0) { $arChannel = CPullChannel::GetChannel($userId, $channelType); $channels[$userId] = $arChannel['CHANNEL_ID']; } } if (empty($channels)) { return false; } $result = self::AddByChannel($channels, $arMessage); if ($result && !empty($arPush) && (isset($arPush['advanced_params']) || isset($arPush['message']) && strlen($arPush['message']) > 0)) { $CPushManager = new CPushManager(); $pushUsers = array(); foreach ($channels as $userId => $channelId) { if (isset($arPush['skip_users']) && in_array($userId, $arPush['skip_users'])) { continue; } $pushUsers[] = $userId; } $CPushManager->AddQueue(array('USER_ID' => $pushUsers, 'MESSAGE' => str_replace("\n", " ", $arPush['message']), 'PARAMS' => $arPush['params'], 'ADVANCED_PARAMS' => isset($arPush['advanced_params']) ? $arPush['advanced_params'] : array(), 'BADGE' => isset($arPush['badge']) ? intval($arPush['badge']) : '', 'SOUND' => isset($arPush['sound']) ? $arPush['sound'] : '', 'TAG' => isset($arPush['tag']) ? $arPush['tag'] : '', 'SUB_TAG' => isset($arPush['sub_tag']) ? $arPush['sub_tag'] : '', 'APP_ID' => isset($arPush['app_id']) ? $arPush['app_id'] : '', 'SEND_IMMEDIATELY' => isset($arPush['send_immediately']) && $arPush['send_immediately'] == 'Y' ? 'Y' : 'N')); } return $result; }
public static function AddByUser($userId, $arMessage, $channelType = 'private') { if (intval($userId) <= 0) { return false; } $arChannel = CPullChannel::GetChannel($userId, $channelType); $arMessage['push_user'] = $userId; return self::AddByChannel($arChannel['CHANNEL_ID'], $arMessage); }
public static function OnAfterUserLogout($arParams) { if (!CPullOptions::GetQueueServerStatus()) return false; if ($arParams['USER_ID'] <= 0) return false; $arParams['USER_ID'] = intval($arParams['USER_ID']); if (isset($_SESSION['USER_LAST_LOGOUT_'.$arParams['USER_ID']]) && intval($_SESSION['USER_LAST_LOGOUT_'.$arParams['USER_ID']])+100 > time()) return false; $_SESSION['USER_LAST_LOGOUT_'.$arParams['USER_ID']] = time(); unset($_SESSION['USER_LAST_AUTH_'.$arParams['USER_ID']]); $arChannel = CPullChannel::GetChannel($arParams['USER_ID']); $result = CPullChannel::Send($arChannel['CHANNEL_ID'], 'ping', 'GET', 5, false); if (is_object($result) && isset($result->infos[0])) { $sendOffline = $result->infos[0]->subscribers > 0? false: true; } else { $sendOffline = true; } if ($sendOffline) { CPullStack::AddShared(Array( 'module_id' => 'online', 'command' => 'user_offline', 'params' => Array( 'USER_ID' => $arParams['USER_ID'] ), )); } return true; }