From 23f478df6af0bc5b72844db33c2ea26f40ca05ce Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Mon, 8 Jan 2007 20:51:15 +0000 Subject: [PATCH] Updates to the action plugin system for better integration with ZF 0.6.0 --- library/Nmc/Controller/Action.php | 19 ++++--------------- .../Controller/Action/Plugin/Authorize.php | 15 +++++++++++---- .../Nmc/Controller/Action/Plugin/Broker.php | 10 ++++++---- .../Controller/Action/Plugin/Interface.php | 6 ++++-- library/Nmc/Controller/Action/Plugin/Test.php | 6 ++++-- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/library/Nmc/Controller/Action.php b/library/Nmc/Controller/Action.php index 62533a5..10d4f7d 100644 --- a/library/Nmc/Controller/Action.php +++ b/library/Nmc/Controller/Action.php @@ -32,17 +32,6 @@ abstract class Nmc_Controller_Action extends Zend_Controller_Action { */ protected $_pluginBroker; - public function run(Zend_Controller_Dispatcher_Interface $dispatcher, - Zend_Controller_Dispatcher_Token $action) - { - $this->_action = $action; - $this->_params = $action->getParams(); - $this->_preAction(); - $returnValue = parent::run($dispatcher, $action); - $this->_postAction(); - return $returnValue; - } - protected function _registerPlugin(Nmc_Controller_Action_Plugin_Interface $plugin) { if(! $this->_pluginBroker instanceof Nmc_Controller_Action_Plugin_Broker) { @@ -58,17 +47,17 @@ abstract class Nmc_Controller_Action extends Zend_Controller_Action { } } - protected function _preAction() + public function preDispatch() { if($this->_pluginBroker instanceof Nmc_Controller_Action_Plugin_Broker) { - $this->_pluginBroker->preAction($this, $this->_action); + $this->_pluginBroker->preAction($this, $this->getRequest(), $this->getResponse()); } } - protected function _postAction() + public function postDispatch() { if($this->_pluginBroker instanceof Nmc_Controller_Action_Plugin_Broker) { - $this->_pluginBroker->postAction($this, $this->_action); + $this->_pluginBroker->postAction($this, $this->getRequest(), $this->getResponse()); } } diff --git a/library/Nmc/Controller/Action/Plugin/Authorize.php b/library/Nmc/Controller/Action/Plugin/Authorize.php index 308a4c3..4520e69 100644 --- a/library/Nmc/Controller/Action/Plugin/Authorize.php +++ b/library/Nmc/Controller/Action/Plugin/Authorize.php @@ -13,16 +13,23 @@ class Nmc_Controller_Action_Plugin_Authorize implements Nmc_Controller_Action_Pl { public function preAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { + if($request->getActionName() == 'unauthorized') { + return; + } + $authorized = false; if(!$controller->authorize()) { - $action->setActionName('unauthorized'); + $request->setActionName('unauthorized'); + $request->setDispatched(false); } } public function postAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { //do nothing } @@ -38,7 +45,7 @@ class Nmc_Controller_Action_Plugin_Authorize implements Nmc_Controller_Action_Pl $out = new Nmc_View(); $out->page = '403'; $out->title = '403 Access Denied'; - echo $out->render(); + echo $out->render('index.xhtml'); } } \ No newline at end of file diff --git a/library/Nmc/Controller/Action/Plugin/Broker.php b/library/Nmc/Controller/Action/Plugin/Broker.php index bbab7db..a0ea964 100644 --- a/library/Nmc/Controller/Action/Plugin/Broker.php +++ b/library/Nmc/Controller/Action/Plugin/Broker.php @@ -48,18 +48,20 @@ class Nmc_Controller_Action_Plugin_Broker implements Nmc_Controller_Action_Plugi } public function preAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { foreach($this->_plugins as $plugin) { - $plugin->preAction($controller, $action); + $plugin->preAction($controller, $request, $response); } } public function postAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { foreach($this->_plugins as $plugin) { - $plugin->postAction($controller, $action); + $plugin->postAction($controller, $request, $response); } } diff --git a/library/Nmc/Controller/Action/Plugin/Interface.php b/library/Nmc/Controller/Action/Plugin/Interface.php index a15b613..3f67c62 100644 --- a/library/Nmc/Controller/Action/Plugin/Interface.php +++ b/library/Nmc/Controller/Action/Plugin/Interface.php @@ -24,10 +24,12 @@ interface Nmc_Controller_Action_Plugin_Interface { public function preAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action); + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response); public function postAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action); + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response); } diff --git a/library/Nmc/Controller/Action/Plugin/Test.php b/library/Nmc/Controller/Action/Plugin/Test.php index 98803cb..4fdb310 100644 --- a/library/Nmc/Controller/Action/Plugin/Test.php +++ b/library/Nmc/Controller/Action/Plugin/Test.php @@ -13,14 +13,16 @@ class Nmc_Controller_Action_Plugin_Test implements Nmc_Controller_Action_Plugin_ { public function preAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { $foo = new ReflectionObject($controller); //print_r($foo->__toString()); } public function postAction(Nmc_Controller_Action $controller, - Zend_Controller_Dispatcher_Token $action) + Zend_Controller_Request_Abstract $request, + Zend_Controller_Response_Abstract $response) { //do nothing } -- GitLab