|
|
@@ -32,7 +32,9 @@ Lib::loadClass('SchemaVersionUpgrade');
|
|
|
|
|
|
class RefConfig {
|
|
|
|
|
|
- static $REF_TABLE_VERSION = 3;
|
|
|
+ // $REF_TABLE_VERSION = 5; // TODO: add unique key to (PRIMARY_KEY, REMOTE_PRIMARY_KEY)
|
|
|
+ static $REF_TABLE_VERSION = 4;
|
|
|
+ // $REF_TABLE_VERSION = 4; // added ref event log table - `CRM__#REF_LOG__*`
|
|
|
|
|
|
static function isActive($objectNamespace, $childTypeName) {
|
|
|
$refInfo = self::fetch($objectNamespace, $childTypeName);
|
|
|
@@ -52,7 +54,7 @@ class RefConfig {
|
|
|
$refConfig = self::fetch($rootObjectNamespace, $childTypeName, $childNamespace);
|
|
|
if ('WAITING' == $refConfig->status || $refConfig->version < self::$REF_TABLE_VERSION) {
|
|
|
$typeField = Type_Field::build($fieldInfo);
|
|
|
- self::update($rootObjectNamespace, $childTypeName, $typeField);
|
|
|
+ self::update($rootObjectNamespace, $childTypeName, $typeField, $refConfig);
|
|
|
$refConfig = self::fetch($rootObjectNamespace, $childTypeName, $childNamespace);
|
|
|
}
|
|
|
|
|
|
@@ -171,6 +173,14 @@ class RefConfig {
|
|
|
$oldRefSource = $refConfig->source;
|
|
|
if ($newRefSource !== $oldRefSource) DBG::log("RefConfig::update Change ref source from '{$oldRefSource}' to '{$newRefSource}'");
|
|
|
// always update ref config at reinstall - drop / create ref tables (table or view)
|
|
|
+
|
|
|
+ if ($refConfig->version < 4) self::installEventLogTable($objectNamespace, $childTypeName, $newField, $refConfig);
|
|
|
+
|
|
|
+ // if ($refConfig->version < 5) {
|
|
|
+ // Lib::loadClass('RefConfig_UpdateToVersion5');
|
|
|
+ // RefConfig_UpdateToVersion4::updateToVersion5($objectNamespace, $childTypeName, $newField, $refConfig);
|
|
|
+ // }
|
|
|
+
|
|
|
switch ($newRefSource) {
|
|
|
case 'table': return self::installRefTable($objectNamespace, $childTypeName, $newField, $refConfig);
|
|
|
case 'view': return self::installRefView($objectNamespace, $childTypeName, $newField, $refConfig);
|
|
|
@@ -191,6 +201,7 @@ class RefConfig {
|
|
|
, `A_STATUS` enum('WAITING', 'NORMAL', 'DELETED') NOT NULL DEFAULT 'WAITING'
|
|
|
, `TRANSACTION_ID` int(11) NOT NULL
|
|
|
, `A_LAST_ACTION_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
+ , UNIQUE KEY `unique_ref` (`PRIMARY_KEY`,`REMOTE_PRIMARY_KEY`)
|
|
|
, KEY `PRIMARY_KEY` (`PRIMARY_KEY`)
|
|
|
, KEY `REMOTE_PRIMARY_KEY` (`REMOTE_PRIMARY_KEY`)
|
|
|
, KEY `TRANSACTION_ID` (`TRANSACTION_ID`)
|
|
|
@@ -454,4 +465,29 @@ class RefConfig {
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
+ static function getRefEventLogTable($objectNamespace, $childTypeName) {
|
|
|
+ $refConfig = self::fetch($objectNamespace, $childTypeName);
|
|
|
+ return "CRM__#REF_LOG__{$refConfig->id}";
|
|
|
+ }
|
|
|
+ static function installEventLogTable($objectNamespace, $childTypeName, Type_Field $newField, Type_RefConfig $refConfig = null) {
|
|
|
+ // $refConfig->id
|
|
|
+ // $refConfig->source
|
|
|
+ // $refConfig->version
|
|
|
+ // $refConfig->tableName
|
|
|
+ $sqlLogTableName = self::getRefEventLogTable($objectNamespace, $childTypeName);
|
|
|
+ DB::getPDO()->execSql("
|
|
|
+ CREATE TABLE IF NOT EXISTS `{$sqlLogTableName}` (
|
|
|
+ `PRIMARY_KEY` int(11) NOT NULL
|
|
|
+ , `REMOTE_PRIMARY_KEY` int(11) NOT NULL
|
|
|
+ , `REMOTE_TYPENAME` varchar(255) NOT NULL DEFAULT ''
|
|
|
+ , `A_STATUS` enum('WAITING', 'NORMAL', 'DELETED') NOT NULL DEFAULT 'WAITING'
|
|
|
+ , `TRANSACTION_ID` int(11) NOT NULL
|
|
|
+ , `A_ACTION_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
+ , KEY `PRIMARY_KEY` (`PRIMARY_KEY`)
|
|
|
+ , KEY `REMOTE_PRIMARY_KEY` (`REMOTE_PRIMARY_KEY`)
|
|
|
+ , KEY `TRANSACTION_ID` (`TRANSACTION_ID`)
|
|
|
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin2 COMMENT='{$objectNamespace} #REF {$childTypeName}';
|
|
|
+ ");
|
|
|
+ }
|
|
|
+
|
|
|
}
|