forked from friendica/php-json-ld
Fix bugs w/prepend base.
This commit is contained in:
parent
61e1140b3b
commit
612f56aa6c
26
jsonld.php
26
jsonld.php
|
@ -282,10 +282,18 @@ function jsonld_parse_url($url) {
|
||||||
* @return string the absolute IRI.
|
* @return string the absolute IRI.
|
||||||
*/
|
*/
|
||||||
function jsonld_prepend_base($base, $iri) {
|
function jsonld_prepend_base($base, $iri) {
|
||||||
|
// already an absolute IRI
|
||||||
|
if(strpos($iri, ':') !== false) {
|
||||||
|
return $iri;
|
||||||
|
}
|
||||||
|
|
||||||
if(is_string($base)) {
|
if(is_string($base)) {
|
||||||
$base = jsonld_parse_url($base);
|
$base = jsonld_parse_url($base);
|
||||||
}
|
}
|
||||||
$authority = $base['host'];
|
$authority = $base['host'];
|
||||||
|
if(isset($base['port'])) {
|
||||||
|
$authority .= ":{$base['port']}";
|
||||||
|
}
|
||||||
$rel = jsonld_parse_url($iri);
|
$rel = jsonld_parse_url($iri);
|
||||||
|
|
||||||
// per RFC3986 normalize slashes and dots in path
|
// per RFC3986 normalize slashes and dots in path
|
||||||
|
@ -352,13 +360,19 @@ function jsonld_prepend_base($base, $iri) {
|
||||||
|
|
||||||
// add query and hash
|
// add query and hash
|
||||||
if(isset($rel['query'])) {
|
if(isset($rel['query'])) {
|
||||||
$path .= '?' . $rel['query'];
|
$path .= "?{$rel['query']}";
|
||||||
}
|
}
|
||||||
if(isset($rel['fragment'])) {
|
if(isset($rel['fragment'])) {
|
||||||
$path .= '#' . $rel['fragment'];
|
$path .= "#{$rel['fragment']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$absolute_iri = "{$base['scheme']}://";
|
||||||
|
if(isset($base['user']) || isset($base['pass'])) {
|
||||||
|
$absolute_iri .= "{$base['user']}:{$base['pass']}@";
|
||||||
|
}
|
||||||
|
$absolute_iri .= "$authority$path";
|
||||||
|
|
||||||
return $base['scheme'] . "://$authority$path";
|
return $absolute_iri;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4340,7 +4354,7 @@ class JsonLdProcessor {
|
||||||
* the @contexts from the urls map, false not to.
|
* the @contexts from the urls map, false not to.
|
||||||
* @param string $base the base URL to resolve relative URLs with.
|
* @param string $base the base URL to resolve relative URLs with.
|
||||||
*/
|
*/
|
||||||
protected function _findContextUrls($input, $urls, $replace, $base) {
|
protected function _findContextUrls($input, $urls, $replace, $base) {
|
||||||
if(is_array($input)) {
|
if(is_array($input)) {
|
||||||
foreach($input as $e) {
|
foreach($input as $e) {
|
||||||
$this->_findContextUrls($e, $urls, $replace, $base);
|
$this->_findContextUrls($e, $urls, $replace, $base);
|
||||||
|
|
Loading…
Reference in a new issue