/** * Выводит сообщения - список последних с группировкой по пользователю * отделить вывод сообщений отдельного пользователя * @param int $id - ID-шник пользователя для переписки * @throws CHttpException - незарегистрированный пользователь */ public function actionMessages($id = 0) { // уберется в фильтре if (Yii::app()->user->isGuest) { throw new CHttpException(403, 'Чтобы просматривать эту страницу следует зарегистрироваться'); } if (empty($id)) { // messages list $messages = Message::model()->active()->lastMessages(); $users = Anketa::model()->with('mainphotoimage')->findAllByPk(array_keys($messages), array('index' => 'id')); $this->render('messages', array('messages' => $messages, 'users' => $users)); Yii::app()->end(); } //$me = $this->loadModel($id); // сохранить в сессии $me = Anketa::model()->with('mainphotoimage')->findByPk(Yii::app()->user->id); $user = Anketa::model()->with('mainphotoimage')->findByPk($id); $welike = Anketa::isWelike($user->id, Yii::app()->user->id); $message = new Message('send'); if (isset($_POST['Message'])) { if (!$welike) { Yii::app()->user->setFlash('error', 'Отправлять сообщения можно только по взаимной симпатии'); $this->refresh(); } $message->attributes = $_POST['Message']; $message->id_from = Yii::app()->user->id; $message->id_to = $user->id; if ($message->validate()) { $message->save(); $this->refresh(); } } $messages = Message::model()->active()->fromto($id)->findAll(); if (empty($messages) && !$welike) { throw new CHttpException('403', 'Переписка возможна только по взаимной симпатии'); } foreach ($messages as $message1) { if ($message1->id_to == Yii::app()->user->id) { $message1->viewed = true; $message1->saveAttributes(array('viewed')); } } $this->render('messages_one', array('messages' => $messages, 'me' => $me, 'user' => $user, 'posted' => $message, 'hideform' => !$welike)); }