public static function readAll($senderID) { if ($senderID == 0) { //使当前登录用户所有的系统消息与通知为已读 //将一对一的系统通知置为已读 Message::model()->updateAll(array('status' => 1, 'utime' => time()), 'senderID=0 and RecID=:RecId and type=1 and status=0', array(':RecId' => Yii::app()->user->id)); //将全局系统消息置为已读 $messages = Message::model()->findAll('senderID=0 and RecID=0 and type=2 and (expireTime > :time or expireTime=0) and status=0 and not exists(select mid from messageLog where mid=t.id and uid=:uid)', array(':time' => time(), ':uid' => Yii::app()->user->id)); $sql = ''; foreach ($messages as $message) { $sql .= 'insert into messageLog values(' . $message->id . ',' . Yii::app()->user->id . ',' . time() . ') ON DUPLICATE KEY UPDATE ctime=' . time() . ';'; } if ($sql) { MessageLog::model()->dbConnection->createCommand($sql)->execute(); } } else { //使用当前用户与此人的私聊全部为已读,自己发送的消息不需要置为已读 Message::model()->updateAll(array('status' => 1, 'utime' => time()), 'senderID=:senderId and RecID=:RecId and type=0 and status=0', array(':senderId' => $senderID, ':RecId' => Yii::app()->user->id)); } }