Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Page/Type/Composer/FormLayoutSetControl.php
Строк: 316
<?php
namespace ConcreteCorePageTypeComposer;

use 
Loader;
use 
ConcreteCoreBackupContentExporter;
use 
PageTemplate;
use 
ConcreteCoreFoundationObject;
use 
ConcreteCorePageTypeComposerOutputControl as PageTypeComposerOutputControl;
use 
ConcreteCorePageTypeComposerFormLayoutSet as PageTypeComposerFormLayoutSet;
use 
ConcreteCorePageTypeComposerControlTypeType as PageTypeComposerControlType;

class 
FormLayoutSetControl extends Object
{

    protected 
$ptTargetParentPageID 0;

    public function 
getPageTypeComposerFormLayoutSetControlID() {return $this->ptComposerFormLayoutSetControlID;}
    public function 
getPageTypeComposerFormLayoutSetID() {return $this->ptComposerFormLayoutSetID;}
    public function 
getPageTypeComposerControlTypeID() {return $this->ptComposerControlTypeID;}
    public function 
getPageTypeComposerControlObject() {return $this->ptComposerControlObject;}
    public function 
getPageTypeComposerFormLayoutSetControlDisplayOrder() {return $this->ptComposerFormLayoutSetControlDisplayOrder;}
    public function 
getPageTypeComposerControlTypeObject() {return PageTypeComposerControlType::getByID($this->ptComposerControlTypeID);}
    public function 
getPageTypeComposerFormLayoutSetObject() {return PageTypeComposerFormLayoutSet::getByID($this->ptComposerFormLayoutSetID);}
    public function 
getPageTypeComposerFormLayoutSetControlCustomLabel() {return $this->ptComposerFormLayoutSetControlCustomLabel;}
    public function 
getPageTypeComposerFormLayoutSetControlCustomTemplate() {return $this->ptComposerFormLayoutSetControlCustomTemplate;}
    public function 
getPageTypeComposerFormLayoutSetControlDescription() {return $this->ptComposerFormLayoutSetControlDescription;}
    public function 
isPageTypeComposerFormLayoutSetControlRequired() {return $this->ptComposerFormLayoutSetControlRequired;}

    public function 
getPageTypeComposerFormLayoutSetControlCustomDisplayLabel($format 'html')
    {
        
$value tc('PageTypeComposerFormLayoutSetControlCustomLabel'$this->getPageTypeComposerFormLayoutSetControlCustomLabel());
        switch (
$format) {
            case 
'html':
                return 
h($value);
            case 
'text':
            default:
                return 
$value;
        }
    }
    public function 
getPageTypeComposerFormLayoutSetControlDisplayDescription($format 'html')
    {
        
$value tc('PageTypeComposerFormLayoutSetControlDescription'$this->getPageTypeComposerFormLayoutSetControlDescription());
        switch (
$format) {
            case 
'html':
                return 
h($value);
            case 
'text':
            default:
                return 
$value;
        }
    }
    public function 
setPageObject($page)
    {
        
$this->page $page;
    }

    public function 
setTargetParentPageID($ptTargetParentPageID)
    {
        
$this->ptTargetParentPageID $ptTargetParentPageID;
    }

    public function 
render()
    {
        
$control $this->getPageTypeComposerControlObject();
        
$control->setPageTypeComposerFormLayoutSetControlObject($this);
        
$control->setPageObject($this->page);
        
$control->setTargetParentPageID($this->ptTargetParentPageID);
        
$control->render($this->getPageTypeComposerControlDisplayLabel(), $this->getPageTypeComposerFormLayoutSetControlCustomTemplate(), $this->getPageTypeComposerFormLayoutSetControlDisplayDescription());
    }

    public function 
getPageTypeComposerControlLabel()
    {
        if (
$this->getPageTypeComposerFormLayoutSetControlCustomLabel()) {
            return 
$this->getPageTypeComposerFormLayoutSetControlCustomLabel();
        } else {
            
$control $this->getPageTypeComposerControlObject();

            return 
$control->getPageTypeComposerControlName();
        }
    }
    public function 
getPageTypeComposerControlDisplayLabel($format 'html')
    {
        
$result $this->getPageTypeComposerFormLayoutSetControlCustomDisplayLabel($format);
        if (!
$result) {
            
$control $this->getPageTypeComposerControlObject();
            
$result $control->getPageTypeComposerControlDisplayName($format);
        }

        return 
$result;
    }

    public function 
ensureOutputControlExists()
    {
        
$set $this->getPageTypeComposerFormLayoutSetObject();
        
$pt $set->getPageTypeObject();
        
$pagetemplates $pt->getPageTypePageTemplateObjects();
        foreach (
$pagetemplates as $pt) {
            
$outputcontrol PageTypeComposerOutputControl::getByPageTypeComposerFormLayoutSetControl($pt$this);
            if (!
is_object($outputcontrol)) {
                
PageTypeComposerOutputControl::add($this$pt);
            }
        }
    }

    public function 
export($fxml)
    {
        
$node $fxml->addChild('control');
        
$node->addAttribute('custom-template'$this->getPageTypeComposerFormLayoutSetControlCustomTemplate());
        if (
$this->isPageTypeComposerFormLayoutSetControlRequired()) {
            
$node->addAttribute('required'true);
        }
        
$node->addAttribute('custom-label'$this->getPageTypeComposerFormLayoutSetControlCustomLabel());
        
$node->addAttribute('description'$this->getPageTypeComposerFormLayoutSetControlDescription());
        
$db Loader::db();
        
$cnt $db->GetOne('select count(*) from PageTypeComposerOutputControls where ptComposerFormLayoutSetControlID = ?', array($this->ptComposerFormLayoutSetControlID));
        if (
$cnt 0) {
            
$ptComposerControlTemporaryID Loader::helper('validation/identifier')->getString(8);
            
ContentExporter::addPageTypeComposerOutputControlID($this$ptComposerControlTemporaryID);
            
$node->addAttribute('output-control-id'$ptComposerControlTemporaryID);
        }
        
$typeo $this->getPageTypeComposerControlTypeObject();
        
$node->addAttribute('type'$typeo->getPageTypeComposerControlTypeHandle());
        
$to $this->getPageTypeComposerControlObject();
        
$to->export($node);
    }

    public static function 
getList(PageTypeComposerFormLayoutSet $set)
    {
        
$db Loader::db();
        
$ptComposerFormLayoutSetControlIDs $db->GetCol('select ptComposerFormLayoutSetControlID from PageTypeComposerFormLayoutSetControls where ptComposerFormLayoutSetID = ? order by ptComposerFormLayoutSetControlDisplayOrder asc',
            array(
$set->getPageTypeComposerFormLayoutSetID())
        );
        
$list = array();
        foreach (
$ptComposerFormLayoutSetControlIDs as $ptComposerFormLayoutSetControlID) {
            
$control = static::getByID($ptComposerFormLayoutSetControlID);
            if (
is_object($control)) {
                
$list[] = $control;
            }
        }

        return 
$list;
    }

    public static function 
getByID($ptComposerFormLayoutSetControlID)
    {
        
$db Loader::db();
        
$r $db->GetRow('select * from PageTypeComposerFormLayoutSetControls where ptComposerFormLayoutSetControlID = ?', array($ptComposerFormLayoutSetControlID));
        if (
is_array($r) && $r['ptComposerFormLayoutSetControlID']) {
            
$control = new static();
            
$control->setPropertiesFromArray($r);
            
$control->ptComposerControlObject unserialize($r['ptComposerControlObject']);
            if(!
$control->ptComposerControlObject->objectExists()) {
                
$control->delete();
                return 
null;
            } else {
                
$control->ptComposerControlObject->setPageTypeComposerFormLayoutSetControlObject($control);
            }
            return 
$control;
        }
    }

    public function 
updateFormLayoutSetControlDisplayOrder($displayOrder)
    {
        
$db Loader::db();
        
$db->Execute('update PageTypeComposerFormLayoutSetControls set ptComposerFormLayoutSetControlDisplayOrder = ? where ptComposerFormLayoutSetControlID = ?', array(
            
$displayOrder$this->ptComposerFormLayoutSetControlID
        
));
        
$this->ptComposerFormLayoutSetControlDisplayOrder $displayOrder;
    }

    public function 
updateFormLayoutSetControlCustomLabel($label)
    {
        
$db Loader::db();
        
$db->Execute('update PageTypeComposerFormLayoutSetControls set ptComposerFormLayoutSetControlCustomLabel = ? where ptComposerFormLayoutSetControlID = ?', array(
            
$label$this->ptComposerFormLayoutSetControlID
        
));
        
$this->ptComposerFormLayoutSetControlCustomLabel $label;
    }

    public function 
updateFormLayoutSetControlRequired($required)
    {
        
$db Loader::db();
        
$db->Execute('update PageTypeComposerFormLayoutSetControls set ptComposerFormLayoutSetControlRequired = ? where ptComposerFormLayoutSetControlID = ?', array(
            
intval($required), $this->ptComposerFormLayoutSetControlID
        
));
        
$this->ptComposerFormLayoutSetControlRequired $required;
    }

    public function 
updateFormLayoutSetControlCustomTemplate($template)
    {
        
$db Loader::db();
        
$db->Execute('update PageTypeComposerFormLayoutSetControls set ptComposerFormLayoutSetControlCustomTemplate = ? where ptComposerFormLayoutSetControlID = ?', array(
            
$template$this->ptComposerFormLayoutSetControlID
        
));
        
$this->ptComposerFormLayoutSetControlCustomTemplate $template;
    }

    public function 
updateFormLayoutSetControlDescription($description)
    {
        
$db Loader::db();
        
$db->Execute('update PageTypeComposerFormLayoutSetControls set ptComposerFormLayoutSetControlDescription = ? where ptComposerFormLayoutSetControlID = ?', array(
            
$description$this->ptComposerFormLayoutSetControlID
        
));
        
$this->ptComposerFormLayoutSetControlDescription $description;
    }

    
/*
     * @return ConcreteCorePageTypeComposerOutputControl
     */
    
public function getPageTypeComposerOutputControlObject(PageTemplate $pt)
    {
        
$db Loader::db();
        
$ptComposerOutputControlID $db->GetOne('select ptComposerOutputControlID from PageTypeComposerOutputControls where ptComposerFormLayoutSetControlID = ? and pTemplateID = ?', array($this->ptComposerFormLayoutSetControlID$pt->getPageTemplateID()));
        if (
$ptComposerOutputControlID) {
            return 
PageTypeComposerOutputControl::getByID($ptComposerOutputControlID);
        }
    }

    public function 
delete()
    {
        
$db Loader::db();
        
$db->Execute('delete from PageTypeComposerFormLayoutSetControls where ptComposerFormLayoutSetControlID = ?', array($this->ptComposerFormLayoutSetControlID));
        
$db->Execute('delete from PageTypeComposerOutputControls where ptComposerFormLayoutSetControlID = ?', array($this->ptComposerFormLayoutSetControlID));
        
$set $this->getPageTypeComposerFormLayoutSetObject();
        
$set->rescanFormLayoutSetControlDisplayOrder();
    }

    public function 
duplicate(FormLayoutSet $set)
    {
        
$db Database::get();
        
$control $this->getPageTypeComposerControlObject();
        
$new $control->addToPageTypeComposerFormLayoutSet($set);
        
$new->updateFormLayoutSetControlRequired($this->isPageTypeComposerFormLayoutSetControlRequired());
        
$new->updateFormLayoutSetControlDescription($this->getPageTypeComposerFormLayoutSetControlDescription());
        
$new->updateFormLayoutSetControlCustomTemplate($this->getPageTypeComposerFormLayoutSetControlCustomTemplate());
        
$new->updateFormLayoutSetControlCustomLabel($this->getPageTypeComposerFormLayoutSetControlCustomLabel());
        return 
$new;
    }
}
Онлайн: 0
Реклама