You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							78 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							78 lines
						
					
					
						
							1.9 KiB
						
					
					
				<?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
 | 
						|
        ));
 | 
						|
    }
 | 
						|
}
 |