예제 #1
0
 /**
  * Returns class instance
  *
  * @return MAILBOX_BOL_UserLastDataDao
  */
 public static function getInstance()
 {
     if (self::$classInstance === null) {
         self::$classInstance = new self();
     }
     return self::$classInstance;
 }
예제 #2
0
 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();
     }
 }
예제 #3
0
 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;
 }