<?php
/**
 * 
 */
class Loco_admin_ErrorController extends Loco_mvc_AdminController {
    
    
    public function renderError( Exception $e ){
        $this->set('error', Loco_error_Exception::convert($e) );
        return $this->render();
    }


    public function render(){
        $e = $this->get('error');
        if( $e ){
            /* @var Loco_error_Exception $e */
            $file = Loco_mvc_FileParams::create( new Loco_fs_File( $e->getRealFile() ) ); 
            $file['line'] = $e->getRealLine();
            $this->set('file', $file );
            if( loco_debugging() ){
                $trace = [];
                foreach( $e->getRealTrace() as $raw ) {
                    $frame  = new Loco_mvc_ViewParams($raw);
                    if( $frame->has('file') ){
                        $frame['file'] = Loco_mvc_FileParams::create( new Loco_fs_File($frame['file']) )->relpath;
                    }
                    $trace[] = $frame;
                }
                $this->set('trace',$trace);
            }
        }
        else {
            $e = new Loco_error_Exception('Unknown error');
            $this->set('error', $e );
        }
        return $this->view( $e->getTemplate() );
    }
    
}


