Вход Регистрация
Файл: concrete5.7.5.6/concrete/blocks/discussion/controller.php
Строк: 125
<?php

namespace ConcreteBlockDiscussion;

use 
ConcreteCoreBlockBlockController;
use 
Core;
use 
Database;

class 
Controller extends BlockController
{
    protected 
$btCacheBlockRecord true;
    protected 
$btTable 'btDiscussion';

    public function 
getBlockTypeDescription()
    {
        return 
t("Places a discussion a page.");
    }

    public function 
getBlockTypeName()
    {
        return 
t("Discussion");
    }

    public function 
getConversationDiscussionObject()
    {
        if (!isset(
$this->discussion)) {
            
$db Database::connection();
            
$cnvDiscussionID $db->GetOne('select cnvDiscussionID from btDiscussion where bID = ?', array($this->bID));
            
$this->discussion ConversationDiscussion::getByID($cnvDiscussionID);
        }

        return 
$this->discussion;
    }

    public function 
registerViewAssets($outputContent '')
    {
        
$this->requireAsset('core/conversation');
        
$this->requireAsset('css''core/frontend/pagination');
    }

    public function 
view()
    {
        
$discussion $this->getConversationDiscussionObject();
        if (
is_object($discussion)) {
            
$this->set('discussion'$discussion);
            if (
$this->enableNewTopics && $this->ptID) {
                
$pt PageType::getByID($this->ptID);
                
$this->set('pagetype'$pt);
                
Core::make('helper/concrete/composer')->addAssetsToRequest($pt$this);
            }

            
$c Page::getCurrentPage();
            
$dl = new ConversationDiscussionList($c);
            
$orderBy $this->orderBy;
            if (
in_array($_REQUEST['orderBy'], array('replies''date''date_last_message')) && $this->enableOrdering) {
                
$orderBy $_REQUEST['orderBy'];
            }
            switch (
$orderBy) {
                case 
'replies':
                    
$dl->sortByTotalReplies();
                    break;
                case 
'date':
                    
$dl->sortByPublicDateDescending();
                    break;
                default: 
//date_last_message
                    
$dl->sortByConversationDateLastMessage();
                    break;
            }
            if (
$this->itemsPerPage 0) {
                
$dl->setItemsPerPage($this->itemsPerPage);
            }
            
$pages $dl->getPage();
            
$this->set('reqOrderBy'$orderBy);
            
$this->set('topics'$pages);
            
$this->set('list'$dl);
        }
    }

    public function 
action_post()
    {
        
// happens through ajax
        
$pagetype PageType::getByID($this->ptID);
        if (
is_object($pagetype) && $this->enableNewTopics) {
            
$ccp = new Permissions($pagetype);
            if (
$ccp->canAddPageType()) {
                
$pagetypes $pagetype->getPageTypeComposerPageTypeObjects();
                
$ctTopic $pagetypes[0];
                
$c Page::getCurrentPage();
                
$e $pagetype->validatePublishRequest($ctTopic$c);
                
$r = new PageTypePublishResponse($e);
                if (!
$e->has()) {
                    
$d $pagetype->createDraft($ctTopic);
                    
$d->setPageDraftTargetParentPageID($c->getCollectionID());
                    
$d->saveForm();
                    
$d->publish();
                    
$nc Page::getByID($d->getCollectionID(), 'RECENT');
                    
$link Core::make('helper/navigation')->getLinkToCollection($nctrue);
                    
$r->setRedirectURL($link);
                }
                
$r->outputJSON();
            }
        }
        exit;
    }

    public function 
save($post)
    {
        
$db Database::connection();
        
$cnvID $db->GetOne('select cnvDiscussionID from btDiscussion where bID = ?', array($this->bID));
        if (!
$cnvID) {
            
$c Page::getCurrentPage();
            
$discussion ConversationDiscussion::add($c);
        } else {
            
$discussion ConversationDiscussion::getByID($cnvID);
        }
        
$values $post;
        
$ptID 0;
        if (
$post['ptID']) {
            
$ptID $post['ptID'];
        }
        
$values['ptID'] = $ptID;
        
$values['cnvDiscussionID'] = $discussion->getConversationDiscussionID();
        
parent::save($values);
    }
}
Онлайн: 3
Реклама