Пример #1
0
 /**
  * Выводит сообщения - список последних с группировкой по пользователю
  * отделить вывод сообщений отдельного пользователя
  * @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));
 }