<?php
							 | 
						|
								
							 | 
						|
								namespace App\Controllers;
							 | 
						|
								
							 | 
						|
								use App\Flight\FlightAbstract;
							 | 
						|
								use Exception;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 *  abstract controller to handle views and response from directus
							 | 
						|
								 *
							 | 
						|
								 *
							 | 
						|
								 *  @author Björn Hase, Tentakelfabrik
							 | 
						|
								 *  @license http://opensource.org/licenses/MIT The MIT License
							 | 
						|
								 *  @link https://gitea.tentakelfabrik.de/Tentakelfabrik/super-gear-directus
							 | 
						|
								 *
							 | 
						|
								 */
							 | 
						|
								abstract class DirectusControllerAbstract extends FlightAbstract
							 | 
						|
								{
							 | 
						|
								    /** default template for view */
							 | 
						|
								    protected $defaultView = NULL;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *  if item not found
							 | 
						|
								     *
							 | 
						|
								     *  @param  string $page
							 | 
						|
								     *  @return boolean
							 | 
						|
								     */
							 | 
						|
								    protected function notFound($item)
							 | 
						|
								    {
							 | 
						|
								        return (!$item || ($item && isset($item['error']) && $item['error']['code'] === 203));
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *
							 | 
						|
								     *  @param  string $view
							 | 
						|
								     *  @return boolean
							 | 
						|
								     */
							 | 
						|
								    protected function viewExists($view)
							 | 
						|
								    {
							 | 
						|
								        $result = false;
							 | 
						|
								
							 | 
						|
								        if (file_exists($this->app->get('flight.views.path').'/'.$view.'.blade.php')) {
							 | 
						|
								            $result = true;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $result;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *
							 | 
						|
								     *  @param  [type] $page [description]
							 | 
						|
								     *  @param  array  $data [description]
							 | 
						|
								     *  @return [type]       [description]
							 | 
						|
								     */
							 | 
						|
								    protected function render($page, $data = [])
							 | 
						|
								    {
							 | 
						|
								        $view = $this->defaultView;
							 | 
						|
								
							 | 
						|
								        // if view isset in page and file exists
							 | 
						|
								        if (isset($page['data']['view'])) {
							 | 
						|
								            if ($this->viewExists($page['data']['view'])) {
							 | 
						|
								                $view = $page['data']['view'];
							 | 
						|
								            } else {
							 | 
						|
								                throw new Exception('View '.$page['data']['view'].' not exists');
							 | 
						|
								            }
							 | 
						|
								        } else if (!$this->viewExists($view)) {
							 | 
						|
								            throw new Exception('View '.$view.' not exists');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $this->app->render($view, array_merge([
							 | 
						|
								                'page' => $page,
							 | 
						|
								                'flight' => $this->app
							 | 
						|
								            ],
							 | 
						|
								            $data
							 | 
						|
								        ));
							 | 
						|
								    }
							 | 
						|
								}
							 |