Ejemplo n.º 1
0
 static function _route()
 {
     // search alias
     // save for debug message
     $request_uri = $_SERVER['REQUEST_URI'];
     // clean request uri
     $request_uri = preg_replace('/\\/.*\\?/', '/', $request_uri);
     $request_uri = str_replace(array('&', '='), '/', $request_uri);
     $request_uri = preg_replace('/^\\/|ctrl\\/|action\\/|\\/$/', '', $request_uri);
     if ($request_uri !== '') {
         // serach aliases
         foreach (system::_cfg('route_alias', array()) as $k => $v) {
             // string
             if (is_string($v)) {
                 if ($request_uri == $k) {
                     $request_uri = $v;
                     break;
                 }
             } else {
                 $k = str_replace('/', '\\/', $k);
                 $k = str_replace('.', '\\.', $k);
                 foreach ($v as $rule => $vars) {
                     foreach ($vars as $key => $value) {
                         $k = str_replace('$' . ($key + 1), '(' . $value . ')', $k);
                     }
                     if (preg_match('/^' . $k . '$/', $request_uri)) {
                         $request_uri = preg_replace('/' . $k . '/', $rule, $request_uri);
                         break;
                     }
                 }
             }
         }
     }
     $_GET = array();
     $_arr = explode('/', $request_uri);
     $_GET['ctrl'] = v::toWord(v::getFrom($_arr, 0, DEFAULT_CTRL));
     $_GET['action'] = v::toWord(v::getFrom($_arr, 1, DEFAULT_ACTION));
     array_shift($_arr);
     array_shift($_arr);
     for ($i = 0; $i < count($_arr); $i += 2) {
         $_GET[$_arr[$i]] = v::toWord(v::getFrom($_arr, $i + 1, ''));
     }
     //print_r($_GET);
     //die();
 }