Quellcode durchsuchen

fixed geom types in acl query builder

Piotr Labudda vor 8 Jahren
Ursprung
Commit
6e43ad419a
2 geänderte Dateien mit 20 neuen und 7 gelöschten Zeilen
  1. 14 1
      SE/se-lib/AclQueryBuilder.php
  2. 6 6
      SE/se-lib/AntAclBase.php

+ 14 - 1
SE/se-lib/AclQueryBuilder.php

@@ -416,6 +416,17 @@ class AclQueryBuilder {
 				}
 			}
 			case 'p5Type': {
+				// g 'p5Type:' SE/schema/ant-object/|awk -F'p5Type:' '{print $2}'|awk -F'"' '{print $1}'|sort -u
+				// result at @2018-04-17:
+				// date
+				// dateTime
+				// decimal
+				// integer
+				// lineString
+				// point
+				// polygon
+				// string
+				// text
 				switch ($typeName) {
 					case 'text': return "{$prefix}.{$sqlFieldName}";
 					case 'price': return "{$prefix}.{$sqlFieldName}";
@@ -428,11 +439,13 @@ class AclQueryBuilder {
 					case 'double':
 					case 'float':
 					case 'hexBinary':
-					case 'polygon':
 					case 'text':
 					case 'time':
 					case 'year':
 					case 'integer': return "{$prefix}.{$sqlFieldName}"; // TODO: check if local or remote?
+					case 'polygon':
+					case 'lineString':
+					case 'point': return "AsWKT({$prefix}.{$sqlFieldName}) as {$sqlFieldName}";
 					default: throw new Exception("Not implemented field type in select '{$fieldType}' (field: '{$fieldName}')");
 				}
 			}

+ 6 - 6
SE/se-lib/AntAclBase.php

@@ -340,7 +340,7 @@ class AntAclBase extends Core_AclBase {
 	public function canCreateField($fieldName) {
 		try {
 			$fieldAclInfo = $this->getAclInfo($fieldName);
-			DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
+			// DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
 			return ($fieldAclInfo['PERM_C'] > 0);
 		} catch (Exception $e) {
 			DBG::log($e);
@@ -356,7 +356,7 @@ class AntAclBase extends Core_AclBase {
 			if ('A_RECORD_UPDATE_AUTHOR' === $fieldName) return true;
 			if ($this->getPrimaryKeyField() === $fieldName) return true;
 			$fieldAclInfo = $this->getAclInfo($fieldName);
-			DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
+			// DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
 			return ($fieldAclInfo['PERM_R'] > 0 || $fieldAclInfo['PERM_V'] > 0 || $fieldAclInfo['PERM_O'] > 0);
 		} catch (Exception $e) {
 			DBG::log($e);
@@ -372,7 +372,7 @@ class AntAclBase extends Core_AclBase {
 			if ('A_RECORD_UPDATE_AUTHOR' === $fieldName) return true;
 			if ($this->getPrimaryKeyField() === $fieldName) return true;
 			$fieldAclInfo = $this->getAclInfo($fieldName);
-			DBG::log([$fieldAclInfo, 'V' => ($fieldAclInfo['PERM_V'] > 0), 'R'=>($fieldAclInfo['PERM_R'] > 0 && $this->canReadRecord($object)), 'O'=>($fieldAclInfo['PERM_O'] > 0 && $this->canReadRecord($object))], 'array', "AntAclBase: canWriteObjectField({$fieldName})...");
+			// DBG::log([$fieldAclInfo, 'V' => ($fieldAclInfo['PERM_V'] > 0), 'R'=>($fieldAclInfo['PERM_R'] > 0 && $this->canReadRecord($object)), 'O'=>($fieldAclInfo['PERM_O'] > 0 && $this->canReadRecord($object))], 'array', "AntAclBase: canWriteObjectField({$fieldName})...");
 			if ($fieldAclInfo['PERM_V'] > 0) return true;
 			if ($fieldAclInfo['PERM_R'] > 0 && $this->canReadRecord($object)) return true;
 			if ($fieldAclInfo['PERM_O'] > 0 && $this->canReadRecord($object)) return true;
@@ -384,7 +384,7 @@ class AntAclBase extends Core_AclBase {
 	public function canWriteField($fieldName) {
 		try {
 			$fieldAclInfo = $this->getAclInfo($fieldName);
-			DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
+			// DBG::log($fieldAclInfo, 'array', "AntAclBase: canReadField({$fieldName})...");
 			if ($fieldAclInfo['PERM_W'] > 0 || $fieldAclInfo['PERM_S'] > 0) return true;
 		} catch (Exception $e) {
 			DBG::log($e);
@@ -394,7 +394,7 @@ class AntAclBase extends Core_AclBase {
 	public function canWriteObjectField($fieldName, $record) {
 		try {
 			$fieldAclInfo = $this->getAclInfo($fieldName);
-			DBG::log($fieldAclInfo, 'array', "AntAclBase: canWriteObjectField({$fieldName})...");
+			// DBG::log($fieldAclInfo, 'array', "AntAclBase: canWriteObjectField({$fieldName})...");
 			DBG::log([$fieldAclInfo, 'S' => $fieldAclInfo['PERM_S'] > 0, 'W'=>$fieldAclInfo['PERM_W'], 'canWrite'=>$this->canWriteRecord($record), $record], 'array', "AntAclBase: canWriteObjectField({$fieldName})...");
 			if ($fieldAclInfo['PERM_S'] > 0) return true;
 			if ($fieldAclInfo['PERM_W'] > 0 && $this->canWriteRecord($record)) return true;
@@ -408,7 +408,7 @@ class AntAclBase extends Core_AclBase {
 		if (!array_key_exists($this->getID(), $_aclInfo)) {
 			$_aclInfo[ $this->getID() ] = [];
 			$fieldsConfig = User::getAcl()->getPermsForTable($this->getID()); // @returns [ permInfo group by ID_CELL ]; permInfo = [ ID_CELL, CELL_NAME, CELL_LABEL, SORT_PRIO, PERM_R, PERM_W, PERM_... ]
-			DBG::log($fieldsConfig, 'array', "AntAclBase: User::getAcl()->getPermsForTable(".$this->getID().");");
+			// DBG::log($fieldsConfig, 'array', "AntAclBase: User::getAcl()->getPermsForTable(".$this->getID().");");
 			// $this->initFieldsFromConfig($fieldsConfig);
 			$permCols = [ 'PERM_R', 'PERM_W', 'PERM_X', 'PERM_C', 'PERM_S', 'PERM_O', 'PERM_V', 'PERM_E' ];
 			foreach ($fieldsConfig as $row) {