function url_to_absolute($baseUrl, $relativeUrl) { // If relative URL has a scheme, clean path and return. $r = split_url($relativeUrl); if ($r === FALSE) { return FALSE; } if (!empty($r['scheme'])) { if (!empty($r['path']) && $r['path'][0] == '/') { $r['path'] = url_remove_dot_segments($r['path']); } return join_url($r); } // Make sure the base URL is absolute. $b = split_url($baseUrl); if ($b === FALSE || empty($b['scheme']) || empty($b['host'])) { return FALSE; } $r['scheme'] = $b['scheme']; // If relative URL has an authority, clean path and return. if (isset($r['host'])) { if (!empty($r['path'])) { $r['path'] = url_remove_dot_segments($r['path']); } return join_url($r); } unset($r['port']); unset($r['user']); unset($r['pass']); // Copy base authority. $r['host'] = $b['host']; if (isset($b['port'])) { $r['port'] = $b['port']; } if (isset($b['user'])) { $r['user'] = $b['user']; } if (isset($b['pass'])) { $r['pass'] = $b['pass']; } // If relative URL has no path, use base path if (empty($r['path'])) { if (!empty($b['path'])) { $r['path'] = $b['path']; } if (!isset($r['query']) && isset($b['query'])) { $r['query'] = $b['query']; } return join_url($r); } // If relative URL path doesn't start with /, merge with base path if ($r['path'][0] != '/') { $base = mb_strrchr($b['path'], '/', TRUE, 'UTF-8'); if ($base === FALSE) { $base = ''; } $r['path'] = $base . '/' . $r['path']; } $r['path'] = url_remove_dot_segments($r['path']); return join_url($r); }
function smarty_function_javascript($params, &$smarty) { if ($params['file']) { return '<script type="text/javascript" src="' . join_url(SilkRequest::get_calculated_url_base(true), $params['file']) . '"></script>'; } }