Ejemplo n.º 1
0
 /**
  * Builds the webapp request
  */
 private function parseRequest()
 {
     // URL path part
     //TODO ipotizza che ci sia il receiver nella URL
     $url_path = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
     $this->request->setUrlPath($url_path);
     // Remote address
     $this->request->setRemoteAddr($_SERVER['REMOTE_ADDR']);
     // Server name
     list($servername) = explode(':', $_SERVER['HTTP_HOST']);
     $this->request->setServerName($servername);
     // Server port
     $this->request->setServerPort($_SERVER['SERVER_PORT']);
     // Request URI
     if ($this->request->isUrlRewriteOn()) {
         $path_info = substr($_SERVER['REQUEST_URI'], strlen($url_path));
     } else {
         $path_info = $_SERVER['PATH_INFO'];
     }
     if (strpos($path_info, '?')) {
         $path_info = substr($path_info, 0, strpos($path_info, '?'));
     }
     $requestURI = $url_path . $path_info;
     $normalizedURI = \Innomatic\Io\Filesystem\DirectoryUtils::normalize($requestURI);
     if ($url_path != '/' && $url_path == $normalizedURI) {
         $normalizedURI .= '/';
     }
     $this->request->setRequestURI($normalizedURI);
     // Request method
     $this->request->setMethod($_SERVER['REQUEST_METHOD']);
     // Request protocol
     $this->request->setProtocol($_SERVER['SERVER_PROTOCOL']);
     $this->response->setProtocol($_SERVER['SERVER_PROTOCOL']);
     // Query string
     if (strlen($_SERVER['QUERY_STRING']) > 0) {
         $this->request->setQueryString($_SERVER['QUERY_STRING']);
     }
     // Scheme and secure flag
     if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
         $this->request->setScheme('https');
         $this->request->setSecure(true);
     } else {
         $this->request->setScheme('http');
     }
     // POST, GET and FILES parameters
     $parameters = array();
     parse_str($this->request->getQueryString(), $results);
     foreach ($results as $name => $values) {
         settype($values, 'array');
         $parameters[$name] = array_values($values);
     }
     foreach ($_POST as $name => $values) {
         settype($values, 'array');
         $parameters[$name] = array_values($values);
     }
     foreach ($_FILES as $name => $values) {
         settype($values, 'array');
         $parameters[$name] = array_values($values);
     }
     $this->request->setParameters($parameters);
     // Input
     $this->request->setInput($_POST);
     // Accepted languages
     $value = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : 'en_US';
     $locales = array();
     $value = str_replace(array(' ', "\t"), '', $value);
     $entries = explode(',', $value);
     foreach ($entries as $entry) {
         // extract the quality factor
         $quality = 1.0;
         if (($semi = strpos($entry, ';q=')) !== false) {
             $quality = (double) substr($entry, $semi + 3);
             $entry = substr($entry, 0, $semi);
         }
         $localeParts = explode('-', $entry);
         $language = $locale = $localeParts[0];
         $country = '';
         $varient = '';
         if (count($localeParts) > 1) {
             $country = $localeParts[1];
             $locale .= '_' . strtoupper($country);
             if (count($localeParts) > 2) {
                 $variant = $localeParts[2];
                 $locale .= '_' . $variant;
             }
         }
         $key = -$quality;
         if (empty($locales["{$key}"])) {
             $locales["{$key}"] = array();
         }
         $locales["{$key}"][] = $locale;
     }
     ksort($locales);
     foreach ($locales as $localeSet) {
         foreach ($localeSet as $locale) {
             $this->request->addLocale($locale);
         }
     }
 }
 protected function getRelativePath(WebAppRequest $request)
 {
     $result = $request->getPathInfo();
     return \Innomatic\Io\Filesystem\DirectoryUtils::normalize(strlen($result) ? $result : '/');
 }