/** * Returns class instance * * @return MAILBOX_BOL_UserLastDataDao */ public static function getInstance() { if (self::$classInstance === null) { self::$classInstance = new self(); } return self::$classInstance; }
public function resetAllUsersLastData() { $sql = "SELECT COUNT(*) FROM `" . MAILBOX_BOL_UserLastDataDao::getInstance()->getTableName() . "` AS `uld`\nLEFT JOIN `" . BOL_UserOnlineDao::getInstance()->getTableName() . "` AS uo ON uo.userId = uld.userId\nWHERE uo.id IS NULL"; $usersOfflineButOnline = OW::getDbo()->queryForColumn($sql); if ($usersOfflineButOnline > 0) { MAILBOX_BOL_ConversationService::getInstance()->resetAllUsersLastData(); } }
public function getLastDataAlt($params) { $result = array(); $userId = OW::getUser()->getId(); $userLastData = $this->userLastDataDao->findUserLastDataFor($userId); if (empty($userLastData)) { $userLastData = new MAILBOX_BOL_UserLastData(); $userLastData->userId = $userId; } if ($userLastData->data == '') { $userData = array(); $userService = BOL_UserService::getInstance(); $userOnlineListData = $this->getUserOnlineList($userId); $userListData = $this->getUserList($userId, $userOnlineListData['userIdList']); $userData['userOnlineCount'] = $userListData['onlineCount']; $userData['userList'] = $userListData['list']; // $messageList = $this->findUnreadMessages($userId, $params['unreadMessageList'], $params['lastMessageTimestamp']); // if (!empty($messageList)) // { // $conversations = array(); // $notViewedConversations = 0; // foreach($messageList as $message) // { // if (!in_array($message['convId'], $conversations)) // { // $conversations[] = $message['convId']; // if (!$message['conversationViewed']) // { // $notViewedConversations++; // } // } // } // $userData['messageList'] = $messageList; // $userData['newMessageCount'] = array('all'=>count($conversations), 'new'=>(int)$notViewedConversations); // } // else // { // $userData['messageList'] = ''; // $userData['newMessageCount'] = array('all'=>0, 'new'=>0);//TODO // } $userData['conversationsCount'] = $this->countConversationListByUserId($userId); $limit = !empty($params['getAllConversations']) ? $userData['conversationsCount'] : 10; $userData['convList'] = $this->getConversationListByUserId(OW::getUser()->getId(), 0, $limit); $userLastData->data = json_encode($userData); $this->userLastDataDao->save($userLastData); } $messageList = $this->findUnreadMessages($userId, $params['unreadMessageList'], $params['lastMessageTimestamp']); if (!empty($messageList)) { $conversations = array(); $notViewedConversations = 0; foreach ($messageList as $message) { if (!in_array($message['convId'], $conversations)) { $conversations[] = $message['convId']; if (!$message['conversationViewed']) { $notViewedConversations++; } } } $result['messageList'] = $messageList; $result['newMessageCount'] = array('all' => count($conversations), 'new' => (int) $notViewedConversations); } // else // { // $result['messageList'] = ''; // $result['newMessageCount'] = array('all'=>0, 'new'=>0); // } $data = json_decode($userLastData->data, true); if ($params['userOnlineCount'] === 0 || $data['userOnlineCount'] != $params['userOnlineCount']) { $result['userOnlineCount'] = $data['userOnlineCount']; $result['userList'] = $data['userList']; } if ($data['conversationsCount'] != $params['conversationsCount']) { $result['conversationsCount'] = $data['conversationsCount']; $result['convList'] = $data['convList']; } if (!empty($data['messageList'])) { foreach ($data['messageList'] as $id => $message) { if (in_array($message['id'], $params['unreadMessageList'])) { unset($data['messageList'][$id]); } } $result['messageList'] = $data['messageList']; } // $result['newMessageCount'] = $data['newMessageCount']; return $result; }