/** * Maps the supplied request with the appropiate method to run on this controller, for example * GET to doGET(), POST to doPOST() etc. Returns the response generated by the method called. * * @param Alpha\Util\Http\Request $request * * @return Alpha\Util\Http\Response * * @since 2.0 */ public function process($request) { if (!$request instanceof Request) { throw new IllegalArguementException('The request passed to process is not a valid Request object'); } $config = ConfigProvider::getInstance(); $method = $request->getMethod(); if (in_array($method, array('POST', 'PUT', 'PATCH'))) { if ($config->get('security.encrypt.http.fieldnames')) { $decryptedParams = $this->decryptFieldNames($request->getParams()); $request->addParams($decryptedParams); if ($request->getParam('_METHOD') != null) { $request->setMethod($request->getParam('_METHOD')); $method = $request->getMethod(); } } } $ProviderClassName = $config->get('app.renderer.provider.name'); if ($ProviderClassName == 'auto' && $request->getAccept() != null) { View::setProvider('auto', $request->getAccept()); } $this->request = $request; // check the current user's rights on access to the page controller if (!$this->checkRights()) { return $this->accessError(); } switch ($method) { case 'HEAD': $response = $this->doHEAD($request); break; case 'GET': $response = $this->doGET($request); break; case 'POST': $response = $this->doPOST($request); break; case 'PUT': $response = $this->doPUT($request); break; case 'PATCH': $response = $this->doPATCH($request); break; case 'DELETE': $response = $this->doDELETE($request); break; case 'OPTIONS': $response = $this->doOPTIONS($request); break; case 'TRACE': $response = $this->doTRACE($request); break; } return $response; }