Browse Source

finished ActionFilter.

tags/2.0.0-alpha
Qiang Xue 12 years ago
parent
commit
2f3cc8f16e
  1. 43
      framework/base/ActionFilter.php
  2. 17
      todo.md

43
framework/base/ActionFilter.php

@ -30,8 +30,8 @@ class ActionFilter extends Behavior
public function events() public function events()
{ {
return array( return array(
'beforeAction' => 'beforeAction', 'beforeAction' => 'beforeFilter',
'afterAction' => 'afterAction', 'afterAction' => 'afterFilter',
); );
} }
@ -39,8 +39,11 @@ class ActionFilter extends Behavior
* @param ActionEvent $event * @param ActionEvent $event
* @return boolean * @return boolean
*/ */
public function beforeAction($event) public function beforeFilter($event)
{ {
if ($this->isActive($event->action)) {
$event->isValid = $this->beforeAction($event->action);
}
return $event->isValid; return $event->isValid;
} }
@ -48,8 +51,40 @@ class ActionFilter extends Behavior
* @param ActionEvent $event * @param ActionEvent $event
* @return boolean * @return boolean
*/ */
public function afterAction($event) public function afterFilter($event)
{ {
if ($this->isActive($event->action)) {
$this->afterAction($event->action);
}
}
/**
* This method is invoked right before an action is to be executed (after all possible filters.)
* You may override this method to do last-minute preparation for the action.
* @param Action $action the action to be executed.
* @return boolean whether the action should continue to be executed.
*/
public function beforeAction($action)
{
return true;
}
/**
* This method is invoked right after an action is executed.
* You may override this method to do some postprocessing for the action.
* @param Action $action the action just executed.
*/
public function afterAction($action)
{
}
/**
* Returns a value indicating whether the filer is active for the given action.
* @param Action $action the action being filtered
* @return boolean whether the filer is active for the given action.
*/
protected function isActive($action)
{
return !in_array($action->id, $this->except, true) && (empty($this->only) || in_array($action->id, $this->only, true));
} }
} }

17
todo.md

@ -1,21 +1,4 @@
- console
* If console is executed using Windows, do not use colors. If not, use colors. Allow to override via console application settings.
- db
* pgsql, sql server, oracle, db2 drivers
* unit tests on different DB drivers
* document-based (should allow storage-specific methods additionally to generic ones)
* mongodb (put it under framework/db/mongodb)
* key-value-based (should allow storage-specific methods additionally to generic ones)
* redis (put it under framework/db/redis or perhaps framework/caching?)
- base
* TwigViewRenderer (Alex)
* SmartyViewRenderer (Alex)
- logging
* WebTarget (TBD after web is in place): should consider using javascript and make it into a toolbar
* ProfileTarget (TBD after web is in place): should consider using javascript and make it into a toolbar
* unit tests
- caching - caching
* backend-specific unit tests
* dependency unit tests * dependency unit tests
- validators - validators
* Refactor validators to add validateValue() for every validator, if possible. Check if value is an array. * Refactor validators to add validateValue() for every validator, if possible. Check if value is an array.

Loading…
Cancel
Save