Вход Регистрация
Файл: contao-3.5.8/system/modules/core/elements/ContentElement.php
Строк: 236
<?php

/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */

namespace Contao;


/**
 * Parent class for content elements.
 *
 * @property integer $id
 * @property integer $pid
 * @property string  $ptable
 * @property integer $sorting
 * @property integer $tstamp
 * @property string  $type
 * @property string  $headline
 * @property string  $text
 * @property boolean $addImage
 * @property string  $singleSRC
 * @property string  $alt
 * @property string  $title
 * @property string  $size
 * @property string  $imagemargin
 * @property string  $imageUrl
 * @property boolean $fullsize
 * @property string  $caption
 * @property string  $floating
 * @property string  $html
 * @property string  $listtype
 * @property string  $listitems
 * @property string  $tableitems
 * @property string  $summary
 * @property boolean $thead
 * @property boolean $tfoot
 * @property boolean $tleft
 * @property boolean $sortable
 * @property integer $sortIndex
 * @property string  $sortOrder
 * @property string  $mooHeadline
 * @property string  $mooStyle
 * @property string  $mooClasses
 * @property string  $highlight
 * @property string  $shClass
 * @property string  $code
 * @property string  $url
 * @property boolean $target
 * @property string  $titleText
 * @property string  $linkTitle
 * @property string  $embed
 * @property string  $rel
 * @property boolean $useImage
 * @property string  $multiSRC
 * @property string  $orderSRC
 * @property boolean $useHomeDir
 * @property integer $perRow
 * @property integer $perPage
 * @property integer $numberOfItems
 * @property string  $sortBy
 * @property boolean $metaIgnore
 * @property string  $galleryTpl
 * @property string  $customTpl
 * @property string  $playerSRC
 * @property string  $youtube
 * @property string  $posterSRC
 * @property string  $playerSize
 * @property boolean $autoplay
 * @property integer $sliderDelay
 * @property integer $sliderSpeed
 * @property integer $sliderStartSlide
 * @property boolean $sliderContinuous
 * @property integer $cteAlias
 * @property integer $articleAlias
 * @property integer $article
 * @property integer $form
 * @property integer $module
 * @property boolean $protected
 * @property string  $groups
 * @property boolean $guests
 * @property string  $cssID
 * @property string  $space
 * @property boolean $invisible
 * @property string  $start
 * @property string  $stop
 * @property string  $com_order
 * @property integer $com_perPage
 * @property boolean $com_moderate
 * @property boolean $com_bbcode
 * @property boolean $com_disableCaptcha
 * @property boolean $com_requireLogin
 * @property string  $com_template
 * @property string  $classes
 * @property string  $typePrefix
 * @property integer $origId
 * @property string  $origSpace
 * @property string  $origCssID
 * @property string  $hl
 *
 * @author Leo Feyer <https://github.com/leofeyer>
 */
abstract class ContentElement extends Frontend
{

    
/**
     * Template
     * @var string
     */
    
protected $strTemplate;

    
/**
     * Column
     * @var string
     */
    
protected $strColumn;

    
/**
     * Model
     * @var ContentElement
     */
    
protected $objModel;

    
/**
     * Current record
     * @var array
     */
    
protected $arrData = array();

    
/**
     * Processed folders
     * @var array
     */
    
protected $arrProcessed = array();

    
/**
     * Style array
     * @var array
     */
    
protected $arrStyle = array();


    
/**
     * Initialize the object
     *
     * @param ContentModel $objElement
     * @param string        $strColumn
     */
    
public function __construct($objElement$strColumn='main')
    {
        if (
$objElement instanceof Model)
        {
            
$this->objModel $objElement;
        }
        elseif (
$objElement instanceof ModelCollection)
        {
            
$this->objModel $objElement->current();
        }

        
parent::__construct();

        
$this->arrData $objElement->row();
        
$this->space deserialize($objElement->space);
        
$this->cssID deserialize($objElement->cssIDtrue);

        if (
$this->customTpl != '' && TL_MODE == 'FE')
        {
            
$this->strTemplate $this->customTpl;
        }

        
$arrHeadline deserialize($objElement->headline);
        
$this->headline is_array($arrHeadline) ? $arrHeadline['value'] : $arrHeadline;
        
$this->hl is_array($arrHeadline) ? $arrHeadline['unit'] : 'h1';
        
$this->strColumn $strColumn;
    }


    
/**
     * Set an object property
     *
     * @param string $strKey
     * @param mixed  $varValue
     */
    
public function __set($strKey$varValue)
    {
        
$this->arrData[$strKey] = $varValue;
    }


    
/**
     * Return an object property
     *
     * @param string $strKey
     *
     * @return mixed
     */
    
public function __get($strKey)
    {
        if (isset(
$this->arrData[$strKey]))
        {
            return 
$this->arrData[$strKey];
        }

        return 
parent::__get($strKey);
    }


    
/**
     * Check whether a property is set
     *
     * @param string $strKey
     *
     * @return boolean
     */
    
public function __isset($strKey)
    {
        return isset(
$this->arrData[$strKey]);
    }


    
/**
     * Return the model
     *
     * @return Model
     */
    
public function getModel()
    {
        return 
$this->objModel;
    }


    
/**
     * Parse the template
     *
     * @return string
     */
    
public function generate()
    {
        if (
TL_MODE == 'FE' && !BE_USER_LOGGED_IN && ($this->invisible || ($this->start != '' && $this->start time()) || ($this->stop != '' && $this->stop time())))
        {
            return 
'';
        }

        if (
$this->arrData['space'][0] != '')
        {
            
$this->arrStyle[] = 'margin-top:'.$this->arrData['space'][0].'px;';
        }

        if (
$this->arrData['space'][1] != '')
        {
            
$this->arrStyle[] = 'margin-bottom:'.$this->arrData['space'][1].'px;';
        }

        
$this->Template = new FrontendTemplate($this->strTemplate);
        
$this->Template->setData($this->arrData);

        
$this->compile();

        
// Do not change this order (see #6191)
        
$this->Template->style = !empty($this->arrStyle) ? implode(' '$this->arrStyle) : '';
        
$this->Template->class trim('ce_' $this->type ' ' $this->cssID[1]);
        
$this->Template->cssID = ($this->cssID[0] != '') ? ' id="' $this->cssID[0] . '"' '';

        
$this->Template->inColumn $this->strColumn;

        if (
$this->Template->headline == '')
        {
            
$this->Template->headline $this->headline;
        }

        if (
$this->Template->hl == '')
        {
            
$this->Template->hl $this->hl;
        }

        if (!empty(
$this->objModel->classes) && is_array($this->objModel->classes))
        {
            
$this->Template->class .= ' ' implode(' '$this->objModel->classes);
        }

        return 
$this->Template->parse();
    }


    
/**
     * Compile the content element
     */
    
abstract protected function compile();


    
/**
     * Find a content element in the TL_CTE array and return the class name
     *
     * @param string $strName The content element name
     *
     * @return string The class name
     */
    
public static function findClass($strName)
    {
        foreach (
$GLOBALS['TL_CTE'] as $v)
        {
            foreach (
$v as $kk=>$vv)
            {
                if (
$kk == $strName)
                {
                    return 
$vv;
                }
            }
        }

        return 
'';
    }
}
Онлайн: 1
Реклама