Example #1
0
 public function get_from()
 {
     //check if parameters of the from have a regex pattern to put in their place
     //if not, they will be a (:any)
     if (is_null($this->from)) {
         $pattern_list = array();
         $substitution_list = array();
         $named_route_substitution_list = array();
         $pattern_num = 1;
         foreach ($this->parameters as $parameter => $data) {
             $value = $data['value'];
             //if there is a question mark in the parameter
             //we will add a scape \ for the regex
             $pattern_list[] = '/\\{' . $parameter . '\\}/';
             //if parameter is null will check if there is a global parameter, if not,
             //we will put an (:any)
             if (is_null($value)) {
                 $pattern_value = Route::get_pattern($parameter);
                 if (!is_null($pattern_value)) {
                     if ($pattern_value[0] != '(' && $pattern_value[strlen($pattern_value) - 1] != ')') {
                         $pattern_value = '(' . $pattern_value . ')';
                     }
                     $substitution_list[] = $pattern_value;
                 } else {
                     $substitution_list[] = '(:any)';
                 }
             } else {
                 if ($value[0] != '(' && $value[strlen($value) - 1] != ')') {
                     $value = '(' . $value . ')';
                 }
                 $substitution_list[] = $value;
             }
             $named_route_substitution_list[] = '\\$' . $pattern_num;
             $pattern_num += 1;
         }
         // check for named subdomains
         if (array_key_exists('subdomain', $this->options)) {
             $i = preg_match('/^\\{(.+)\\}$/', $this->options['subdomain']);
             if ($i > 0) {
                 preg_match('/^\\{(.+)\\}$/', $this->options['subdomain'], $check);
                 $subdomain = $check[1];
                 if (!array_key_exists($subdomain, $this->parameters)) {
                     $pattern_value = Route::get_pattern($subdomain);
                     if (!is_null($pattern_value)) {
                         $this->options['subdomain'] = $pattern_value;
                     } else {
                         $this->options['subdomain'] = '(:any)';
                     }
                 } else {
                     $value = $this->parameters[$subdomain]['value'];
                     $this->options['subdomain'] = $value;
                 }
             } else {
                 $this->options['checked_subdomain'] = $this->options['subdomain'];
                 unset($this->options['subdomain']);
             }
         }
         // make substitutions to make codeigniter comprensible routes
         $this->from = preg_replace($pattern_list, $substitution_list, $this->pre_from);
         // make substitutions in case there is a named route
         // Are we saving the name for this one?
         if (isset($this->options['as']) && !empty($this->options['as'])) {
             $named_route = preg_replace($pattern_list, $named_route_substitution_list, $this->pre_from);
             Route::set_name($this->options['as'], $named_route);
         }
     }
     return $this->from;
 }
Example #2
0
 public static function set($name, $uri_callback = NULL, $regex = NULL)
 {
     $route = new Route($uri_callback, $regex);
     $route->set_name($name);
     return Route::$_routes[$name] = $route;
 }