22
22
23
23
namespace Vvveb \System \Core ;
24
24
25
+ use function Vvveb \__ ;
25
26
use Vvveb \System \Component \Component ;
27
+ use Vvveb \System \Event ;
26
28
use Vvveb \System \PageCache ;
27
29
use Vvveb \System \Routes ;
28
30
use Vvveb \System \Session ;
@@ -103,7 +105,7 @@ static function notFound($service = false, $message = false, $statusCode = 404)
103
105
PageCache::getInstance()->cleanUp();
104
106
self :: redirect('Error' . $statusCode, 'index');
105
107
106
- die();*/
108
+ die(0 );*/
107
109
108
110
if (include_once DIR_APP . DS . 'controller ' . DS . "error $ statusCode.php " ) {
109
111
$ controller = 'Vvveb\Controller\Error ' . $ statusCode ;
@@ -119,7 +121,8 @@ static function notFound($service = false, $message = false, $statusCode = 404)
119
121
}
120
122
121
123
//$view = View :: getInstance();
122
- $ view = new View ();
124
+ $ response = Response::getInstance ();
125
+ $ view = new View ();
123
126
$ view ->setTheme ();
124
127
125
128
if (is_string ($ message )) {
@@ -129,24 +132,37 @@ static function notFound($service = false, $message = false, $statusCode = 404)
129
132
$ view ->set ($ message );
130
133
$ view ->template (self :: $ moduleName . '.html ' ); //default html
131
134
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
+ }
135
152
/*
136
153
if ($service === true) {
137
154
$component = Component :: getInstance();
138
155
}
139
156
*/
140
157
//header(' ', true, $statusCode);
141
- $ response = Response::getInstance ();
158
+ PageCache::getInstance ()->cleanUp ();
159
+
142
160
$ view ->setType ($ response ->getType ());
161
+ $ view ->render ();
143
162
144
163
//return $response->output();
145
- PageCache::getInstance ()->cleanUp ();
146
- $ view ->render ($ service , true , $ service );
147
-
148
- die ();
149
164
//self :: closeConnections();
165
+ //$view->render($service, true, $service);
150
166
}
151
167
152
168
static function closeConnections () {
@@ -178,28 +194,30 @@ static function call($controllerClass, $actionName, $file = false) {
178
194
if ((! @include_once (DIR_APP . DS . 'controller ' . DS . 'base.php ' )) ||
179
195
(! file_exists ($ file ) || ! @include_once ($ file ))) {
180
196
$ message = [
181
- 'message ' => 'Controller file not found! ' ,
197
+ 'message ' => __ ( 'Controller file not found! ' ) ,
182
198
'file ' => $ file ,
183
199
];
184
200
185
201
return self :: notFound (false , $ message );
186
202
}
187
203
188
204
// We check if the controller's class really exists
205
+ $ controller = false ;
206
+
189
207
if (class_exists ($ controllerClass , false )) {// if the controller does not exist route to controller main
190
208
$ controller = new $ controllerClass ();
191
209
192
210
if (! $ controller || ! method_exists ($ controller , $ actionName ) || $ actionName == 'init ' ) {
193
211
$ message = [
194
- 'message ' => 'Method does not exist! ' ,
195
- 'file ' => "$ controllerClass :: $ actionName " ,
212
+ 'message ' => __ ( 'Method does not exist! ' ) ,
213
+ 'file ' => "$ controllerClass :: $ actionName " ,
196
214
];
197
215
198
216
return self :: notFound (false , $ message );
199
217
}
200
218
} else {
201
219
$ message = [
202
- 'message ' => 'Controller does not exist! ' ,
220
+ 'message ' => __ ( 'Controller does not exist! ' ) ,
203
221
'file ' => $ controllerClass ,
204
222
];
205
223
@@ -209,13 +227,26 @@ static function call($controllerClass, $actionName, $file = false) {
209
227
self :: di ($ controller );
210
228
211
229
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
+ }
213
244
}
214
245
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 ;
219
250
$ pluginName = false ;
220
251
221
252
if ($ actionName && $ actionName != 'index ' ) {
@@ -234,28 +265,29 @@ static function call($controllerClass, $actionName, $file = false) {
234
265
}
235
266
}
236
267
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 );
239
276
240
277
if ($ template === false ) {
241
278
$ controller ->view ->template (false );
242
279
} else {
243
280
if (is_array ($ template )) {
244
- echo json_encode ($ template );
281
+ $ response ->output ($ template );
282
+ //echo json_encode($template);
245
283
} else {
246
284
if ($ template ) {
247
- $ controller ->view ->template ($ template ); //default html
285
+ $ controller ->view ->template ($ template );
248
286
}
249
287
}
250
288
}
251
289
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'));
259
291
260
292
$ return = $ response ->output ();
261
293
self :: closeConnections ();
@@ -331,7 +363,7 @@ static public function dispatch() {
331
363
}
332
364
$ uri = preg_replace ('/\?.*$/ ' , '' , $ uri );
333
365
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 )))) {
335
367
$ _GET = array_merge ($ parameters , $ _GET );
336
368
} else {
337
369
$ module = $ module ?? ((APP == 'app ' ) ? 'error404 ' : 'index ' );
0 commit comments