Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Nodes/src/Controller/Component/NodesComponent.php
<?php

namespace Croogo\Nodes\Controller\Component;

use
Cake\Controller\Component;
use
Cake\Event\Event;
use
Cake\ORM\TableRegistry;
use
Cake\Utility\Hash;

/**
 * Nodes Component
 *
 * @category Component
 * @package  Croogo.Nodes.Controller.Component
 * @version  1.0
 * @author   Fahad Ibnay Heylaal <contact@fahad19.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class NodesComponent extends Component
{

   
/**
     * Nodes for layout
     *
     * @var string
     * @access public
     */
   
public $nodesForLayout = [];

   
/**
     * beforeFilter
     *
     * @param Event $event instance of controller
     */
   
public function beforeFilter(Event $event)
    {
       
$this->controller = $event->getSubject();
        if (isset(
$this->controller->Nodes)) {
           
$this->Nodes = $this->controller->Nodes;
        } else {
           
$this->Nodes = TableRegistry::get('Croogo/Nodes.Nodes');
        }
    }

   
/**
     * Startup
     *
     * @param Controller $event instance of controller
     * @return void
     */
   
public function startup(Event $event)
    {
       
$controller = $event->getSubject();
        if ((
$controller->request->getParam('prefix') !== 'admin') && !$controller->request->getParam('requested')) {
           
$this->nodes();
        }
    }

   
/**
     * Nodes
     *
     * Nodes will be available in this variable in views: $nodesForLayout
     *
     * @return void
     */
   
public function nodes()
    {
       
$roleId = $this->controller->Croogo->roleId();

       
$nodes = $this->controller->BlocksHook->blocksData['nodes'];
       
$_nodeOptions = [
           
'find' => 'all',
           
'findOptions' => [],
           
'conditions' => [],
           
'order' => 'Nodes.publish_start DESC',
           
'limit' => 5,
        ];

        foreach (
$nodes as $alias => $options) {
           
$options = Hash::merge($_nodeOptions, $options);
           
$options['limit'] = str_replace('"', '', $options['limit']);
           
$node = $this->Nodes->find($options['find'], $options['findOptions'])
                ->
where($options['conditions'])
                ->
order($options['order'])
                ->
limit($options['limit'])
                ->
applyOptions([
                   
'prefix' => 'nodes_' . $alias,
                   
'config' => 'croogo_nodes',
                ])->
find('byAccess', [
                   
'roleId' => $roleId
               
])->find('published');

           
$this->nodesForLayout[$alias] = $node;
        }
    }

   
/**
     * beforeRender
     *
     * @param object $event instance of controller
     * @return void
     */
   
public function beforeRender(Event $event)
    {
       
$event->getSubject()->set('nodesForLayout', $this->nodesForLayout);
    }
}