예제 #1
0
 /**
  * @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;
 }