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

namespace ConcreteBlockCoreGathering;

use 
ConcreteCoreGatheringGathering;
use 
ConcreteCoreBlockBlockController;
use 
Database;

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

    public function 
getBlockTypeDescription()
    {
        return 
t("Displays pages and data in list or grids.");
    }

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

    public function 
duplicate($newBID)
    {
        
$ni parent::duplicate($newBID);
        
$ag Gathering::getByID($this->gaID);
        
$nr $ag->duplicate();
        
$db Database::connection();
        
$db->Execute('update btCoreGathering set gaID = ? where bID = ?', array($nr->getGatheringID(), $ni->bID));
    }

    protected function 
setupForm()
    {
        
$gathering false;
        
$activeSources = array();
        if (
$this->gaID) {
            
$gathering Gathering::getByID($this->gaID);
            
$activeSources $gathering->getConfiguredGatheringDataSources();
        }
        
$availableSources GatheringDataSource::getList();
        
$this->set('availableSources'$availableSources);
        
$this->set('activeSources'$activeSources);
        
$this->set('gathering'$gathering);
    }

    public function 
getGatheringObject()
    {
        if (!isset(
$this->gathering)) {
            
// i don't know why this->cnvid isn't sticky in some cases, leading us to query
            // every damn time
            
$db Database::connection();
            
$agID $db->GetOne('select gaID from btCoreGathering where bID = ?', array($this->bID));
            
$this->gathering Gathering::getByID($agID);
        }

        return 
$this->gathering;
    }

    public function 
add()
    {
        
$this->setupForm();
    }

    public function 
edit()
    {
        
$this->setupForm();
        
$this->view();
    }

    public function 
action_post()
    {
        
// happens through ajax
            
$pagetype PageType::getByID($this->ptID);
        if (
is_object($pagetype) && $this->enablePostingFromGathering) {
            
$ccp = new Permissions($pagetype);
            if (
$ccp->canEditPageTypeInComposer()) {
                
$ct PageType::getByID($this->post('ptComposerPageTypeID'));
                
$availablePageTypes $pagetype->getComposerPageTypeObjects();

                if (!
is_object($ct) && count($availablePageTypes) == 1) {
                    
$ct $availablePageTypes[0];
                }

                
$c Page::getCurrentPage();
                
$e $pagetype->validatePublishRequest($ct$c);
                
$r = new PageTypePublishResponse($e);
                if (!
$e->has()) {
                    
$d $pagetype->createDraft($ct);
                    
$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($args)
    {
        
$db Database::connection();
        
$agID $db->GetOne('select gaID from btCoreGathering where bID = ?', array($this->bID));
        if (!
$agID) {
            
$ag Gathering::add();
            
$task 'add';
        } else {
            
$ag Gathering::getByID($agID);
            
$task 'edit';
        }

        
$tab $args['tab'];
        if (!
is_array($tab)) {
            
$tab = array();
        }
        if (
$task == 'add' || in_array('sources'$tab)) {
            
$ag->clearConfiguredGatheringDataSources();
            
$sources $this->post('gasID');
            foreach (
$sources as $key => $gasID) {
                
$key = (string) $key// because PHP is stupid
                    
if ($key != '_gas_') {
                        
$ags GatheringDataSource::getByID($gasID);
                        
$ags->setOptionFormKey($key);
                        
$post $ags->getOptionFormRequestData();
                        
$agc $ags->configure($ag$post);
                    }
            }
            
$ag->generateGatheringItems();
        }

        
$itemsPerPage intval($args['itemsPerPage']);
        
$values = array(
            
'gaID' => $ag->getGatheringID(),
        );

        if (
in_array('output'$tab)) {
            
$values['itemsPerPage'] = $itemsPerPage;
        } else {
            
$values['itemsPerPage'] = $this->itemsPerPage;
        }

        if (
in_array('posting'$tab)) {
            
$ptID 0;
            if (
$args['enablePostingFromGathering']) {
                
$values['enablePostingFromGathering'] = 1;
                if (
$args['ptID']) {
                    
$ptID $args['ptID'];
                }
            } else {
                
$values['enablePostingFromGathering'] = 0;
            }
            
$values['ptID'] = $ptID;
        } else {
            
$values['ptID'] = $this->ptID;
            
$values['enablePostingFromGathering'] = $this->enablePostingFromGathering;
        }
        
parent::save($values);
    }

    public function 
delete()
    {
        
parent::delete();
        if (
$this->gaID) {
            
$gathering Gathering::getByID($this->gaID);
            if (
is_object($gathering)) {
                
$gathering->delete();
            }
        }
    }

    public function 
registerViewAssets($outputContent '')
    {
        
$this->requireAsset('core/gathering');
    }

    public function 
view()
    {
        if (
$this->gaID) {
            
$gathering Gathering::getByID($this->gaID);
            if (
is_object($gathering)) {
                
Core::make('helper/overlay')->init(false);
                if (
$this->enablePostingFromGathering && $this->ptID) {
                    
$pt PageType::getByID($this->ptID);
                    
Core::make('helper/concrete/composer')->addAssetsToRequest($pt$this);
                    
$p = new Permissions($pt);
                    if (
$p->canEditPageTypeInComposer()) {
                        
$this->set('pagetype'$pt);
                    }
                }
                
$list = new GatheringItemList($gathering);
                
$list->sortByDateDescending();
                
$list->setItemsPerPage($this->itemsPerPage);
                
$this->set('gathering'$gathering);
                
$this->set('itemList'$list);
            }
        }
    }
}
Онлайн: 0
Реклама