Example #1
0
 /**
  * Forwards control to Modules and creates output views.
  *
  * This is the framework "main()" function / entry point.
  *
  * @api
  * @param \Nethgui\Controller\RequestInterface $request
  * @param array $output DEPRECATED since 1.6
  * @return integer DEPRECATED since 1.6
  */
 public function dispatch(\Nethgui\Controller\RequestInterface $request, &$output = NULL)
 {
     /* @var $log \Nethgui\Log\LogInterface */
     $log = $this->dc['Log'];
     $this->dc['OriginalRequest'] = $request;
     if ($request instanceof \Nethgui\Utility\SessionConsumerInterface) {
         $request->setSession($this->dc['Session']);
     }
     try {
         $response = $this->handle($request);
     } catch (\Nethgui\Exception\HttpException $ex) {
         // no processing is required, rethrow:
         throw $ex;
     } catch (\Nethgui\Exception\AuthorizationException $ex) {
         if ($request->getExtension() === 'xhtml' && !$request->isMutation() && !$request->getUser()->isAuthenticated()) {
             $response = $this->handle($this->createLoginRequest($request));
         } else {
             $log->error(sprintf('%s: [%d] %s', __CLASS__, $ex->getCode(), $ex->getMessage()));
             throw new \Nethgui\Exception\HttpException('Forbidden', 403, 1327681977, $ex);
         }
     } catch (\Exception $ex) {
         $log->exception($ex, NETHGUI_DEBUG);
         throw new \Nethgui\Exception\HttpException('Internal server error', 500, 1366796122, $ex);
     }
     $response->send();
 }