예제 #1
0
파일: Chat.class.php 프로젝트: kardi31/ogl
 public static function getUsers()
 {
     if ($_SESSION['user']['name']) {
         $user = new ChatUser(array('name' => $_SESSION['user']['name']));
         $user->update();
     }
     // Deleting chats older than 5 minutes and users inactive for 30 seconds
     //DB::query("DELETE FROM webchat_lines WHERE ts < SUBTIME(NOW(),'0:25:0')");
     DB::query("DELETE FROM webchat_users WHERE last_activity < SUBTIME(NOW(),'0:15:30')");
     $result = DB::query('SELECT * FROM webchat_users WHERE gravatar<>"' . $_SESSION['user_id'] . '" ORDER BY name ASC LIMIT 18');
     $users = array();
     $us = array();
     while ($user = $result->fetch_object()) {
         $user->gravatar = $user->gravatar;
         $ilejest = 0;
         if ($_COOKIE['chat_0'] != "off") {
             $ilejest = DB::query('SELECT COUNT(*) as asd FROM webchat_lines WHERE tss>"' . DB::esc($_COOKIE['chat_' . $user->gravatar . '']) . '" and room_do="' . $user->gravatar . '" and room="' . $_SESSION['user_id'] . '" and czyt="0"')->fetch_object()->asd;
             if ($ilejest >= 1) {
                 $user->ile_a = '<span class="ilejest" id="user_ile_' . $user->gravatar . '">(' . $ilejest . ')</span>';
             } else {
                 $user->ile_a = '';
             }
         }
         $us[] = $user->gravatar;
         $users[] = $user;
     }
     $ile_u = DB::query('SELECT COUNT(*) as cnt FROM webchat_users')->fetch_object()->cnt;
     if ($ile_u >= 1) {
         $ile_u = $ile_u - 1;
     }
     $result = DB::query('SELECT * FROM webchat_lines WHERE czyt=0 and room="' . $_SESSION['user_id'] . '" GROUP by author');
     while ($use = $result->fetch_object()) {
         if (!in_array($use->room_do, $us)) {
             $user->gravatar = $use->room_do;
             $user->name = $use->author;
             $ilejest = 0;
             if ($_COOKIE['chat_0'] != "off") {
                 $ilejest = DB::query('SELECT COUNT(*) as asd FROM webchat_lines WHERE  room_do="' . $user->gravatar . '" and room="' . $_SESSION['user_id'] . '" and czyt="0"')->fetch_object()->asd;
                 if ($ilejest >= 1) {
                     $user->ile_a = '<span class="ilejest" id="user_ile_' . $user->gravatar . '">(' . $ilejest . ')</span>';
                 } else {
                     $user->ile_a = '';
                 }
             }
             $users[] = $user;
         }
     }
     return array('users' => $users, 'ile_a' => $ile_a, 'total' => $ile_u);
 }
예제 #2
0
 public static function getUsers()
 {
     if ($_SESSION['user']['name']) {
         $user = new ChatUser(array('name' => $_SESSION['user']['name']));
         $user->update();
     }
     DB::query("DELETE FROM webchat_lines WHERE ts < SUBTIME(NOW(),'0:5:0')");
     DB::query("DELETE FROM webchat_users WHERE last_activity < SUBTIME(NOW(),'0:0:30')");
     $result = DB::query('SELECT * FROM webchat_users ORDER BY name ASC LIMIT 18');
     $users = array();
     while ($user = $result->fetch_object()) {
         $user->gravatar = Chat::gravatarFromHash($user->gravatar, 30);
         $users[] = $user;
     }
     return array('users' => $users, 'total' => DB::query('SELECT COUNT(*) as cnt FROM webchat_users')->fetch_object()->cnt);
 }
 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;
 }
예제 #4
0
 public static function getUsers()
 {
     if (Yii::app()->user->name) {
         $user = new ChatUser(array('name' => Yii::app()->user->name));
         $user->update();
     }
     // Deleting chats older than 5 minutes and users inactive for 30 seconds
     DB::query("DELETE FROM webchat_lines WHERE ts < SUBTIME(NOW(),'0:5:0')");
     DB::query("DELETE FROM webchat_users WHERE last_activity < SUBTIME(NOW(),'0:0:30')");
     $result = DB::query('SELECT * FROM webchat_users ORDER BY name ASC LIMIT 18');
     $users = array();
     while ($user = $result->fetch_object()) {
         $user->gravatar = Chat::gravatarFromHash($user->gravatar, 30);
         $users[] = $user;
     }
     return array('users' => $users, 'total' => DB::query('SELECT COUNT(*) as cnt FROM webchat_users')->fetch_object()->cnt);
 }
 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;
 }
예제 #7
0
 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;
 }
예제 #8
0
 public function doChangeName(\ChatUser $user, $message)
 {
     $old_name = $user->name;
     if ($old_name == $message->body) {
         return;
     }
     $user->name = $message->body;
     $user_array = $user->toArray();
     $user_array['old_name'] = $old_name;
     // Broadcast user name change
     \Whippy\Client::broadcast(new ChatMessage($user_array, ChatMessage::USER_CHANGE));
 }
예제 #9
0
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      ChatUser $value A ChatUser object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(ChatUser $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }