Пример #1
0
 /**
  * Handle HMVC request
  * @param Request $request
  * @param array $options
  * @param bool $subrequest
  * @return Response\Json|Response\Layout|Response\PageNotFound|Response\Redirect|string
  * @throws Exception
  */
 public function handleRequest(Request $request, $options = array(), $subrequest = true)
 {
     \Ip\ServiceLocator::addRequest($request);
     $rawResponse = $this->_handleOnlyRequest($request, $options, $subrequest);
     if (!empty($options['returnRawResponse'])) {
         if ($subrequest) {
             \Ip\ServiceLocator::removeRequest();
         }
         return $rawResponse;
     }
     if (empty($rawResponse) || is_string($rawResponse) || $rawResponse instanceof \Ip\View) {
         if ($rawResponse instanceof \Ip\View) {
             $rawResponse = $rawResponse->render();
         }
         if (empty($rawResponse)) {
             $rawResponse = '';
         }
         $response = \Ip\ServiceLocator::response();
         $response->setContent($rawResponse);
     } elseif ($rawResponse instanceof \Ip\Response) {
         \Ip\ServiceLocator::setResponse($rawResponse);
         if ($subrequest) {
             \Ip\ServiceLocator::removeRequest();
         }
         return $rawResponse;
     } elseif ($rawResponse === null) {
         $response = \Ip\ServiceLocator::response();
     } else {
         \Ip\ServiceLocator::removeRequest();
         throw new \Ip\Exception('Unknown response');
     }
     if ($subrequest) {
         \Ip\ServiceLocator::removeRequest();
     }
     return $response;
 }
Пример #2
0
$translator->addTranslationFilePattern('json', $trOverrideDir, 'Install-%s.json', 'Install');
$request = new \Plugin\Install\Request();
$request->setQuery($_GET);
$request->setPost($_POST);
$request->setServer($_SERVER);
$request->setRequest($_REQUEST);
\Ip\ServiceLocator::addRequest($request);
$language = new \Ip\Language(null, $options['translationsLanguageCode'], null, null, null, 0, 'ltr');
ipContent()->_setCurrentLanguage($language);
\Ip\ServiceLocator::dispatcher()->_bindInstallEvents();
if ($request->isGet()) {
    $controller = new \Plugin\Install\PublicController();
    if (!empty($_GET['pa']) && $_GET['pa'] == 'Install.testSessions') {
        $response = $controller->testSessions();
    } else {
        $response = $controller->index();
    }
} elseif ($request->isPost()) {
    $route = Ip\Internal\Core\Job::ipRouteAction_20(array('request' => $request));
    if (!$route || $route['plugin'] != 'Install' || $route['controller'] != 'PublicController') {
        $response = new \Ip\Response\PageNotFound();
    } else {
        $controller = new \Plugin\Install\PublicController();
        $response = $controller->{$route['action']}();
    }
} else {
    exit('HTTP Method not supported.');
}
\Ip\ServiceLocator::removeRequest();
\Ip\ServiceLocator::setResponse($response);
$application->handleResponse($response);