OptionValue - Use DB defaults instead of setting them in BAO::add
authorColeman Watts <coleman@civicrm.org>
Sat, 25 Apr 2020 13:22:21 +0000 (09:22 -0400)
committerColeman Watts <coleman@civicrm.org>
Sat, 25 Apr 2020 13:22:21 +0000 (09:22 -0400)
Of the 4 defaults being set in the DAO, 3 already had db defaults; I added DEFAULT NULL for the last.

CRM/Core/BAO/OptionValue.php
CRM/Core/DAO/OptionValue.php
CRM/Upgrade/Incremental/sql/5.26.alpha1.mysql.tpl
xml/schema/Core/OptionValue.xml

index 0cbb6177ee41594efe6c73f090989af972233655..8b8f6693895f15c8fdd3cf74872eefd655a786d2 100644 (file)
@@ -149,19 +149,9 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
       CRM_Core_Error::deprecatedFunctionWarning('$params[\'id\'] should be set, $ids is deprecated');
     }
     $id = $params['id'] ?? $ids['optionValue'] ?? NULL;
-    // CRM-10921: do not reset attributes to default if this is an update
-    //@todo consider if defaults are being set in the right place. 'dumb' defaults like
-    // these would be usefully set @ the api layer so they are visible to api users
-    // complex defaults like the domain id below would make sense in the setDefauls function
-    // but unclear what other ways this function is being used
-    if (!$id) {
-      $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE);
-      $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE);
-      $params['is_optgroup'] = CRM_Utils_Array::value('is_optgroup', $params, FALSE);
-      $params['filter'] = CRM_Utils_Array::value('filter', $params, FALSE);
-    }
+
     // Update custom field data to reflect the new value
-    elseif (isset($params['value'])) {
+    if ($id && isset($params['value'])) {
       CRM_Core_BAO_CustomOption::updateValue($id, $params['value']);
     }
 
index fe2c9c4fc89cb9cdb1ad119ae59b79dbee5851ab..279f18540ea572fc26463fd8b27dfc3b67801183 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/OptionValue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c58b4d38fe97741293f8bc5ae5b64e98)
+ * (GenCodeChecksum:7aa11987c26800632c3798b4cfce95c1)
  */
 
 /**
@@ -281,6 +281,7 @@ class CRM_Core_DAO_OptionValue extends CRM_Core_DAO {
           'title' => ts('Filter'),
           'description' => ts('Bitwise logic can be used to create subsets of options within an option_group for different uses.'),
           'where' => 'civicrm_option_value.filter',
+          'default' => 'NULL',
           'table_name' => 'civicrm_option_value',
           'entity' => 'OptionValue',
           'bao' => 'CRM_Core_BAO_OptionValue',
index 9a3558985d8539a1795881b7c419e4bbbc707bee..0307d4263c8c4b40502bced11c0291dd370f9ec2 100644 (file)
@@ -1,5 +1,7 @@
 {* file to handle db changes in 5.26.alpha1 during upgrade *}
 
+ALTER TABLE civicrm_option_value MODIFY COLUMN `filter` int unsigned DEFAULT NULL COMMENT 'Bitwise logic can be used to create subsets of options within an option_group for different uses.';
+
 UPDATE civicrm_contact SET is_deceased = 0 WHERE is_deceased IS NULL;
 ALTER TABLE civicrm_contact MODIFY COLUMN is_deceased TINYINT NOT NULL DEFAULT 0;
 
index c8b7b3a2a4943fd604d4934660c91e908305893c..f3a767d0645a445a4f519db3fddac5b60fc69734 100644 (file)
@@ -82,6 +82,7 @@
   <field>
     <name>filter</name>
     <type>int unsigned</type>
+    <default>NULL</default>
     <comment>Bitwise logic can be used to create subsets of options within an option_group for different uses.</comment>
     <add>1.5</add>
   </field>