diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index e5c013ddf7fe..f0687c82e7b6 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -176,7 +176,7 @@ public static function create($params) { * Default parameters to be be merged into each of the params. */ public static function bulkSave($bulkParams, $defaults = []) { - $sql = $tables = $customFields = []; + $addedColumns = $sql = $tables = $customFields = []; foreach ($bulkParams as $index => $fieldParams) { $params = array_merge($defaults, $fieldParams); $customField = self::createCustomFieldRecord($params); @@ -194,11 +194,19 @@ public static function bulkSave($bulkParams, $defaults = []) { $params['table_name'] = $tables[$params['custom_group_id']]; } $sql[$params['table_name']][] = $fieldSQL; + $addedColumns[$params['table_name']][] = $customField->name; $customFields[$index] = $customField; } + foreach ($sql as $tableName => $statements) { // CRM-7007: do not i18n-rewrite this query CRM_Core_DAO::executeQuery("ALTER TABLE $tableName " . implode(', ', $statements), [], TRUE, NULL, FALSE, FALSE); + + if (CRM_Core_Config::singleton()->logging) { + $logging = new CRM_Logging_Schema(); + $logging->fixSchemaDifferencesFor($tableName, ['ADD' => $addedColumns[$tableName]]); + } + Civi::service('sql_triggers')->rebuild($params['table_name'], TRUE); } CRM_Utils_System::flushCache();