Bläddra i källkod

fixed bug in ACL

Piotr Labudda 8 år sedan
förälder
incheckning
6977c5e12a
1 ändrade filer med 10 tillägg och 31 borttagningar
  1. 10 31
      SE/se-lib/ACL.php

+ 10 - 31
SE/se-lib/ACL.php

@@ -225,16 +225,13 @@ class ACL {
 		if (array_key_exists($cacheKey, $cacheRefTables)) return $cacheRefTables[$cacheKey];
 
 		$rootAcl = self::getAclByNamespace($rootObjectNamespace);
-		$childXsdType = $rootAcl->getXsdFieldType($childName);
-		list($typePrefix, $childNamespace) = explode(':', $childXsdType, 2);
-		DBG::log(['$childXsdType' => $childXsdType, '$typePrefix' => $typePrefix, '$childNamespace' => $childNamespace], 'array', "DBG get ref table ...");
-		switch ($typePrefix) {
-			case 'ref_uri': $childAcl = self::getAclByNamespace($childNamespace); break;
-			case 'ref': $childAcl = self::getAclByTypeName($childNamespace); break;
-			default: throw new Exception("Expected ref type for field '{$childName}' in object '{$rootObjectNamespace}'");
-		}
 
-		$refConfig = RefConfig::fetch($rootObjectNamespace, $childName, $childNamespace);
+		$refConfig = RefConfig::fetch($rootObjectNamespace, $childName);
+
+		// TODO: CASE: Obj: A, B not installed, Ref: A->B; Install A / cannot install Ref A->B / require install B first / then go back and reinstall A
+		// TODO: What if primaryKey type != int ?
+		// TODO: require 2 pass for Install every object - first install all base Obj, then reinstall fixes Ref config
+		// \--- TODO: or split Reinstall obj action to: 1. Reinstall base Obj and 2. Install Ref tables
 
 		if ('view' === $refConfig->source) {
 			$refTableName = "CRM__#REF_TABLE__{$refConfig->id}_VIEW"; // view created by ACL::generateRefSelectSqlByFlatRelationCache
@@ -243,7 +240,7 @@ class ACL {
 				$fieldInfo = $rootAcl->_getField($childName);
 				$typeField = Type_Field::build($fieldInfo);
 				RefConfig::installRefView($rootObjectNamespace, $childName, $typeField, $refConfig);
-				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName, $childNamespace);
+				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName);
 			}
 		} else if ('backRef' === $refConfig->source) {
 			$refTableName = "CRM__#REF_TABLE__{$refConfig->id}_VIEW"; // view created by ACL::generateRefSelectSqlByFlatRelationCache
@@ -253,13 +250,13 @@ class ACL {
 				// $fieldInfo = $rootAcl->_getField($childName);
 				// $typeField = Type_Field::build($fieldInfo);
 				// RefConfig::installRefView($rootObjectNamespace, $childName, $typeField, $refConfig);
-				// $refConfig = RefConfig::fetch($rootObjectNamespace, $childName, $childNamespace);
+				// $refConfig = RefConfig::fetch($rootObjectNamespace, $childName);
 			}
 		} else if ('table' === $refConfig->source) {
 			$refTableName = "CRM__#REF_TABLE__{$refConfig->id}";
 			if ('WAITING' == $refConfig->status) {
 				RefConfig::createRefTable($rootObjectNamespace, $childName);
-				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName, $childNamespace);
+				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName);
 			}
 		} else {
 			throw new Exception("Not Implemented ref SOURCE = '{$refConfig->source}'");
@@ -272,7 +269,7 @@ class ACL {
 		if ($refConfig->version < RefConfig::$REF_TABLE_VERSION) {
 			if (1 == $refConfig->version) {
 				RefConfig::createRefTable($rootObjectNamespace, $childName);
-				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName, $childNamespace);
+				$refConfig = RefConfig::fetch($rootObjectNamespace, $childName);
 			}
 		}
 		if ($refConfig->version < RefConfig::$REF_TABLE_VERSION) throw new Exception("TODO: ref table {$refConfig->id} require upgrade - field '{$childName}' in object '{$rootObjectNamespace}'");
@@ -426,24 +423,6 @@ class ACL {
 		DBG::log($sql, 'sql', "generateRefSelectSqlByFlatRelationCache");
 		return $sql;
 	}
-	public static function upgradeRefConfigFrom1to2($refInfo) {
-		if (1 == $refInfo['VERSION']) {
-			if ('table' === $refInfo['SOURCE'] && 'NORMAL' == $refInfo['A_STATUS']) {
-				$refTableName = "CRM__#REF_TABLE__{$refInfo['ID']}";
-				try {
-					DB::getPDO()->execSql(" CREATE INDEX `TRANSACTION_ID` ON `{$refTableName}` (`TRANSACTION_ID`) ");
-				} catch (Exception $e) {
-					DBG::log($e);
-				}
-			}
-			$affected = DB::getPDO()->update("CRM_REF_CONFIG", 'ID', $refInfo['ID'], [
-				'VERSION' => 2
-			]);
-		}
-		return array_merge($refInfo, [
-			'VERSION' => 2
-		]);
-	}
 	public static function getBackRefList($namespace) {
 		if (!$namespace) throw new Exception("Missing namespace");
 		$nsParts = explode('/', $namespace);