/** * 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 : '/'); }