Kaynağa Gözat

fixed wfs server acl->getItems

Piotr Labudda 9 yıl önce
ebeveyn
işleme
9880c76809

+ 4 - 2
SE/se-lib/Api/WfsDataServer.php

@@ -224,7 +224,9 @@ class Api_WfsDataServer extends Api_WfsServerBase {
 		$xmlWriter->writeAttribute('xsi:schemaLocation', "{$wfsNsUri} {$featureTypeUri}");
 
 		$tblName = $acl->getName();
-		foreach ($items as $itemKey => $item) {
+		$primaryKeyField = $acl->getPrimaryKeyField();
+		foreach ($items as $item) {
+			$itemKey = V::get($primaryKeyField, '', $item);
 			if (!is_array($item)) $item = (array)$item;
 
 			if (!empty($geomFld)) DBG::log(['msg'=>"item[{$itemKey}] ({$geomFld})isEmpty(".empty($item[$geomFld])."):", '$item['.$geomFld.']'=>$item[$geomFld]]);
@@ -235,7 +237,7 @@ class Api_WfsDataServer extends Api_WfsServerBase {
 					$xmlWriter->writeAttribute('fid', "{$type}.{$itemKey}");
 					if (!$simple) $xmlWriter->writeAttribute("{$rootWfsNs}:web_link", Request::getPathUri() . "index.php?_route=ViewTableAjax&namespace=" . $acl->getNamespace() . "#EDIT/{$itemKey}");
 					foreach ($fldList as $idZasob => $fldName) {
-						DBG::log([ 'msg'=>">>> loop({$itemKey}) item({$item['ID']}) fld({$fldName})", '$item'=>$item[$fldName] ]);
+						if(V::get('DBG_LOOP','',$_GET))DBG::log([ 'msg'=>">>> loop({$itemKey}) item({$item['ID']}) fld({$fldName})", '$item'=>$item[$fldName] ]);
 						$fldType = $acl->getXsdFieldType($fldName);
 						if (!$acl->canReadObjectField($fldName, (object)$item)) continue;
 

+ 3 - 1
SE/se-lib/Api/WfsQgisServer.php

@@ -128,7 +128,9 @@ if($DBG){echo 'getItems(params) \$params:';print_r($searchParams);echo "\n";}
 if($DBG){echo '(geomFld: '.$geomFld.'):';print_r($acl->getFieldType($geomFld));echo "\n";}
 		$dbgLoop = 0;
 		$this->DBG("before loop...", __LINE__, __FUNCTION__, __CLASS__);
-		foreach ($items as $itemKey => $item) {
+		$primaryKeyField = $acl->getPrimaryKeyField();
+		foreach ($items as $item) {
+			$itemKey = V::get($primaryKeyField, '', $item);
 			$item = (array)$item;
 			if (0 == (++$dbgLoop) % 500) $this->DBG("items loop:{$dbgLoop}", __LINE__, __FUNCTION__, __CLASS__);
 			if($DBG){echo 'item['.$itemKey.'] ('.$geomFld.')isEmpty('.empty($item[$geomFld]).'):' . var_export($item[$geomFld], true) . "\n";}