Example #1
0
 public static function set_target(target $target)
 {
     self::$configs = config::get_module('visitor', ['cookie_domain' => '', 'roles' => []]);
     self::$request['gets'] = array_merge(self::$request['gets'], $target->get_params());
     self::$request['target'] = $target;
 }
Example #2
0
 protected static function build_routed_left_url(target $target)
 {
     $target_params = $target->get_params();
     $target_name = $target->get_target_name();
     if ($target->has_module()) {
         $target_module = $target->get_module_name();
         $flipped_routes = self::$module_flipped_routes[$target_module];
     } else {
         $target_module = '';
         $flipped_routes = self::$base_flipped_routes;
     }
     if ($target_params === []) {
         if (isset($flipped_routes[$target_name])) {
             $result_pattern = $flipped_routes[$target_name];
             return $target_module === '' ? ltrim($result_pattern, '/') : substr($result_pattern, strpos($result_pattern, '-') + 1);
         }
     } else {
         $target_param_keys = $target->get_param_keys();
         foreach ($flipped_routes as $match_token => $result_pattern) {
             $match_target = new target($match_token);
             if ($match_target->get_target_name() === $target_name && $match_target->get_param_keys() === $target_param_keys) {
                 $args = [];
                 $match = true;
                 foreach ($match_target->get_params() as $key => $value) {
                     if ($value[0] === '$') {
                         $number = substr($value, 1);
                         $args[$number] = $target_params[$key];
                     } else {
                         if ($value !== $target_params[$key]) {
                             $match = false;
                             break;
                         }
                     }
                 }
                 if ($match) {
                     ksort($args);
                     if ($target->has_module()) {
                         $result_pattern = substr($result_pattern, strpos($result_pattern, '-') + 1);
                     }
                     $request_parts = explode('*', $result_pattern);
                     $result_uri = '';
                     for ($i = 0, $n = count($args); $i < $n; $i++) {
                         $result_uri .= $request_parts[$i] . urlencode($args[$i + 1]);
                     }
                     $result_uri .= $request_parts[$i];
                     return ltrim($result_uri, '/');
                 }
             }
         }
     }
     return null;
 }