Skip to content

Commit

Permalink
Merge pull request #18932 from colemanw/schemaHandler
Browse files Browse the repository at this point in the history
Schema handler fixes
  • Loading branch information
colemanw authored Nov 6, 2020
2 parents 38497b3 + 03e3a32 commit 52bea0d
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 50 deletions.
18 changes: 5 additions & 13 deletions CRM/Core/BAO/CustomField.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,25 +114,17 @@ public static function create($params) {
* @throws \CiviCRM_API3_Exception
*/
public static function bulkSave($bulkParams, $defaults = []) {
$addedColumns = $sql = $tables = $customFields = [];
$addedColumns = $sql = $customFields = [];
foreach ($bulkParams as $index => $fieldParams) {
$params = array_merge($defaults, $fieldParams);
$customField = self::createCustomFieldRecord($params);
$fieldSQL = self::getAlterFieldSQL($customField, empty($params['id']) ? 'add' : 'modify');
if (!isset($params['custom_group_id'])) {
$params['custom_group_id'] = civicrm_api3('CustomField', 'getvalue', ['id' => $customField->id, 'return' => 'custom_group_id']);
}
if (!isset($params['table_name'])) {
if (!isset($tables[$params['custom_group_id']])) {
$tables[$params['custom_group_id']] = civicrm_api3('CustomGroup', 'getvalue', [
'id' => $params['custom_group_id'],
'return' => 'table_name',
]);
}
$params['table_name'] = $tables[$params['custom_group_id']];
}
$sql[$params['table_name']][] = $fieldSQL;
$addedColumns[$params['table_name']][] = $customField->name;
$tableName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customField->custom_group_id, 'table_name');
$sql[$tableName][] = $fieldSQL;
$addedColumns[$tableName][] = $customField->name;
$customFields[$index] = $customField;
}

Expand All @@ -145,7 +137,7 @@ public static function bulkSave($bulkParams, $defaults = []) {
$logging->fixSchemaDifferencesFor($tableName, ['ADD' => $addedColumns[$tableName]]);
}

Civi::service('sql_triggers')->rebuild($params['table_name'], TRUE);
Civi::service('sql_triggers')->rebuild($tableName, TRUE);
}
CRM_Utils_System::flushCache();
foreach ($customFields as $index => $customField) {
Expand Down
37 changes: 0 additions & 37 deletions CRM/Core/BAO/SchemaHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,43 +271,6 @@ public static function buildForeignKeySQL($params, $separator, $prefix, $tableNa
return $sql;
}

/**
* @deprecated
*
* @param array $params
* @param bool $indexExist
* @param bool $triggerRebuild
*
* @return bool
*/
public static function alterFieldSQL($params, $indexExist = FALSE, $triggerRebuild = TRUE) {
CRM_Core_Error::deprecatedFunctionWarning('function no longer in use / supported');
// lets suppress the required flag, since that can cause sql issue
$params['required'] = FALSE;

$sql = self::buildFieldChangeSql($params, $indexExist);

// CRM-7007: do not i18n-rewrite this query
CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, FALSE, FALSE);

$config = CRM_Core_Config::singleton();
if ($config->logging) {
// CRM-16717 not sure why this was originally limited to add.
// For example custom tables can have field length changes - which need to flow through to logging.
// Are there any modifies we DON'T was to call this function for (& shouldn't it be clever enough to cope?)
if ($params['operation'] == 'add' || $params['operation'] == 'modify') {
$logging = new CRM_Logging_Schema();
$logging->fixSchemaDifferencesFor($params['table_name'], [trim(strtoupper($params['operation'])) => [$params['name']]]);
}
}

if ($triggerRebuild) {
Civi::service('sql_triggers')->rebuild($params['table_name'], TRUE);
}

return TRUE;
}

/**
* Delete a CiviCRM-table.
*
Expand Down

0 comments on commit 52bea0d

Please sign in to comment.