diff --git a/CRM/Core/BAO/SchemaHandler.php b/CRM/Core/BAO/SchemaHandler.php index 004907fa1278..0b0ee3b5f985 100644 --- a/CRM/Core/BAO/SchemaHandler.php +++ b/CRM/Core/BAO/SchemaHandler.php @@ -626,7 +626,7 @@ public static function checkFKExists($table_name, $constraint_name) { 2 => [$table_name, 'String'], 3 => [$constraint_name, 'String'], ]; - $dao = CRM_Core_DAO::executeQuery($query, $params); + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); if ($dao->fetch()) { return TRUE; @@ -644,7 +644,7 @@ public static function checkFKExists($table_name, $constraint_name) { */ public static function safeRemoveFK($table_name, $constraint_name) { if (self::checkFKExists($table_name, $constraint_name)) { - CRM_Core_DAO::executeQuery("ALTER TABLE {$table_name} DROP FOREIGN KEY {$constraint_name}", []); + CRM_Core_DAO::executeQuery("ALTER TABLE {$table_name} DROP FOREIGN KEY {$constraint_name}", [], TRUE, NULL, FALSE, FALSE); return TRUE; } return FALSE; diff --git a/CRM/Core/DAO/Dashboard.php b/CRM/Core/DAO/Dashboard.php index 026937454c37..f772fef1082d 100644 --- a/CRM/Core/DAO/Dashboard.php +++ b/CRM/Core/DAO/Dashboard.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Dashboard.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2b085baa3414de05ee5c52a4d7d4f81f) + * (GenCodeChecksum:6fd1bfbecace855a159025ad31e37fb0) */ /** diff --git a/CRM/Upgrade/Incremental/php/FiveEighteen.php b/CRM/Upgrade/Incremental/php/FiveEighteen.php index 5d535d234f46..54af4a96574c 100644 --- a/CRM/Upgrade/Incremental/php/FiveEighteen.php +++ b/CRM/Upgrade/Incremental/php/FiveEighteen.php @@ -79,6 +79,25 @@ public function upgrade_5_18_alpha1($rev) { ['old' => 'is_override', 'new' => 'member_is_override'], ], ]); + $this->addTask('Remove Foreign Key from civicrm_dashboard on domain_id if exists', 'removeDomainIDFK'); + $this->addTask('Remove Index on domain_id that might have been randomly added in the same format as FK', 'dropIndex', 'civicrm_dashboard', 'FK_civicrm_dashboard_domain_id'); + $this->addTask('Re-Create Foreign key between civicrm_dashboard and civicrm_domain correctly', 'recreateDashboardFK'); + } + + public static function removeDomainIDFK() { + CRM_Core_BAO_SchemaHandler::safeRemoveFK('civicrm_dashboard', 'FK_civicrm_dashboard_domain_id'); + return TRUE; + } + + public static function recreateDashboardFK() { + $sql = CRM_Core_BAO_SchemaHandler::buildForeignKeySQL([ + 'fk_table_name' => 'civicrm_domain', + 'fk_field_name' => 'id', + 'name' => 'domain_id', + 'fk_attributes' => ' ON DELETE CASCADE', + ], "\n", " ADD ", 'civicrm_dashboard'); + CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_dashboard " . $sql, [], TRUE, NULL, FALSE, FALSE); + return TRUE; } // public static function taskFoo(CRM_Queue_TaskContext $ctx, ...) { diff --git a/xml/schema/Core/Dashboard.xml b/xml/schema/Core/Dashboard.xml index 41ed11137444..96da590e2838 100644 --- a/xml/schema/Core/Dashboard.xml +++ b/xml/schema/Core/Dashboard.xml @@ -35,6 +35,7 @@