CRM-13945 - Editing website field via profile creates new entry
[civicrm-core.git] / CRM / Core / BAO / OptionValue.php
index bd92c86d5230ad5b309e4a3edc68819496d7c386..97da09c945ee9fa8a38f681e8365ec8c39e19a7e 100644 (file)
@@ -195,8 +195,19 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
       $p = array(1 => array($params['option_group_id'], 'Integer'));
       CRM_Core_DAO::executeQuery($query, $p);
     }
+
+    // CRM-13814 : evalute option group id
+    if (!array_key_exists('option_group_id', $params) && !empty($ids['optionValue'])) {
+      $groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionValue',
+        $ids['optionValue'], 'option_group_id', 'id'
+      );
+    }
+    else {
+      $groupId = $params['option_group_id'];
+    }
+
     $groupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup',
-      $params['option_group_id'], 'name', 'id'
+      $groupId, 'name', 'id'
     );
     if (in_array($groupName, CRM_Core_OptionGroup::$_domainIDGroups)) {
       $optionValue->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID());
@@ -290,6 +301,7 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
     $value = $optionValue->value;
 
     // get the proper group name & affected field name
+    // todo: this may no longer be needed for individuals - check inputs
     $individuals = array(
       'gender' => 'gender_id',
       'individual_prefix' => 'prefix_id',