Campaign - Make name index unique
authorColeman Watts <coleman@civicrm.org>
Mon, 3 Apr 2023 21:20:29 +0000 (17:20 -0400)
committerColeman Watts <coleman@civicrm.org>
Tue, 4 Apr 2023 00:21:45 +0000 (20:21 -0400)
CRM/Campaign/DAO/Campaign.php
CRM/Upgrade/Incremental/php/FiveSixtyOne.php
CRM/Upgrade/Incremental/sql/5.61.alpha1.mysql.tpl
xml/schema/Campaign/Campaign.xml

index be2ef3830db9540a8c09106cd69d63a59668b861..758be195be595b404f6005afc28d3a9366eb29ec 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Campaign/Campaign.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7c80d509cf26b13e8284140579330818)
+ * (GenCodeChecksum:75a9a33157dcd3411e3072a2b3740b0f)
  */
 
 /**
@@ -753,13 +753,14 @@ class CRM_Campaign_DAO_Campaign extends CRM_Core_DAO {
    */
   public static function indices($localize = TRUE) {
     $indices = [
-      'UI_campaign_name' => [
-        'name' => 'UI_campaign_name',
+      'UI_name' => [
+        'name' => 'UI_name',
         'field' => [
           0 => 'name',
         ],
         'localizable' => FALSE,
-        'sig' => 'civicrm_campaign::0::name',
+        'unique' => TRUE,
+        'sig' => 'civicrm_campaign::1::name',
       ],
       'UI_campaign_type_id' => [
         'name' => 'UI_campaign_type_id',
index 88d730e41b60642e3f428e09cca0aecbe12b4b3b..c9e59195a3c04781e8da8531a44be4cfb4c5d641 100644 (file)
@@ -66,6 +66,9 @@ class CRM_Upgrade_Incremental_php_FiveSixtyOne extends CRM_Upgrade_Incremental_B
     $this->addTask(ts('Create index %1', [1 => 'civicrm_cache.UI_group_name_path']), 'addIndex', 'civicrm_cache', [['group_name', 'path']], 'UI');
     $this->addTask(ts('Create index %1', [1 => 'civicrm_cache.index_expired_date']), 'addIndex', 'civicrm_cache', [['expired_date']], 'index');
     $this->addTask(ts('Update Saved Mapping for contribution import', [1 => $rev]), 'convertMappingFieldsToApi4StyleNames', $rev);
+
+    $this->addTask(ts('Drop index %1', [1 => 'civicrm_campaign.UI_campaign_name']), 'dropIndex', 'civicrm_campaign', 'UI_campaign_name');
+    $this->addTask(ts('Create index %1', [1 => 'civicrm_campaign.UI_name']), 'addIndex', 'civicrm_campaign', 'name', 'UI');
   }
 
   /**
index 2d37c602f1007f9ee199817e7a290196a9285e96..ce9d28c8a8fc5e7d73d41cce0c5f064580c675f6 100644 (file)
@@ -7,4 +7,9 @@ UPDATE civicrm_payment_processor
 UPDATE civicrm_payment_processor
   SET {localize field="title"}title = name{/localize};
 
+{* https://github.com/civicrm/civicrm-core/pull/25994 *}
+UPDATE civicrm_campaign c1, civicrm_campaign c2
+  SET c2.name = CONCAT(c2.name, '_', c2.id)
+  WHERE c2.name = c1.name AND c2.id > c1.id;
+
 UPDATE civicrm_navigation SET url = 'civicrm/import/contribution?reset=1' WHERE url = 'civicrm/contribute/import?reset=1';
index 3ef4f4e60b3b7ca5f4d4ae4ef583acfed32d9bc0..6efbca7fd7fa25129538e20f6f1592b2375411d7 100644 (file)
     <add>3.3</add>
   </field>
   <index>
-    <name>UI_campaign_name</name>
+    <name>UI_name</name>
     <fieldName>name</fieldName>
-    <add>5.34</add>
+    <unique>true</unique>
+    <add>5.61</add>
   </index>
   <field>
     <name>title</name>