Skip to content
Code-Schnipsel Gruppen Projekte
SideBox1.php 2,57 KiB
Newer Older
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()
    {
Henning Leutz's avatar
Henning Leutz committed
        $Project = $this->getProject();
Henning Leutz's avatar
Henning Leutz committed
        $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();
    }
}