forked from friendica/php-json-ld
Fix bugs w/expanding/compacting with empty base.
This commit is contained in:
parent
b57d0797e8
commit
24fa461705
30
jsonld.php
30
jsonld.php
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* PHP implementation of the JSON-LD API.
|
* PHP implementation of the JSON-LD API.
|
||||||
* Version: 0.0.9
|
* Version: 0.0.10
|
||||||
*
|
*
|
||||||
* @author Dave Longley
|
* @author Dave Longley
|
||||||
*
|
*
|
||||||
|
@ -429,7 +429,7 @@ function jsonld_prepend_base($base, $iri) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$path = '/' . implode('/', $segments);
|
$path = implode('/', $segments);
|
||||||
|
|
||||||
// add query and hash
|
// add query and hash
|
||||||
if(isset($rel['query'])) {
|
if(isset($rel['query'])) {
|
||||||
|
@ -439,11 +439,20 @@ function jsonld_prepend_base($base, $iri) {
|
||||||
$path .= "#{$rel['fragment']}";
|
$path .= "#{$rel['fragment']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
$absolute_iri = "{$base['scheme']}://";
|
$absolute_iri = '';
|
||||||
|
if($base['scheme'] === '') {
|
||||||
|
if(strpos($iri, '//') === 0) {
|
||||||
|
$absolute_iri .= '//';
|
||||||
|
}
|
||||||
|
$absolute_iri .= $path;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$absolute_iri .= "{$base['scheme']}://";
|
||||||
if(isset($base['auth'])) {
|
if(isset($base['auth'])) {
|
||||||
$absolute_iri .= "{$base['auth']}@";
|
$absolute_iri .= "{$base['auth']}@";
|
||||||
}
|
}
|
||||||
$absolute_iri .= "$authority$path";
|
$absolute_iri .= "$authority/$path";
|
||||||
|
}
|
||||||
|
|
||||||
return $absolute_iri;
|
return $absolute_iri;
|
||||||
}
|
}
|
||||||
|
@ -462,16 +471,23 @@ function jsonld_remove_base($base, $iri) {
|
||||||
$base = jsonld_parse_url($base);
|
$base = jsonld_parse_url($base);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// base is empty
|
||||||
|
if($base['scheme'] === '') {
|
||||||
|
return $iri;
|
||||||
|
}
|
||||||
|
|
||||||
// establish base root
|
// establish base root
|
||||||
|
$root = '';
|
||||||
|
if($base['scheme'] !== '') {
|
||||||
$root = "{$base['scheme']}://";
|
$root = "{$base['scheme']}://";
|
||||||
if(isset($base['auth'])) {
|
if(isset($base['auth'])) {
|
||||||
$root .= "{$base['auth']}@";
|
$root .= "{$base['auth']}@";
|
||||||
}
|
}
|
||||||
$authority = $base['host'];
|
$root .= $base['host'];
|
||||||
if(isset($base['port'])) {
|
if(isset($base['port'])) {
|
||||||
$authority .= ":{$base['port']}";
|
$root .= ":{$base['port']}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$root .= $authority;
|
|
||||||
|
|
||||||
// IRI not relative to base
|
// IRI not relative to base
|
||||||
if(strpos($iri, $root) !== 0) {
|
if(strpos($iri, $root) !== 0) {
|
||||||
|
|
Loading…
Reference in a new issue