3 * A controller for handling sent forms
5 * @author Roland Haeder <webmaster@shipsimu.org>
7 * @copyright Copyright (c) 2015 City Developer Team
8 * @license GNU GPL 3.0 or any newer version
9 * @link http://www.shipsimu.org
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 class CityHtmlDoFormController extends BaseController implements Controller {
26 * Protected constructor
30 protected function __construct () {
31 // Call parent constructor
32 parent::__construct(__CLASS__);
34 // Init additional filter chains
35 foreach (array('shutdown') as $filterChain) {
36 $this->initFilterChain($filterChain);
41 * Creates an instance of this class
43 * @param $resolverInstance An instance of a resolver class
44 * @return $controllerInstance A prepared instance of this class
46 public static final function createCityHtmlDoFormController (CommandResolver $resolverInstance) {
47 // Create the instance
48 $controllerInstance = new CityHtmlDoFormController();
50 // Set resolver instance
51 $controllerInstance->setResolverInstance($resolverInstance);
53 // We need the controller instance in resolver class so set it here
54 $resolverInstance->setControllerInstance($controllerInstance);
56 // Return the prepared instance
57 return $controllerInstance;
61 * Handles the given request and response
63 * @param $requestInstance An instance of a request class
64 * @param $responseInstance An instance of a response class
67 public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) {
68 // Get the "form action"
69 $formAction = $requestInstance->getRequestElement('form');
71 // Get command instance from resolver
72 $commandInstance = $this->getResolverInstance()->resolveCommand($formAction);
74 // Add more filters by the command
75 $commandInstance->addExtraFilters($this, $requestInstance);
77 // Try to run the pre filters, if auth exceptions come through redirect here
79 // Run the pre filters
80 $this->executePreFilters($requestInstance, $responseInstance);
81 } catch (UserAuthorizationException $e) {
82 // Redirect to main page
83 $responseInstance->redirectToConfiguredUrl('login_failed');
90 * Is the request still valid? Post filters shall only be executed of
91 * the request is valid
93 if ($requestInstance->isRequestValid()) {
94 // Execute the command
95 $commandInstance->execute($requestInstance, $responseInstance);
97 // Execute *very* generic ppost filters
98 $this->executePostFilters($requestInstance, $responseInstance);
101 // Flush the buffer out
102 $responseInstance->flushBuffer();