public function onMarkUnread(OW_Event $event) { $params = $event->getParams(); $count = $this->service->markUnread(is_array($params['conversationId']) ? $params['conversationId'] : array($params['conversationId']), $params['userId']); $event->setData($count); return $count; }
public function postMessage(OW_Event $event) { $params = $event->getParams(); if (empty($params['mode']) && empty($params['conversationId'])) { $data = array('error' => true, 'message' => 'Undefined conversation'); $event->setData($data); return $data; } if (empty($params['userId']) || empty($params['opponentId'])) { $data = array('error' => true, 'message' => 'Undefined conversation'); $event->setData($data); return $data; } $checkResult = $this->service->checkUser($params['userId'], $params['opponentId']); if ($checkResult['isSuspended']) { $data = array('error' => true, 'message' => $checkResult['suspendReasonMessage'], 'suspendReason' => $checkResult['suspendReason']); $event->setData($data); return $data; } $conversationId = $this->service->getChatConversationIdWithUserById($params['userId'], $params['opponentId']); if (empty($conversationId)) { $actionName = 'send_chat_message'; } else { $firstMessage = $this->service->getFirstMessage($conversationId); if (empty($firstMessage)) { $actionName = 'send_chat_message'; } else { $actionName = 'reply_to_chat_message'; } } $isAuthorized = OW::getUser()->isAuthorized('mailbox', $actionName); if (!$isAuthorized) { $status = BOL_AuthorizationService::getInstance()->getActionStatus('mailbox', $actionName); if ($status['status'] == BOL_AuthorizationService::STATUS_PROMOTED) { $data = array('error' => true, 'message' => strip_tags($status['msg'])); } else { if ($status['status'] != BOL_AuthorizationService::STATUS_AVAILABLE) { $language = OW::getLanguage(); $data = array('error' => true, 'message' => $language->text('mailbox', $actionName . '_permission_denied')); } } $event->setData($data); return $data; } if (!empty($params['mode']) && $params['mode'] == 'chat') { if (empty($conversationId)) { $conversation = $this->service->createChatConversation($params['userId'], $params['opponentId']); $conversationId = $conversation->getId(); } $conversation = $this->service->getConversation($conversationId); $message = $this->service->createMessage($conversation, $params['userId'], $params['text']); if (isset($params['isSystem']) && $params['isSystem']) { $this->service->markMessageAsSystem($message->id); } $this->service->markUnread(array($conversationId), $params['opponentId']); $messageData = $this->service->getMessageDataForApi($message); $data = array('error' => false, 'message' => $messageData); $event->setData($data); BOL_AuthorizationService::getInstance()->trackAction('mailbox', $actionName); return $data; } }