[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/web_app/src/filter/ -> lmbRequestDispatchingFilter.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  lmb_require('limb/web_app/src/request/lmbRequestDispatcher.interface.php');
  10  lmb_require('limb/filter_chain/src/lmbInterceptingFilter.interface.php');
  11  
  12  /**

  13   * class lmbRequestDispatchingFilter.

  14   *

  15   * @package web_app

  16   * @version $Id: lmbRequestDispatchingFilter.class.php 5945 2007-06-06 08:31:43Z pachanga $

  17   */
  18  class lmbRequestDispatchingFilter implements lmbInterceptingFilter
  19  {
  20    protected $dispatcher;
  21    protected $default_controller_name;
  22  
  23    function __construct($dispatcher, $default_controller_name = 'not_found')
  24    {
  25      $this->dispatcher = $dispatcher;
  26      $this->setDefaultControllerName($default_controller_name);
  27    }
  28  
  29    function setDefaultControllerName($default_controller_name)
  30    {
  31      $this->default_controller_name = $default_controller_name;
  32    }
  33  
  34    function run($filter_chain)
  35    {
  36      $toolkit = lmbToolkit :: instance();
  37  
  38      $dispatched_params = $this->dispatcher->dispatch($toolkit->getRequest());
  39  
  40      $controller = $this->_createController($dispatched_params);
  41  
  42      if(isset($dispatched_params['action']) && $controller->actionExists($dispatched_params['action']))
  43        $controller->setCurrentAction($dispatched_params['action']);
  44      elseif(!isset($dispatched_params['action']))
  45        $controller->setCurrentAction($controller->getDefaultAction());
  46      else
  47        $controller = $this->_createDefaultController();
  48  
  49      $toolkit->setDispatchedController($controller);
  50  
  51      $this->_putOtherParamsToRequest($dispatched_params);
  52  
  53      $filter_chain->next();
  54    }
  55  
  56    protected function _createController($dispatched_params)
  57    {
  58      if(!isset($dispatched_params['controller']))
  59        $dispatched_params['controller'] = $this->default_controller_name;
  60  
  61      try
  62      {
  63        $controller = lmbToolkit :: instance()->createController($dispatched_params['controller']);
  64      }
  65      catch(lmbException $e)
  66      {
  67        $controller = lmbToolkit :: instance()->createController($this->default_controller_name);
  68      }
  69  
  70      return $controller;
  71    }
  72  
  73    protected function _createDefaultController()
  74    {
  75      $controller = lmbToolkit :: instance()->createController($this->default_controller_name);
  76      $controller->setCurrentAction($controller->getDefaultAction());
  77      return $controller;
  78    }
  79  
  80    protected function _putOtherParamsToRequest($dispatched_params)
  81    {
  82      lmbToolkit :: instance()->getRequest()->merge($dispatched_params);
  83    }
  84  }
  85  
  86  ?>


Generated: Mon Dec 1 03:56:46 2008 Cross-referenced by PHPXref 0.7