26 foreach($this->controllerNamespaces as $namespace => $prefix)
27 if(($class_name == $namespace) || \
Rsi\Str::startsWith($class_name,$namespace))
28 return $prefix . str_replace(
'\\',
'/',substr($class_name,strlen($namespace)));
37 foreach($this->controllerNamespaces as $namespace => $prefix)
if(
38 (!$prefix || ($name == $prefix) || \
Rsi\Str::startsWith($name,$prefix .
'/')) &&
39 class_exists($class_name = $namespace . str_replace(
'/',
'\\',$prefix ? substr($name,strlen($prefix)) :
'\\' . $name)) &&
40 is_subclass_of($class_name,__NAMESPACE__ .
'\\Controller')
52 return new $class_name($this->_fred,array_replace_recursive(
53 $this->_fred->config(
'controller',[]),
54 $this->_fred->config(array_merge([
'controllers'],array_map(
'lcfirst',explode(
'/',$name))),[])
65 return $user->authenticated($controller->authSets) && $user->authorized($controller->actionRight());
76 $log->debug(__CLASS__ .
"::controller('$name')",__FILE__,__LINE__);
80 !($class_name = $this->
controllerClassName($name = $name ? $this->unknownControllerName : $this->defaultControllerName))
81 )
throw new \DomainException(
"Controller for '$name' does not exists");
83 if(!$user->authenticated($controller->authSets) || !$user->authorized($controller->right))
84 $controller = $redir ? $this->
controller($user->authenticationControllerName ?: $this->deniedControllerName) :
false;
93 extract($this->
components(
'alive',
'event',
'log',
'message',
'request',
'router'));
94 $timer = $log->start(
Log::DEBUG,__CLASS__ .
'::execute: router',__FILE__,__LINE__);
95 $controller = $this->
controller($router->controllerName);
96 $request->viewControllerName = $name = $controller->name;
97 $log->stop($timer,
null,
null,__FILE__,__LINE__);
98 $alive->journal($name .
'::' . $controller->action);
99 $timer = $log->start(
Log::DEBUG,__CLASS__ .
'::execute: $controller->execute()',__FILE__,__LINE__, [
'controller' => $name]);
100 $controller->execute();
101 $log->stop($timer,
null,
null,__FILE__,__LINE__);
102 if($request->viewControllerName != $name) $controller = $this->
controller($name = $request->viewControllerName);
103 else $controller->reset();
104 foreach($request->errors as $id => $error) $message->error($error,
false);
105 $timer = $log->start(
Log::DEBUG,__CLASS__ .
'::execute: $controller->view->render()',__FILE__,__LINE__, [
'controller' => $name]);
106 $event->trigger(self::EVENT_RENDER,$this,$controller);
107 $controller->view->render();
108 $log->stop($timer,
null,
null,__FILE__,__LINE__);