Further work on soft fail when option value value field doesn't match given data...
authorSeamus Lee <seamuslee001@gmail.com>
Sun, 5 Jun 2016 13:28:34 +0000 (23:28 +1000)
committerSeamus Lee <seamuslee001@gmail.com>
Sat, 10 Sep 2016 21:53:22 +0000 (07:53 +1000)
CRM/Admin/Form/Options.php
CRM/Core/BAO/OptionValue.php
CRM/Upgrade/Incremental/sql/4.7.9.mysql.tpl
CRM/Utils/Type.php

index d157a48634a1d398e1d65d4ffab2225954a13263..6d82d38c075f06ca295cc51a8636160172f9aa25 100644 (file)
@@ -376,6 +376,19 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form {
       }
     }
 
+    $optionGroup = civicrm_api3('OptionGroup', 'get', array(
+      'sequential' => 1,
+      'name' => $self->_gName,
+    ));
+    $dataType = CRM_Core_BAO_OptionGroup::getDataType($optionGroup['id']);
+    if ($dataType) {
+      $validate = CRM_Utils_Type::validate($fields['value'], $dataType, FALSE);
+      if (!$validate) {
+        CRM_Core_Session::setStatus(
+          ts('Data Type of the value field for this option value does not match ' . $dataType),
+          ts('Value field Data Type mismatch'));
+      }
+    }
     return $errors;
   }
 
index 9041298c6c68c26bef827981431c14f33306448d..a529d1b18dcf01fa95b64f214a6372c247f301bd 100644 (file)
@@ -57,15 +57,6 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
     if (!empty($params['id'])) {
       $ids = array('optionValue' => $params['id']);
     }
-    $dataType = CRM_Core_BAO_OptionGroup::getDataType($params['option_group_id']);
-    if ($dataType) {
-      $validate = CRM_Utils_Type::validate($params['value'], $dataType, FALSE);
-      if(!$validate) {
-        CRM_Core_Session::setStatus(
-          ts('Data Type of the value field for this option value does not match ' . $dataType),
-          ts('Value field Data Type mismatch'));
-      }
-    }
     return CRM_Core_BAO_OptionValue::add($params, $ids);
   }
 
index 3be47b33cb8cb7c58a1467b34defa973c08fc571..d625ae874b3f04d4ffc1ecc921c91159a4557617 100644 (file)
@@ -62,3 +62,7 @@ INSERT INTO
   `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, {localize field='description'}`description`{/localize}, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`)
 VALUES
 (@option_group_id_act, {localize}'{ts escape="sql"}Close Accounting Period{/ts}'{/localize}, @option_group_id_act_val+1, 'Close Accounting Period', NULL, 0, 0, @option_group_id_act_wt+1, {localize}'Close Accounting Period'{/localize}, 0, 1, 1, 2, NULL);
+
+--CRM-
+ALTER TABLE civicrm_option_group
+ADD `data_type` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Data Type of Option Group.';
index e346af5ee2bac1101cb8bf273e3f915a5c8eaea3..9244e8c0dd4966db20131d09131fd7f5e23b2837 100644 (file)
@@ -463,12 +463,12 @@ class CRM_Utils_Type {
    */
   public static function dataTypes() {
     $types = array(
-      'integer',
+      'Integer',
       'String',
-      'date',
-      'time',
+      'Date',
+      'Time',
       'Timestamp',
-      'money',
+      'Money',
       'Email',
     );
     return array_combine($types, $types);