/** * @param RokUpdater_Uri $uri * @param array $components * @param bool $esc * * @return string */ private static function getAbsoluteComponents(RokUpdater_Uri $uri, $components, $esc) { $result = ''; if ($components & RokUpdater_Uri_Components::SCHEME) { $cmp = $uri->getScheme(); if (!empty($cmp)) { $result .= "{$cmp}:"; } } // AUTHORITY_START: if ($components & RokUpdater_Uri_Components::AUTHORITY_START) { $result .= "//"; } //USER_INFO: if ($components & RokUpdater_Uri_Components::USERINFO) { $cmp = $uri->getUserInfo(); if (!empty($cmp)) { if ($esc && strpos($cmp, ':') !== false) { $parts = explode(':', $cmp, 2); $result .= rawurlencode($parts[0]) . ':' . rawurlencode($parts[1]); } else { if ($esc) { $result .= rawurlencode($cmp); } else { $result .= $cmp; } } $result .= '@'; } } //HOST: if ($components & RokUpdater_Uri_Components::HOST) { $cmp = $uri->getHost(); if (!empty($cmp)) { $result .= $cmp; } } //PORT: if ($components & RokUpdater_Uri_Components::STRONG_PORT || $components & RokUpdater_Uri_Components::PORT) { $cmp = $uri->getPort(); if (!($cmp === -1 || $components & RokUpdater_Uri_Components::PORT && $uri->isDefaultPort())) { $result .= ":{$cmp}"; } } return $result; }