+
+ /**
+ * Adds extra filters to the given controller instance
+ *
+ * @param $controllerInstance A controller instance
+ * @param $requestInstance An instance of a class with an Requestable interface
+ * @return void
+ */
+ public function addExtraFilters (Controller $controllerInstance, Requestable $requestInstance) {
+ // Default is no action
+ $actionInstance = null;
+
+ // Default action is the one from configuration
+ $this->actionName = sprintf("login_%s", $this->getConfigInstance()->readConfig('login_default_action'));
+
+ // Get "action" from request
+ $actReq = $requestInstance->getRequestElement('action');
+
+ // Do we have a "action" parameter set?
+ if ((is_string($actReq)) && (!empty($actReq))) {
+ // Then use it with prefix
+ $this->actionName = sprintf("login_%s", $actReq);
+ } // END - if
+
+ // Get application instance
+ $applicationInstance = $this->getResolverInstance()->getApplicationInstance();
+
+ // Try to get an action resolver for the given action
+ try {
+ // Get a resolver
+ $actionResolver = WebActionResolver::createWebActionResolver($this->actionName, $applicationInstance);
+
+ // Resolve the action
+ $actionInstance = $actionResolver->resolveAction();
+
+ // Add more action-specific filters
+ $actionInstance->addExtraFilters($controllerInstance, $requestInstance);
+
+ // Remember this action in registry
+ Registry::getRegistry()->addInstance('action', $actionInstance);
+ } catch (InvalidActionException $e) {
+ // Silently ignored because no special action was found
+ }
+ }