Преглед на файлове

added support for * propertyName in WFS GetFeature recurse

Piotr Labudda преди 8 години
родител
ревизия
bd8a036b32
променени са 1 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. 8 1
      SE/se-lib/Api/Wfs/GetFeature.php

+ 8 - 1
SE/se-lib/Api/Wfs/GetFeature.php

@@ -41,9 +41,16 @@ class Api_Wfs_GetFeature {
 		if (!empty($nestedFields)) {
 			$aclFields = array_unique(array_merge($aclFields, array_keys($nestedFields)));
 		}
+		if (in_array('*', $aclFields)) {
+			$aclFields = array_filter($aclFields, function ($fieldName) { return ( '*' !== $fieldName); });
+			$allAclFields = array_values($acl->getFieldListByIdZasob());
+			$allAclFields = array_filter($allAclFields, function ($fieldName) use ($acl) {
+				return $acl->canReadField($fieldName);
+			});
+			if ($allAclFields) $aclFields = array_unique(array_merge($aclFields, $allAclFields));
+		}
 		DBG::log([$aclFields, $nestedFields], 'array', 'convertOgcPropsRecurse: splited to acl fields and nested fields');
 
-		// TODO: convert '*' to fields (only local?)
 		foreach ($aclFields as $fieldName) {
 			if (!$acl->canReadField($fieldName)) throw new Exception("Access Denied to read field '{$fieldName}' from '" . $acl->getNamespace() . "'");
 		}