Piotr Labudda преди 8 години
родител
ревизия
ad74bc402c
променени са 2 файла, в които са добавени 10 реда и са изтрити 5 реда
  1. 6 1
      SE/se-lib/RefConfig.php
  2. 4 4
      SE/se-lib/Route/Storage/AclReinstall.php

+ 6 - 1
SE/se-lib/RefConfig.php

@@ -44,9 +44,14 @@ class RefConfig {
 		SchemaVersionUpgrade::upgradeSchema();
 
 		$rootObjectNamespace = ACL::getBaseNamespace($rootObjectNamespace);
+
+		$rootAcl = ACL::getAclByNamespace($rootObjectNamespace);
+		if (!($rootAcl instanceof AntAclBase)) throw new Exception("Ref allowed only for AntAcl objects");
+		// $fieldInfo = $rootAcl->_getField($childName); // throws Exception if field not exists
+		$childFieldXsdType = $rootAcl->getXsdFieldType($childName); // throws Exception if field not exists
+
 		if (!$childNamespace && false !== strpos($childName, '__x3A__') && false !== strpos($childName, ':')) $childNamespace = Api_WfsNs::namespaceFromTypeName($childName);
 		if (!$childNamespace) {
-			$rootAcl = ACL::getAclByNamespace($rootObjectNamespace);
 			$childXsdType = $rootAcl->getXsdFieldType($childName);
 			list($typePrefix, $childTypeName) = explode(':', $childXsdType, 2);
 			$childNamespace = Api_WfsNs::namespaceFromTypeName($childTypeName);

+ 4 - 4
SE/se-lib/Route/Storage/AclReinstall.php

@@ -324,11 +324,11 @@ class Route_Storage_AclReinstall extends RouteBase {
 		}
 
 		if ('AntAcl' === $item['_type']) { // fix ref tables by appInfo
-			$refFields = array_filter($item['field'], function ($field) {
-				return ('ref:' === substr($field['xsdType'], 0, 4));
+			$activeRefFields = array_filter($item['field'], function ($field) {
+				return ($field['isActive'] && 'ref:' === substr($field['xsdType'], 0, 4));
 			});
-			DBG::log($refFields, 'array', "DBG \$refFields");
-			foreach ($refFields as $field) {
+			DBG::log($activeRefFields, 'array', "DBG \$activeRefFields");
+			foreach ($activeRefFields as $field) {
 				$typeNewField = Type_Field::build($field);
 				// if (RefConfig::needUpdate($item['namespace'], $oldField['fieldNamespace'], $typeNewField, $typeOldField))
 				try {