protected function getChatSessionObject($sessionRow, $myUserId = null)
 {
     if (empty($sessionRow) or !is_array($sessionRow)) {
         throw new InvalidArgumentException("Invalid \$sessionRow specified!");
     }
     $chatSession = new ChatSession();
     if ($myUserId !== null) {
         if ($sessionRow['inviter_user_id'] == $myUserId) {
             $interlocutorUserId = $sessionRow['invited_user_id'];
         } else {
             $interlocutorUserId = $sessionRow['inviter_user_id'];
         }
         $chatSession->chatterUser = ChatUser::getObject($myUserId);
         $chatSession->interlocutorUser = ChatUser::getObject($interlocutorUserId);
     } else {
         $chatSession->chatterUser = ChatUser::getObject($sessionRow['inviter_user_id']);
         $chatSession->interlocutorUser = ChatUser::getObject($sessionRow['invited_user_id']);
     }
     $chatSession->id = $sessionRow['id'];
     $chatSession->startDate = $sessionRow['date'];
     $chatSession->closed = $sessionRow['closed'];
     $chatSession->closedBy = $sessionRow['closed_by'];
     $chatSession->closedReason = $sessionRow['closed_reason'];
     $chatSession->closedDate = $sessionRow['closed_date'];
     return $chatSession;
 }
 protected function getChatMessage($messageRow)
 {
     $chatMessage = new ChatMessage();
     $chatMessage->id = $messageRow['id'];
     $chatMessage->senderUser = ChatUser::getObject($messageRow['sender_user_id']);
     $chatMessage->receiverUser = ChatUser::getObject($messageRow['receiver_user_id']);
     $chatMessage->datetime = $messageRow['datetime'];
     $chatMessage->message = nl2br(htmlentities($messageRow['message'], ENT_COMPAT, 'UTF-8'));
     $chatMessage->is_system = $messageRow['is_system'];
     return $chatMessage;
 }
 protected function getInvitationObject($invitationRow)
 {
     if (empty($invitationRow) or !is_array($invitationRow)) {
         throw new InvalidArgumentException("Invalid \$invitationRow specified!");
     }
     $invitation = new ChatInvitation();
     $invitation->id = $invitationRow['id'];
     $invitation->inviterUser = ChatUser::getObject($invitationRow['sender_user_id']);
     $invitation->invitedUser = ChatUser::getObject($invitationRow['receiver_user_id']);
     $invitation->invitationMessage = $invitationRow['invitation_message'];
     $invitation->status = $invitationRow['status'];
     return $invitation;
 }
 public function getChatSessionsLog(MysqlPager $pager = null, $myUserId = null, $cacheMinutes = 0)
 {
     $sessions = array();
     $qb = new QueryBuilder();
     $qb->select(new Field("*", "chat_sess_log"))->from(Tbl::get('TBL_CHAT_SESSIONS_LOG'), "chat_sess_log");
     if ($myUserId !== null) {
         $orClause = new Orx();
         $orClause->add($qb->expr()->equal(new Field("user1_id", "chat_sess_log"), $myUserId));
         $orClause->add($qb->expr()->equal(new Field("user2_id", "chat_sess_log"), $myUserId));
         $qb->andWhere($orClause);
     }
     $qb->orderBy(new Field("datetime", "chat_sess_log"), MySqlDatabase::ORDER_DESC);
     $sqlQuery = $qb->getSQL();
     if ($pager !== null) {
         $this->query = $pager->executePagedSQL($sqlQuery, $cacheMinutes);
     } else {
         $this->query->exec($sqlQuery, $cacheMinutes);
     }
     if ($this->query->countRecords()) {
         while (($sesLogRow = $this->query->fetchRecord()) != null) {
             $chatSession = new ChatSessionLog();
             $chatSession->user1 = ChatUser::getObject($sesLogRow['user1_id']);
             $chatSession->user2 = ChatUser::getObject($sesLogRow['user2_id']);
             $chatSession->id = $sesLogRow['id'];
             $chatSession->closedDate = $sesLogRow['datetime'];
             array_push($sessions, $chatSession);
         }
     }
     return $sessions;
 }