+
+ /**
+ * Adds extra filters to the given controller instance. An corresponding action class must now exist!
+ *
+ * @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;
+
+ // Get registry
+ $registryInstance = Registry::getRegistry();
+
+ // Get our application instance from the registry
+ $appInstance = $registryInstance->getInstance('application');
+
+ // Default action is the one from configuration
+ $this->actionName = sprintf("%s_login_%s",
+ str_replace("-", "_", $appInstance->getAppShortName()),
+ $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("%s_login_%s",
+ str_replace("-", "_", $appInstance->getAppShortName()),
+ $actReq
+ );
+ } // END - if
+
+ // Get application instance
+ $applicationInstance = $this->getResolverInstance()->getApplicationInstance();
+
+ // 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);
+ }