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; }
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; }