Skip to content
Code-Schnipsel Gruppen Projekte
SideBox1.php 2,57 KiB
Newer Older
  • Learn to ignore specific revisions
  • Henning Leutz's avatar
    Henning Leutz committed
    <?php
    
    /**
     * This file contains QUI\Bricks\Controls\SideBox1
     */
    
    namespace QUI\Bricks\Controls;
    
    use QUI;
    
    /**
     * Class SocialBox
     *
     * @package quiqqer/bricks
     */
    class SideBox1 extends QUI\Control
    {
        /**
         * constructor
         *
         * @param array $attributes
         */
        public function __construct($attributes = array())
        {
            // default options
            $this->setAttributes(array(
                'showImage'       => true,
                'showTitle'       => true,
                'showDescription' => true,
                'showContent'     => true,
                'class'           => 'quiqqer-bricks-sidebox1',
                'nodeName'        => 'article',
                'site'            => false,
                'order'           => 'release_from DESC'
            ));
    
            parent::__construct($attributes);
        }
    
        /**
         * (non-PHPdoc)
         *
         * @see \QUI\Control::create()
         */
        public function getBody()
        {
            $Engine = QUI::getTemplateManager()->getEngine();
    
            $Engine->assign(array(
                'this' => $this,
                'Site' => $this->getSite()
            ));
    
            return $Engine->fetch(dirname(__FILE__) . '/SideBox1.html');
        }
    
        /**
         * Return the site object
         *
         * @return QUI\Projects\Site
         */
        protected function getSite()
        {
            $Project = $this->_getProject();
            $site    = $this->getAttribute('site');
    
            if (is_numeric($site)) {
                try {
                    return $Project->get((int)$site);
    
                } catch (QUI\Exception $Exception) {
                    QUI\System\Log::addWarning($Exception->getMessage());
    
                    return $Project->firstChild();
                }
            }
    
    
            // order
            switch ($this->getAttribute('order')) {
                case 'name ASC':
                case 'name DESC':
                case 'title ASC':
                case 'title DESC':
                case 'c_date ASC':
                case 'c_date DESC':
                case 'd_date ASC':
                case 'd_date DESC':
                case 'release_from ASC':
                case 'release_from DESC':
                    $order = $this->getAttribute('order');
                    break;
    
                default:
                    $order = 'release_from DESC';
                    break;
            }
    
            $children = QUI\Projects\Site\Utils::getSitesByInputList(
                $this->getProject(),
                $this->getAttribute('site'),
                array(
                    'limit' => 1,
                    'order' => $order
                )
            );
    
            if (isset($children[0])) {
                return $children[0];
            }
    
            return $Project->firstChild();
        }
    }