public static function &getInstance() { if (self::$_instance == null) { self::$_instance = new __RouteManager(); } return self::$_instance; }
public function getRouteToRedirectTo() { $return_value = null; $route_id_to_redirect_to = $this->_route_id_to_redirect_to; if (!empty($route_id_to_redirect_to)) { $route_manager = __RouteManager::getInstance(); if ($route_manager->hasRoute($route_id_to_redirect_to)) { $return_value = $route_manager->getRoute($route_id_to_redirect_to); } } return $return_value; }
protected function _calculateUriComponents() { $route = __RouteManager::getInstance()->getValidRouteForUrl($this->_relative_url); if ($route == null) { throw new Exception('Route not found matching url: ' . $this->_relative_url); } $this->setRouteId($route->getId()); $this->setFlowId($route->getFlowId()); $url_variable_values = array(); $variables_matched = array(); if (preg_match('/' . $route->getUrlRegularExpression() . '/', $this->_relative_url, $variables_matched)) { $variables_order = $route->getVariablesOrder(); $total_variables_matched = count($variables_matched); for ($i = 1; $i < $total_variables_matched; $i++) { $url_variable_values[$variables_order[$i - 1]] = $variables_matched[$i]; } //Now will instantiate a valid front controller for the current request: $front_controller_class = $route->getFrontControllerClass(); if ($front_controller_class != null) { if (key_exists($front_controller_class, $url_variable_values)) { $this->setFrontControllerClass($url_variable_values[$front_controller_class]); } else { $this->setFrontControllerClass($front_controller_class); } } $request_parameters = $route->getParameters($url_variable_values); $action_identity = $route->getActionIdentity(); if ($action_identity != null) { $request_action_code = __ContextManager::getInstance()->getApplicationContext()->getPropertyContent('REQUEST_ACTION_CODE'); if (!in_array($action_identity->getActionCode(), $variables_order)) { $this->setActionCode($action_identity->getActionCode()); $request_parameters[$request_action_code] = $action_identity->getActionCode(); } else { if (key_exists($action_identity->getActionCode(), $url_variable_values)) { $this->setActionCode($url_variable_values[$action_identity->getActionCode()]); $request_parameters[$request_action_code] = $url_variable_values[$action_identity->getActionCode()]; } } $request_controller_code = __ContextManager::getInstance()->getApplicationContext()->getPropertyContent('REQUEST_CONTROLLER_CODE'); if (!in_array($action_identity->getControllerCode(), $variables_order)) { $this->setControllerCode($action_identity->getControllerCode()); $request_parameters[$request_controller_code] = $action_identity->getControllerCode(); } else { if (key_exists($action_identity->getControllerCode(), $url_variable_values)) { $this->setControllerCode($url_variable_values[$action_identity->getControllerCode()]); $request_parameters[$request_controller_code] = $url_variable_values[$action_identity->getControllerCode()]; } } } $this->setParameters($request_parameters); } }