public static function glue_url($parsed_url)
{
if (!is_array($parsed_url)) {
return false;
}
$res = '';
$res .= $parsed_url['scheme'];
if ($parsed_url['is_pseudo'] || in_array(strtolower($parsed_url['scheme']), array('mailto', 'callto'))) {
$res .= ':';
} else {
if (!$parsed_url['is_relative']) {
$res .= '://';
}
}
if ($parsed_url['is_pseudo']) {
$res .= $parsed_url['pseudo_args'];
} else {
// user[:pass]@
if ($parsed_url['user']) {
$res .= $parsed_url['user'];
if ($parsed_url['pass']) {
$res .= ':' . $parsed_url['pass'];
}
$res .= '@';
}
$res .= $parsed_url['host'];
if (!empty($parsed_url['port'])) {
if (array_key_exists($parsed_url['scheme'], Utils::scheme_ports()) && Utils::scheme_ports($parsed_url['scheme']) == $parsed_url['port']) {
// default port for this scheme, do nothing
} else {
$res .= ':' . $parsed_url['port'];
}
}
if (!empty($parsed_url['path'])) {
$res .= $parsed_url['path'];
} else {
$res .= '/';
}
if ($parsed_url['query']) {
$res .= '?' . $parsed_url['query'];
}
if ($parsed_url['fragment']) {
$res .= '#' . $parsed_url['fragment'];
}
}
return $res;
}