| 
									
										
										
										
											2010-02-26 14:49:12 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @copyright NetMonsters <team@netmonsters.ru> | 
					
						
							|  |  |  |  * @link http://netmonsters.ru | 
					
						
							|  |  |  |  * @package Majestic | 
					
						
							|  |  |  |  * @subpackage app | 
					
						
							|  |  |  |  * @since 2010-02-25 | 
					
						
							|  |  |  |  * @version SVN: $Id$ | 
					
						
							|  |  |  |  * @filesource $URL$ | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Router | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     protected $routes = array(); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     protected $route_name; | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     protected $default_layout = 'Default'; | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @var Route | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $route; | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2010-03-25 11:03:08 +00:00
										 |  |  |     public function add($name, $route, $action, $params = array(), $layout = null) | 
					
						
							| 
									
										
										
										
											2010-02-26 14:49:12 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-03-07 19:54:09 +00:00
										 |  |  |         if (!$layout) { | 
					
						
							| 
									
										
										
										
											2010-02-26 14:49:12 +00:00
										 |  |  |             $layout = $this->default_layout; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $this->routes[$name] = new Route($route, $action, $params, $layout); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public function route($request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $req = explode('/', trim($request, '/')); | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         foreach ($this->routes as $name => $route) { | 
					
						
							|  |  |  |             if ($route->match($req)) { | 
					
						
							| 
									
										
										
										
											2010-03-07 19:54:09 +00:00
										 |  |  |                 $this->route_name = $name; | 
					
						
							| 
									
										
										
										
											2010-02-26 14:49:12 +00:00
										 |  |  |                 $this->route = $route; | 
					
						
							| 
									
										
										
										
											2010-03-07 19:54:09 +00:00
										 |  |  |                 Env::setParams($route->getParams()); | 
					
						
							| 
									
										
										
										
											2010-02-26 14:49:12 +00:00
										 |  |  |                 return $this->route; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public function setDefaultLayout($layout = 'Default') | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->default_layout = $layout; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public function getRouteName() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->route_name; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @return Route | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getRoute() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->route; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |