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

use 
ConcreteCoreApplicationEditResponse;
use 
ConcreteCorePageControllerDashboardPageController;
use 
Loader;
use 
stdClass;
use 
Page;
use 
UserInfo;
use 
Core;
use 
ConcreteCoreConversationFlagTypeFlagType as ConversationFlagType;
use 
ConcreteCoreConversationFlagTypeFlagTypeList as ConversationFlagTypeList;
use 
ConcreteCoreConversationMessageMessage as ConversationMessage;
use 
ConcreteCoreConversationMessageMessageList as ConversationMessageList;

class 
Messages extends DashboardPageController
{

    
/**
     * Returns default message filter for search interface. We default to all, UNLESS we have at least one access
     * entity that publishes its messages and has them be unapproved. If that's the case, then we default to unapproved.
     */
    
protected function getDefaultMessageFilter()
    {
        
$filter 'all';
        
$db Database::get();
        
$count $db->GetOne('select count(cpa.paID) from ConversationPermissionAssignments cpa
            inner join PermissionAccess pa on cpa.paID = pa.paID
            inner join ConversationPermissionAddMessageAccessList cpl on pa.paID = cpl.paID
            where paIsInUse = 1 and permission = "U"'
);
        if (
$count 0) {
            
$filter 'unapproved';
        }
        return 
$filter;
    }

    public function 
view()
    {
        
$ml = new ConversationMessageList();
        
$ml->setItemsPerPage(20);
        
$cmpFilterTypes = array(
            
'all' => t('** Show All'),
            
'unapproved' => t('Unapproved'),
            
'approved' => t('Approved'),
            
'deleted' => t('Deleted'),
        );
        
$fl = new ConversationFlagTypeList();
        foreach (
$fl->get() as $flagtype) {
            
$cmpFilterTypes[$flagtype->getConversationFlagTypeHandle()] = Loader::helper('text')->unhandle(
                
$flagtype->getConversationFlagTypeHandle()
            );
        }
        
$cmpSortTypes = array(
            
'date_desc' => t('Recent First'),
            
'date_asc' => t('Earliest First')
        );

        if (
$_REQUEST['cmpMessageKeywords']) {
            
$ml->filterByKeywords($_REQUEST['cmpMessageKeywords']);
            
$ml->filterByNotDeleted();
        }

        
$cmpMessageFilter $this->getDefaultMessageFilter();
        if (
$this->request->query->has('cmpMessageFilter')
            && 
in_array($this->request->query->get('cmpMessageFilter'), array_keys($cmpFilterTypes))) {
            
$cmpMessageFilter $this->request->query->get('cmpMessageFilter');
        }

        switch (
$cmpMessageFilter) {
            case 
'all':
                break;
            case 
'approved':
                
$ml->filterByApproved();
                break;
            case 
'deleted':
                
$ml->filterByDeleted();
                break;
            case 
'unapproved':
                
$ml->filterByUnapproved();
                
$ml->filterByNotDeleted();
                break;
            default: 
// flag
                
$flagtype ConversationFlagType::getByHandle($_REQUEST['cmpMessageFilter']);
                if (
is_object($flagtype)) {
                    
$ml->filterByFlag($flagtype);
                    
$ml->filterByNotDeleted();
                } else {
                    
$ml->filterByNotDeleted();
                }
                break;

        }
        if (
$_REQUEST['cmpMessageSort'] == 'date_asc') {
            
$ml->sortByDateAscending();
        } else {
            
$ml->sortByDateDescending();
        }

        
$this->set('list'$ml);
        
$this->set('messages'$ml->getPage());
        
$this->set('cmpFilterTypes'$cmpFilterTypes);
        
$this->set('cmpSortTypes'$cmpSortTypes);
        
$this->set('cmpMessageFilter'$cmpMessageFilter);
    }

    public function 
approve_message()
    {
        
$e Core::make('error');
        
$message ConversationMessage::getByID($this->post('cnvMessageID'));
        if (!
is_object($message)) {
            
$e->add(t('Invalid message'));
        } else {
            
$mp = new Permissions($message);
            if (!
$mp->canApproveConversationMessage()) {
                
$e->add(t('You do not have permission to approve this message.'));
            }
        }
        
$er = new EditResponse($e);
        if (!
$e->has()) {
            
$message->approve();
            
$er->setMessage(t('Message approved.'));
        }
        
$er->outputJSON();
    }

    public function 
unflag_message()
    {
        
$e Core::make('error');
        
$message ConversationMessage::getByID($this->post('cnvMessageID'));
        if (!
is_object($message)) {
            
$e->add(t('Invalid message'));
        } else {
            
$mp = new Permissions($message);
            if (!
$mp->canFlagConversationMessage()) {
                
$e->add(t('You do not have permission to flag this message.'));
            }
        }
        
$er = new EditResponse($e);
        if (!
$e->has()) {
            
$spamFlag ConversationFlagType::getByHandle('spam');
            
$message->unflag($spamFlag);
            
$er->setMessage(t('Message unflagged.'));
        }
        
$er->outputJSON();
    }

    public function 
undelete_message()
    {
        
$e Core::make('error');
        
$message ConversationMessage::getByID($this->post('cnvMessageID'));
        if (!
is_object($message)) {
            
$e->add(t('Invalid message'));
        } else {
            
$mp = new Permissions($message);
            if (!
$mp->canDeleteConversationMessage()) {
                
$e->add(t('You do not have permission to restore this message.'));
            }
        }
        
$er = new EditResponse($e);
        if (!
$e->has()) {
            
$message->restore();
            
$er->setMessage(t('Message restored.'));
        }
        
$er->outputJSON();
    }

    
/*

    public function restoreMessage()
    {
        $json = Loader::helper('json');
        $response = new stdClass();
        $message = ConversationMessage::getByID($this->post('messageID'));
        if (is_object($message)) {
            $message->restore();
            $response->success = t('Message successfully deleted.');
            echo $json->encode($response);
            exit;
        } else {
            $response->error = t('Invalid message');
            echo $json->encode($response);
            exit;
        }
        exit;
    }

    public function markUser()
    {
        $json = Loader::helper('json');
        $response = new stdClass();
        $message = ConversationMessage::getByID($this->post('messageID'));
        if (is_object($message)) {
            $targetUser = UserInfo::getByID($message->uID);
            if (is_object($targetUser)) {
                $userMessageList = new ConversationMessageList();
                $userMessageList->filterByUser($message->uID);
                $userMessages = $userMessageList->get();
                $spamFlag = ConversationFlagType::getByHandle('spam');
                foreach ($userMessages as $userMessage) {
                    $userMessage->flag($spamFlag);
                }
                $response->success = t('All user messages marked as spam.');
                echo $json->encode($response);
                exit;
            }
            $response->error = t('Invalid User');
            echo $json->encode($response);
            exit;
        } else {
            $response->error = t('Invalid message');
            echo $json->encode($response);
            exit;
        }
    }

    public function deactivateUser()
    {
        // notes -- do we want to check for posts by this user that are still active before deactivation?
        $json = Loader::helper('json');
        $response = new stdClass();
        $message = ConversationMessage::getByID($this->post('messageID'));
        if (is_object($message)) {
            $targetUser = UserInfo::getByID($message->uID);
            if (is_object($targetUser)) {
                $targetUser->deactivate();
                $response->success = t('User deactivated.');
                echo $json->encode($response);
                exit;
            }
            $response->error = t('Invalid User');
            echo $json->encode($response);
            exit;
        } else {
            $response->error = t('Invalid message');
            echo $json->encode($response);
            exit;
        }
    }

    public function blockUserIP()
    {
        $json = Loader::helper('json');
        $ip = Loader::helper('validation/ip');
        $response = new stdClass();
        $message = ConversationMessage::getByID($this->post('messageID'));
        if (is_object($message)) {
            $targetIP = $message->getConversationMessageSubmitIP();
            $ip->createIPBan($targetIP, true);
            $response->success = t('IP successfully banned.');
            echo $json->encode($response);
            exit;
        } else {
            $response->error = t('Invalid message');
            echo $json->encode($response);
            exit;
        }
        exit;
    }
    */
}
Онлайн: 0
Реклама