/**
  * @inheritdoc
  */
 public function controller(Controller $controller, $code = Response::HTTP_OK, $headers = array())
 {
     $request = $this->request;
     if ($response = $controller->on_start()) {
         return $response;
     }
     if ($controller instanceof PageController) {
         if ($controller->isReplaced()) {
             return $this->controller($controller->getReplacement(), $code, $headers);
         }
         $controller->setupRequestActionAndParameters($request);
         $response = $controller->validateRequest();
         // If validaterequest returned a response
         if ($response instanceof \Symfony\Component\HttpFoundation\Response) {
             return $response;
         } else {
             // If validateRequest did not return true
             if ($response == false) {
                 return $this->notFound('', Response::HTTP_NOT_FOUND, $headers);
             }
         }
         $requestTask = $controller->getRequestAction();
         $requestParameters = $controller->getRequestActionParameters();
         $response = $controller->runAction($requestTask, $requestParameters);
         if ($response instanceof \Symfony\Component\HttpFoundation\Response) {
             return $response;
         }
     } else {
         if ($response = $controller->runAction('view')) {
             return $response;
         }
     }
     $view = $controller->getViewObject();
     // Mobile theme
     if ($this->config->get('concrete.misc.mobile_theme_id') > 0) {
         $md = $this->app->make(MobileDetect::class);
         if ($md->isMobile()) {
             $mobileTheme = Theme::getByID(Config::get('concrete.misc.mobile_theme_id'));
             if ($mobileTheme instanceof Theme) {
                 $view->setViewTheme($mobileTheme);
                 $controller->setTheme($mobileTheme);
             }
         }
     }
     return $this->view($view, $code, $headers);
 }
Example #2
0
 public function runAction($action, $parameters = array())
 {
     return parent::runAction($action, $parameters);
 }