Skip to content

Commit b219f89

Browse files
committed
Route init with app
1 parent 8a8e9f4 commit b219f89

File tree

1 file changed

+63
-31
lines changed

1 file changed

+63
-31
lines changed

system/core/frontcontroller.php

+63-31
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222

2323
namespace Vvveb\System\Core;
2424

25+
use function Vvveb\__;
2526
use Vvveb\System\Component\Component;
27+
use Vvveb\System\Event;
2628
use Vvveb\System\PageCache;
2729
use Vvveb\System\Routes;
2830
use Vvveb\System\Session;
@@ -103,7 +105,7 @@ static function notFound($service = false, $message = false, $statusCode = 404)
103105
PageCache::getInstance()->cleanUp();
104106
self :: redirect('Error' . $statusCode, 'index');
105107
106-
die();*/
108+
die(0);*/
107109

108110
if (include_once DIR_APP . DS . 'controller' . DS . "error$statusCode.php") {
109111
$controller = 'Vvveb\Controller\Error' . $statusCode;
@@ -119,7 +121,8 @@ static function notFound($service = false, $message = false, $statusCode = 404)
119121
}
120122

121123
//$view = View :: getInstance();
122-
$view = new View();
124+
$response = Response::getInstance();
125+
$view = new View();
123126
$view->setTheme();
124127

125128
if (is_string($message)) {
@@ -129,24 +132,37 @@ static function notFound($service = false, $message = false, $statusCode = 404)
129132
$view->set($message);
130133
$view->template(self :: $moduleName . '.html'); //default html
131134

132-
$controller = new $controller();
133-
$template = call_user_func([$controller, 'index']);
134-
unset($controller);
135+
$controller = new $controller();
136+
$controller->response = $response;
137+
$controller->view = $view;
138+
$template = call_user_func([$controller, 'index']);
139+
140+
if ($template === false) {
141+
$view->template(false);
142+
} else {
143+
if (is_array($template)) {
144+
return $response->output($template);
145+
//echo json_encode($template);
146+
} else {
147+
if ($template) {
148+
$view->template($template);
149+
}
150+
}
151+
}
135152
/*
136153
if ($service === true) {
137154
$component = Component :: getInstance();
138155
}
139156
*/
140157
//header(' ', true, $statusCode);
141-
$response = Response::getInstance();
158+
PageCache::getInstance()->cleanUp();
159+
142160
$view->setType($response->getType());
161+
$view->render();
143162

144163
//return $response->output();
145-
PageCache::getInstance()->cleanUp();
146-
$view->render($service, true, $service);
147-
148-
die();
149164
//self :: closeConnections();
165+
//$view->render($service, true, $service);
150166
}
151167

152168
static function closeConnections() {
@@ -178,28 +194,30 @@ static function call($controllerClass, $actionName, $file = false) {
178194
if ((! @include_once(DIR_APP . DS . 'controller' . DS . 'base.php')) ||
179195
(! file_exists($file) || ! @include_once($file))) {
180196
$message = [
181-
'message' => 'Controller file not found!',
197+
'message' => __('Controller file not found!'),
182198
'file' => $file,
183199
];
184200

185201
return self :: notFound(false, $message);
186202
}
187203

188204
// We check if the controller's class really exists
205+
$controller = false;
206+
189207
if (class_exists($controllerClass , false)) {// if the controller does not exist route to controller main
190208
$controller = new $controllerClass();
191209

192210
if (! $controller || ! method_exists($controller , $actionName) || $actionName == 'init') {
193211
$message = [
194-
'message' => 'Method does not exist!',
195-
'file' => "$controllerClass :: $actionName",
212+
'message' => __('Method does not exist!'),
213+
'file' => "$controllerClass :: $actionName",
196214
];
197215

198216
return self :: notFound(false, $message);
199217
}
200218
} else {
201219
$message = [
202-
'message' => 'Controller does not exist!',
220+
'message' => __('Controller does not exist!'),
203221
'file' => $controllerClass,
204222
];
205223

@@ -209,13 +227,26 @@ static function call($controllerClass, $actionName, $file = false) {
209227
self :: di($controller);
210228

211229
if (method_exists($controller, 'init')) {
212-
$controller->init();
230+
$return = $controller->init();
231+
232+
if ($return) {
233+
$actionName = $return;
234+
235+
if (! method_exists($controller , $actionName)) {
236+
$message = [
237+
'message' => __('Method does not exist!'),
238+
'file' => "$controllerClass :: $actionName",
239+
];
240+
241+
return self :: notFound(false, $message);
242+
}
243+
}
213244
}
214245

215-
//$controller->db = $db;
216-
$template = str_replace('/', DS, strtolower(self :: $moduleName));
217-
$theme = $controller->view->getTheme();
218-
$path = DIR_THEME . $theme . DS;
246+
$response = Response::getInstance();
247+
$template = str_replace('/', DS, strtolower(self :: $moduleName));
248+
$theme = $controller->view->getTheme();
249+
$path = DIR_THEME . $theme . DS;
219250
$pluginName = false;
220251

221252
if ($actionName && $actionName != 'index') {
@@ -234,28 +265,29 @@ static function call($controllerClass, $actionName, $file = false) {
234265
}
235266
}
236267

237-
$controller->view->template($template . '.html'); //default html
238-
$template = call_user_func([$controller, $actionName]);
268+
$controller->view->template($template . '.html'); //default html that can be overwritten
269+
270+
//list($template) = Event :: trigger($controllerClass, "$actionName:before", $template);
271+
272+
//$controller->view->template($template . '.html'); //default html
273+
$template = call_user_func([$controller, $actionName]);
274+
$responseType = $response->getType();
275+
$controller->view->setType($responseType);
239276

240277
if ($template === false) {
241278
$controller->view->template(false);
242279
} else {
243280
if (is_array($template)) {
244-
echo json_encode($template);
281+
$response->output($template);
282+
//echo json_encode($template);
245283
} else {
246284
if ($template) {
247-
$controller->view->template($template); //default html
285+
$controller->view->template($template);
248286
}
249287
}
250288
}
251289

252-
$controller->view = View :: getInstance();
253-
254-
//render template
255-
//return $controller->view->render();
256-
$response = Response::getInstance();
257-
258-
$controller->view->setType($response->getType());
290+
//list($responseType) = Event :: trigger($controllerClass, "$actionName:after", $response->getType('json'));
259291

260292
$return = $response->output();
261293
self :: closeConnections();
@@ -331,7 +363,7 @@ static public function dispatch() {
331363
}
332364
$uri = preg_replace('/\?.*$/', '', $uri);
333365

334-
if (! $module && (APP != 'admin' && APP != 'install' && (Routes::init() && $parameters = Routes::match($uri)))) {
366+
if (! $module && (APP != 'admin' && APP != 'install' && (Routes::init(APP) && $parameters = Routes::match($uri)))) {
335367
$_GET = array_merge($parameters, $_GET);
336368
} else {
337369
$module = $module ?? ((APP == 'app') ? 'error404' : 'index');

0 commit comments

Comments
 (0)