Example #1
0
 /**
  * Forwards current action to a new route.
  *
  * @param string $routename Name of route
  * @param array $params array of parameter for the route
  * @param int $statuscode HTTP status code
  * @param string $anchor string to append as hash anchor
  *
  * @return void
  */
 public function forward($routename, $params = array(), $statuscode = null, $anchor = null)
 {
     $url = Zigra_Router::generate($routename, $params);
     if ($url) {
         if (null !== $statuscode && array_key_exists($statuscode, self::$statusTexts)) {
             header('HTTP/1.1 ' . $statuscode . ' ' . self::$statusTexts[$statuscode], true);
         }
         if (null !== $anchor) {
             $url = $url . '#' . $anchor;
         }
         header('Location: ' . $url);
     } else {
         $this->forward404();
     }
     die;
 }
Example #2
0
 /**
  * Generate a short url for given arguments.
  *
  * @param Zigra_Request $request Request.
  * @param bool $resetProperties If reset or not all singleton proprieties.
  *
  * @return bool true when route is found or false if not found.
  */
 private static function process(Zigra_Request $request, $resetProperties = false)
 {
     $routes = self::$_compiledRouteCollection->routes;
     foreach ($routes as $route) {
         $request_parts = parse_url($request->getRequest());
         if (!isset($request_parts['path'])) {
             $request_parts['path'] = null;
         }
         preg_match($route[0]['regex'], $request_parts['path'], $matches);
         if (count($matches)) {
             //remove numeric index from array
             $matches_filter = array_filter(array_keys($matches), 'is_string');
             $matches = array_intersect_key($matches, array_flip($matches_filter));
             $args = array();
             foreach ($route[0]['variables'] as $variable) {
                 $args[$variable] = array_shift($matches);
             }
             self::$_controller = !isset(self::$_controller) || $resetProperties ? $route[0]['defaults']['controller'] : self::$_controller;
             self::$_action = !isset(self::$_action) || $resetProperties ? $route[0]['defaults']['action'] : self::$_action;
             self::$_args = !isset(self::$_args) || $resetProperties ? $args : self::$_args;
             self::$_defaults = !isset(self::$_defaults) || $resetProperties ? $route[0]['defaults'] : self::$_defaults;
             if (isset($request_parts['query'])) {
                 parse_str($request_parts['query'], $query_args);
                 self::$_args = array_merge(self::$_args, $query_args);
             }
             return true;
         }
     }
     self::$_controller = !isset(self::$_controller) || $resetProperties ? $request->getController() : self::$_controller;
     self::$_action = !isset(self::$_action) || $resetProperties ? $request->getAction() : self::$_action;
     self::$_args = !isset(self::$_args) || $resetProperties ? $request->getArgs() : self::$_args;
     self::$_defaults = array();
     return false;
 }
Example #3
0
 /**
  * Logout
  * @param string|null $routeName
  * @param array $routeParams
  * @throws Exception
  */
 public function logout($routeName = null, $routeParams = array())
 {
     // Clear the SESSION
     $_SESSION = array();
     // Destroy the SESSION
     session_unset();
     session_destroy();
     // Redirect
     if (null === $routeName) {
         $routeName = 'homepage';
     }
     $url = Zigra_Router::generate($routeName, $routeParams);
     header('Location: ' . $url);
 }