|
|
@@ -33,7 +33,19 @@ class Api_WfsNs {
|
|
|
$listNs = self::getNsList();
|
|
|
$nsUri = trim($nsUri);
|
|
|
$nsUri = rtrim($nsUri, '/');
|
|
|
- return V::get($nsUri, null, $listNs);
|
|
|
+ $prefix = V::get($nsUri, null, $listNs);
|
|
|
+ if ($prefix) return $prefix;
|
|
|
+
|
|
|
+ $relativeNsUri = ('http' == substr($nsUri, 0, 4))
|
|
|
+ ? substr($nsUri, strlen(self::getBaseWfsUri()) + 1)
|
|
|
+ : $nsUri;
|
|
|
+ $prefix = V::get(self::getBaseWfsUri() . "/{$relativeNsUri}", null, $listNs);
|
|
|
+ if ($prefix) return $prefix;
|
|
|
+
|
|
|
+ if (false === strpos($nsUri, '/')) throw new Exception("BUG: Unsupported namespace uri '{$nsUri}'");
|
|
|
+ $nsEx = explode("/", $relativeNsUri);
|
|
|
+ if ('default_db' != $nsEx[0]) throw new Exception("BUG: Unsupported namespace uri '{$nsUri}'");
|
|
|
+ return str_replace('/', '__x3A__', $relativeNsUri);
|
|
|
}
|
|
|
|
|
|
// @usage: Api_WfsNs::getBaseWfsUri();
|
|
|
@@ -41,4 +53,15 @@ class Api_WfsNs {
|
|
|
return Request::getHostUri() . "/wfs";
|
|
|
}
|
|
|
|
|
|
+ // @returns [ $nsUri, $prefix, $name ]
|
|
|
+ public static function parseObjectNsUri($objectNsUri) {
|
|
|
+ if ('{' == substr($objectNsUri, 0, 1)) $objectNsUri = str_replace('}', '/', substr($objectNsUri, 1));// form like "{.../wfs/default_objects}AccessOwner"
|
|
|
+ $nsEx = explode('/', $objectNsUri);
|
|
|
+ $name = array_pop($nsEx);
|
|
|
+ $nsUri = implode('/', $nsEx);
|
|
|
+ if ('http' !== substr($nsUri, 0, 4)) $nsUri = self::getBaseWfsUri() . "/" . $nsUri;
|
|
|
+ $prefix = self::getNsPrefix($nsUri);
|
|
|
+ return [ $nsUri, $prefix, $name ];
|
|
|
+ }
|
|
|
+
|
|
|
}
|