default['mod']="Application"; $this->default['action']="Index"; if(!defined('MFUSEFANCYURLS')) { define('MFUSEFANCYURLS',false); } if(defined("DEFAULT_ROUTE") && strlen(DEFAULT_ROUTE)) { $defroute = explode("_",DEFAULT_ROUTE); $this->default['mod'] = $defroute[0]; if(count($defroute) > 1 && $defroute[1]) { $this->default['action'] = $defroute[1]; } } // set parameters supplied in url $umod = ""; $uaction = ""; // get mod and action $m = []; if(array_key_exists("action", $request) && preg_match('/^([^_]+)(?:_(.+)?)?$/',$request['action'],$m)) { $umod = $m[1]; $this->mod = $m[1]; $this->action = "Index"; if(count($m) > 2 && $m[2]) { $uaction = $m[2]; $this->action = $m[2]; } } else { $this->mod = $this->default['mod']; $this->action = $this->default['action']; } // if login request, redirect to mfLoginController if(array_key_exists("mfLogin_action", $request) && $request['mfLogin_action'] == "mfLogin_Login") { $this->mod = "mfLogin"; $this->action = "Login"; $classname = "mfLoginController"; } else { // set classname of controller to load $classname = $this->mod."Controller"; } // get baseurl from fancy urls if used if(MFUSEFANCYURLS) { if(!$umod) { $baseurl = $_SERVER['REQUEST_URI']; } if($umod && !$uaction) { if(preg_match("#^(.+)/$umod/?\\??#i",$_SERVER['REQUEST_URI'],$m)) { $baseurl = $m[1]; } } if($umod && $uaction) { if(preg_match("#^(.+)/$umod/$uaction/?\\??#i",$_SERVER['REQUEST_URI'],$m)) { $baseurl = $m[1]; } } define("MFFANCYBASEURL",$baseurl); } // api call handling if(ucfirst($this->mod) == "Api") { //var_dump($request);exit; $apiversion = API_VERSION; $apicall = false; $apimod = ""; $apiaction = ""; if($request["apiv"]) { $apiversion = $request["apiv"]; } if(!defined("CURRENT_API_VERSION")) { define("CURRENT_API_VERSION", $apiversion); } if($request['apicall']) { $apicall = $request['apicall']; $m = []; if(preg_match('/^([^_]+)(?:_(.+)?)?$/',$apicall,$m)) { $apimod = $m[1]; $apiaction = "Call"; if(array_key_exists(2, $m) && $m[2]) { $apiaction = $m[2]; } } $this->mod = ucfirst($apimod); $this->action = $apiaction; // set classname to apropriate Api Controller $classname = $this->mod."Apicontroller"; } } else { // session only for non-api requests if(defined("MFSESSION") && MFSESSION === true) { session_name(MFAPPNAME."_session"); session_start(); } } $request['mod'] = ucfirst($this->mod); $request['action'] = ucfirst($this->action); $request['http_method'] = $_SERVER['REQUEST_METHOD']; define('MFROUTER_MOD',$this->mod); define('MFROUTER_ACTION',$this->action); // initiate layout instance $Layout = Layout::singleton(); $Layout->setTemplate($this->mod."/".$this->action); $Layout->set("Mod",$this->mod); $Layout->set("Action",$this->action); // load the appropriate Controller try { $page = new $classname($request); } catch(Exception $e) { require_once(LIBDIR."/mvcfronk/mfExceptionhandler/mfExceptionhandlerController.php"); $exhc = new mfExceptionhandlerController($e); } $Layout->display(); } }