diff --git a/classes/Utils.php b/classes/Utils.php index a5116f06df60042e0040171e6f30bb6c48ba400e..dd6a8d2991c170f8dea10e404f04521dcac66d59 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -468,10 +468,26 @@ class Utils{ }*/ }else{ if(isset($value['uri']) && $value['uri'] == 1){ - if($conf['mirror_external_uris']){ + if($conf['mirror_external_uris'] != false){ $value['mirroredUri'] = $value['value']; } - $value['value'] = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $value['value']); + if(is_boolean($conf['mirror_external_uris'])){ + $value['value'] = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $value['value']); + }elseif(is_string($conf['mirror_external_uris'])){ + $value['value'] = preg_replace("|^".$conf['mirror_external_uris']."|", $conf['basedir'], $value['value']); + }elseif(is_array($conf['mirror_external_uris'])){ + foreach($conf['mirror_external_uris'] as $v){ + $aux = preg_replace("|^".$conf['mirror_external_uris']."|", $conf['basedir'], $value['value']); + if($aux != $value['value']]){ + $value['value'] = $aux; + break; + } + } + }else{ + Utils::send500("Error in mirroring configuration"); + exit(1); + } + $value['curie'] = Utils::uri2curie($value['value']); $array[$key] = $value; } diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php index a791cf233adc06c943404a109bbf867de90c66aa..b4ca89100369351dd5356e0f7018d91e5f3fcbc1 100644 --- a/classes/modules/serviceModule.php +++ b/classes/modules/serviceModule.php @@ -64,7 +64,7 @@ class ServiceModule extends abstractModule{ $prefixHeader = array(); for($i=0;$i<sizeof($params);$i++){ - if($conf['mirror_external_uris']){ + if($conf['mirror_external_uris'] != false){ $altUri = Utils::curie2uri($params[$i]); $altUri = preg_replace("|^".$conf['basedir']."|", $conf['ns']['local'], $altUri); $params[$i] = Utils::uri2curie($altUri); diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php index 02f6433cd5740c10b3835898e77291374cf83099..fd13cc9e2ec0b297edf4e9ac0dd63221bbb80b06 100644 --- a/classes/modules/typeModule.php +++ b/classes/modules/typeModule.php @@ -47,7 +47,7 @@ class TypeModule extends abstractModule{ } $uri = $res; - if($conf['mirror_external_uris']){ + if($conf['mirror_external_uris'] != false){ $localUri = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $res); } diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php index 1bb02a68ec757ad892b9c33a64c9cf0591f0d37f..e9c222555154bec014f10ee19e16e5ab03e68b6c 100644 --- a/classes/modules/uriModule.php +++ b/classes/modules/uriModule.php @@ -67,7 +67,7 @@ class UriModule extends abstractModule{ } $uri = $res; - if($conf['mirror_external_uris']){ + if($conf['mirror_external_uris'] != false){ $localUri = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $res); } diff --git a/index.php b/index.php index 7bd8b7fc1fcb446a7347d0fa4b3a20fa89138cbe..ecf54b9bd0f8011c9afccd06b5bff358a7baaa7e 100755 --- a/index.php +++ b/index.php @@ -59,9 +59,20 @@ if($uri == $conf['basedir']){ } //Configure external URIs if necessary -if($conf['mirror_external_uris']){ - $uri = $conf['ns']['local'].$_GET['q']; +if($conf['mirror_external_uris'] != false){ $localUri = $conf['basedir'].$_GET['q']; + + if(is_boolean($conf['mirror_external_uris'])){ + $uri = $conf['ns']['local'].$_GET['q']; + }elseif(is_string($conf['mirror_external_uris'])){ + $uri = $conf['mirror_external_uris'].$_GET['q']; + }elseif(is_array($conf['mirror_external_uris'])){ + $uri = $conf['ns']['local'].$_GET['q']; + }else{ + Utils::send500("Error in mirroring configuration"); + exit(1); + } + } diff --git a/install.sh b/install.sh index 65619b531916770ace037327479e9035d10e0e1e..5dfc13d03e8eef7fb5a1d01b6ffc11bdcf8d379a 100755 --- a/install.sh +++ b/install.sh @@ -53,7 +53,7 @@ while [ "$everything_ok" != "y" ]; do if [[ "$basedir" =~ ^"$ns" ]]; then external="false" else - external="true" + external=$ns extra="\$conf['ns']['base'] = '$basedir';" fi