/**
  * @see Page::readData()
  */
 public function readData()
 {
     parent::readData();
     if (WCF::getUser()->hasDiliziumFeature("messageFolders")) {
         $this->folders = MessageFolder::getByUserID(WCF::getUser()->userID);
         if (WCF::getUser()->new_message && $this->active === null && !$this->checked) {
             // show new messages
             $this->messages = NMessage::getByUserID(WCF::getUser()->userID, null, null, true, self::MESSAGES_FOLDERS + 1, ($this->pageNo - 1) * self::MESSAGES_FOLDERS);
             foreach ($this->messages as $message) {
                 if (!isset($this->spare[$message->folderID])) {
                     $this->spare[$message->folderID] = $message->folderID;
                 }
             }
         } else {
             // show requested messages
             if ($this->active === null && !$this->checked) {
                 $this->active = array();
             }
             $this->messages = NMessage::getByUserID(WCF::getUser()->userID, $this->checked, $this->active, false, self::MESSAGES_FOLDERS + 1, ($this->pageNo - 1) * self::MESSAGES_FOLDERS);
         }
         $this->nextPage = count($this->messages) > self::MESSAGES_FOLDERS;
         if ($this->nextPage) {
             array_pop($this->messages);
         }
     } else {
         $this->pageNo = 1;
         $this->messages = NMessage::getByUserID(WCF::getUser()->userID, $this->checked, $this->active, false, self::MESSAGES);
     }
     // update data
     $messageUpdates = array();
     foreach ($this->messages as $message) {
         if (!$message->viewed) {
             $messageUpdates[] = $message->messageID;
         }
     }
     if (count($messageUpdates)) {
         NMessageEditor::view($messageUpdates, WCF::getUser()->userID);
     }
 }
Beispiel #2
0
<h1>Cообщения / <?=$currentFolder->name?></h1>
<div id="mfolders">

    <?php
    $folders = MessageFolder::model()->sorted()->visible()->findAll();
    foreach ($folders as $k => $folder) { ?>
        <?php echo $folder->id == $currentFolder ? $folder->name:
            CHtml::link($folder->name,array('anketa/messages','folder'=>$folder->id)) ?>:
        <?php if ($folder->id != Anketa::FOLDER_ID_IGNORE)
            if ($unread = $folder->unreadCount) echo "<b class='pink'>$unread</b> "; else echo "<b class='black'>$unread</b>"; ?> /
        <?php echo $folder->messagelistCount; ?>
        <br/>
    <?php if ($folder->id == $currentFolder->id) unset ($folders[$k]); // убрать текущую папку из списка для перемещения ?>
    <?php } ?>
</div>
<div style="width:760px;float:left;" id="message-list-sort">
<?php echo CHtml::beginForm(array('anketa/sortMessages'),'post',array('onsubmit'=>'js:return checkMessageForm();')); ?>
<?php foreach($messages as $k=> $message) {
    $anketa = $users[$k];
    $cnt = $message['cnt'];
    $new = isset($newCnt[$k]) ? $newCnt[$k] : 0;
    if (!$anketa) continue;?>
<div class="messagelist my<?php // echo $message->id_from==Yii::app()->user->id?' my':''?>">
    <div class="mchkbox"><?php echo CHtml::checkBox('id[]',false,array('value'=>$anketa->id)) ?></div>
    <div class="mphoto">
    <span class="messagephoto">
    <?php echo
    $anketa->isdeleted ? CHtml::image($anketa->mainPhotoUrl, $anketa->name) :
        CHtml::link(CHtml::image($anketa->mainPhotoUrl, $anketa->name),
            $anketa->link);
        ?>
Beispiel #3
0
 /**
  * Выводит сообщения - список последних с группировкой по пользователю
  * отделить вывод сообщений отдельного пользователя
  * @param int $id - ID-шник пользователя для переписки
  * @throws CHttpException - незарегистрированный пользователь
  */
 public function actionMessages($id = 0, $folder = 0, $mode = 0)
 {
     if (Yii::app()->user->isGuest) {
         $this->actionFakeMessages($id);
     }
     if (Yii::app()->user->id == $id) {
         // нельзя писать самому себе
         throw new CHttpException(404, 'Страница не найдена');
     }
     if (!($currentFolder = MessageFolder::model()->findByPk($folder))) {
         throw new CHttpException(404, 'Папка не найдена');
     }
     if (empty($id)) {
         // messages list
         $messages = MessageCount::model()->lastMessages(null, $folder);
         $users = Anketa::model()->with('mainphotoimage')->findAllByPk(array_keys($messages), array('index' => 'id'));
         $newCnt = MessageCount::newMessages(null, array_keys($messages));
         $this->render('messages', array('messages' => $messages, 'users' => $users, 'currentFolder' => $currentFolder, 'newCnt' => $newCnt));
         Yii::app()->end();
     }
     // сохранить в сессии не будем, т.к. см ниже
     $me = Anketa::model()->with('mainphotoimage')->findByPk(Yii::app()->user->id);
     $user = Anketa::model()->with('mainphotoimage')->findByPk($id);
     if (!$me || $me->isdeleted) {
         Yii::app()->user->logout(false);
         Yii::app()->end();
     }
     // if (!user || $user->isdeleted) {throw new CHttpException(403,'Анкета удалена');}
     $welike = 1;
     // 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();
         }
         if ($me->disallowMessageTo($user)) {
             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()) {
             // вычитаем контакт, если диалога раньше не было
             if (!$me->wasDialogTo($user)) {
                 MessageFolder::addDefaultFolder($me->id, $user->id);
                 $me->updateCounters(array('contact_count' => -1), 'id=' . $me->id);
             }
             $message->save();
             $this->refresh();
         }
     }
     $all = (bool) $mode;
     $count = Message::model()->active()->fromto($id)->count();
     $all = $count < 25 || $all;
     if ($all) {
         $messages = Message::model()->active()->fromto($id)->findAll(array('order' => 'id'));
     } else {
         $messages = Message::model()->active()->fromto($id)->findAll(array('order' => 'id DESC', 'limit' => 10));
         $messages = array_reverse($messages);
     }
     if (empty($messages) && !$welike) {
         throw new CHttpException('403', 'Переписка возможна только по взаимной симпатии');
     }
     foreach ($messages as $message1) {
         if ($message1->id_to == Yii::app()->user->id && $message1->viewed == false) {
             $message1->viewed = true;
             $message1->saveAttributes(array('viewed'));
         }
     }
     $this->render('messages_one', array('messages' => $messages, 'me' => $me, 'user' => $user, 'posted' => $message, 'hideform' => !$welike, 'all' => $all));
 }