Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/single_page/account/messages/inbox.php
Строк: 130
<?php
namespace ConcreteControllerSinglePageAccountMessages;

use 
ConcreteCorePageControllerAccountPageController;
use 
ConcreteCoreUserPrivateMessageMailbox as UserPrivateMessageMailbox;
use 
ConcreteCoreUserPrivateMessagePrivateMessage as UserPrivateMessage;
use 
UserInfo;
use 
Loader;
use 
View;
use 
Core;
use 
User;

class 
Inbox extends AccountPageController
{
    public function 
view()
    {
        
$u = new User();
        
$ui UserInfo::getByID($u->getUserID());

        
$inbox UserPrivateMessageMailbox::get($ui$this->getMessageMailboxID('inbox'));
        
$sent UserPrivateMessageMailbox::get($ui$this->getMessageMailboxID('sent'));

        
$this->set('inbox'$inbox);
        
$this->set('sent'$sent);
    }

    protected function 
validateUser($uID)
    {
        if (
$uID 0) {
            
$ui UserInfo::getByID($uID);
            if ((
is_object($ui)) && ($ui->getAttribute('profile_private_messages_enabled') == 1)) {
                
$this->set('recipient'$ui);

                return 
true;
            }
        }

        
$this->redirect('/profile');
    }

    protected function 
getMessageMailboxID($box)
    {
        
$msgMailboxID 0;
        switch (
$box) {
            case 
'inbox':
                
$msgMailboxID UserPrivateMessageMailbox::MBTYPE_INBOX;
                break;
            case 
'sent':
                
$msgMailboxID UserPrivateMessageMailbox::MBTYPE_SENT;
                break;
            default:
                
$msgMailboxID $box;
                break;
        }

        return 
$msgMailboxID;
    }

    public function 
view_mailbox($box)
    {
        
$msgMailboxID $this->getMessageMailboxID($box);

        
$u = new User();
        
$ui UserInfo::getByID($u->getUserID());

        
$mailbox UserPrivateMessageMailbox::get($ui$msgMailboxID);
        if (
is_object($mailbox)) {
            
$messageList $mailbox->getMessageList();
            
$messages $messageList->getPage();
            
$this->set('messages'$messages);
            
$this->set('messageList'$messageList);
        }

        
// also, we have to mark all messages in this mailbox as no longer "new"

        
$mailbox->removeNewStatus();
        
$this->set('mailbox'$box);
    }

    public function 
view_message($box$msgID)
    {
        
$msgMailboxID $this->getMessageMailboxID($box);
        
$u = new User();
        
$ui UserInfo::getByID($u->getUserID());
        
$mailbox UserPrivateMessageMailbox::get($ui$msgMailboxID);
        
$msg UserPrivateMessage::getByID($msgID$mailbox);
        if (
$ui->canReadPrivateMessage($msg)) {
            
$dh Core::make('helper/date'); /* @var $dh ConcreteCoreLocalizationServiceDate */
            
$msg->markAsRead();
            
$this->set('subject'$msg->getFormattedMessageSubject());
            
$this->set('msgContent'$msg->getMessageBody());
            
$this->set('dateAdded'$dh->formatDateTime($msg->getMessageDateAdded(), true));
            
$this->set('author'$msg->getMessageAuthorObject());
            
$this->set('msg'$msg);
            
$this->set('box'$box);
            
$this->set('backURL'View::url('/account/messages/inbox''view_mailbox'h($box)));
            
$valt Loader::helper('validation/token');
            
$token $valt->generate('delete_message_' $msgID);
            
$this->set('deleteURL'View::url('/account/messages/inbox''delete_message'h($box), h($msgID), $token));
        } else {
            
$this->redirect('/account/messages/inbox');
        }
    }

    public function 
delete_message($box$msgID$token)
    {
        
$valt Loader::helper('validation/token');
        if (!
$valt->validate('delete_message_' $msgID$token)) {
            
$this->error->add($valt->getErrorMessage());
        }

        
$msgMailboxID $this->getMessageMailboxID($box);
        
$u = new User();
        
$ui UserInfo::getByID($u->getUserID());
        
$mailbox UserPrivateMessageMailbox::get($ui$msgMailboxID);

        
$msg UserPrivateMessage::getByID($msgID$mailbox);
        if (
$ui->canReadPrivateMessage($msg) && (!$this->error->has())) {
            
$msg->delete();
            
$this->redirect('/account/messages/inbox''view_mailbox'$box);
        }
        print 
$this->view();
    }

    public function 
write($uID)
    {
        
$this->validateUser($uID);
        
$profile $this->get('profile');
        
$this->set('backURL'$profile->getUserPublicProfileURL());
    }

    public function 
reply($boxID$msgID)
    {
        
$dh Core::make('helper/date'); /* @var $dh ConcreteCoreLocalizationServiceDate */
        
$msg UserPrivateMessage::getByID($msgID);
        
$uID $msg->getMessageRelevantUserID();
        
$this->validateUser($uID);
        
$this->set('backURL'View::url('/account/messages/inbox''view_message'$boxID$msgID));
        
$this->set('msgID'$msgID);
        
$this->set('box'$boxID);
        
$this->set('msg'$msg);

        
$this->set('msgSubject'$msg->getFormattedMessageSubject());

        
$body "nnn" $msg->getMessageDelimiter() . "n";
        
$body .= t("From: %snDate Sent: %snSubject: %s"$msg->getMessageAuthorName(), $dh->formatDateTime($msg->getMessageDateAdded(), true), $msg->getFormattedMessageSubject());
        
$body .= "nn" $msg->getMessageBody();
        
$this->set('msgBody'$body);
    }

    public function 
send()
    {
        
$uID $this->post('uID');

        if (
$this->post('msgID') > 0) {
            
$msgID $this->post('msgID');
            
$box $this->post('box');
            
$this->reply($box$msgID);
        } else {
            
$this->write($uID);
        }

        
$vf Loader::helper('validation/form');
        
$vf->setData($this->post());
        
$vf->addRequired('msgBody't("You haven't written a message!"));
        
$vf->addRequiredToken("validate_send_message");
        if (
$vf->test()) {
            
$u = new User();
            
$sender UserInfo::getByID($u->getUserID());
            
$r $sender->sendPrivateMessage($this->get('recipient'), $this->post('msgSubject'), $this->post('msgBody'), $this->get('msg'));
            if (
$r instanceof ConcreteCoreHelperValidationError) {
                
$this->error $r;
            } else {
                if (
$this->post('msgID') > 0) {
                    
$this->redirect('/account/messages/inbox''reply_complete'$box$msgID);
                } else {
                    
$this->redirect('/account/messages/inbox''send_complete'$uID);
                }
            }
        } else {
            
$this->error $vf->getError();
        }
    }

    public function 
send_complete($uID)
    {
        
$this->validateUser($uID);
    }

    public function 
reply_complete($box$msgID)
    {
        
$this->reply($box$msgID);
    }

    public function 
on_before_render()
    {
        
$this->set('error'$this->error);
    }

}
Онлайн: 0
Реклама