Esempio n. 1
0
 /**
  * Load a controller callable
  *
  * @param \Symfony\Component\HttpFoundation\Request $request Symfony Request object
  * @return bool|Callable Callable or false
  * @throws \phpbb\controller\exception
  */
 public function getController(Request $request)
 {
     $controller = $request->attributes->get('_controller');
     if (!$controller) {
         throw new \phpbb\controller\exception('CONTROLLER_NOT_SPECIFIED');
     }
     // Require a method name along with the service name
     if (stripos($controller, ':') === false) {
         throw new \phpbb\controller\exception('CONTROLLER_METHOD_NOT_SPECIFIED');
     }
     list($service, $method) = explode(':', $controller);
     if (!$this->container->has($service)) {
         throw new \phpbb\controller\exception('CONTROLLER_SERVICE_UNDEFINED', array($service));
     }
     $controller_object = $this->container->get($service);
     /*
      * If this is an extension controller, we'll try to automatically set
      * the style paths for the extension (the ext author can change them
      * if necessary).
      */
     $controller_dir = explode('\\', get_class($controller_object));
     // 0 vendor, 1 extension name, ...
     if (!is_null($this->template) && isset($controller_dir[1])) {
         $controller_style_dir = 'ext/' . $controller_dir[0] . '/' . $controller_dir[1] . '/styles';
         if (is_dir($this->phpbb_root_path . $controller_style_dir)) {
             $this->template->set_style(array($controller_style_dir, 'styles'));
         }
     }
     return array($controller_object, $method);
 }
 public function set_startpage()
 {
     $controller_service = $this->config['sitemaker_startpage_controller'];
     if ($this->user->page['page_name'] == 'index.' . $this->php_ext && $this->phpbb_container->has($controller_service) && !defined('STARTPAGE_IS_SET')) {
         $controller_object = $this->phpbb_container->get($controller_service);
         $method = $this->config['sitemaker_startpage_method'];
         // fail silently if startpage is not callable
         if (is_callable(array($controller_object, $method))) {
             $controller_dir = explode('\\', get_class($controller_object));
             define('STARTPAGE_IS_SET', 1);
             $controller_style_dir = 'ext/' . $controller_dir[0] . '/' . $controller_dir[1] . '/styles';
             $this->template->set_style(array($controller_style_dir, 'styles'));
             $arguments = explode('/', $this->config['sitemaker_startpage_params']);
             $this->startpage = true;
             $response = call_user_func_array(array($controller_object, $method), $arguments);
             $response->send();
             $this->exit_handler();
         }
     }
 }