Bulk update on activities doesn't work incase checkbox custom field
Replicate:
- Create a custom field against the activity of type checkbox
- Create a profile and include the checkbox field created at step 1
- Find Activities
- Select activities to update and choose update multiple activities
- Select the profile created from step 2
- Click 'update activities' (make no changes)
Could replicate on https://dmaster.demo.civicrm.org/
Backtrace
$Fatal Error Details = array:3 [
"message" => "'' is not a valid option for field custom_52"
"code" => null
"exception" => CiviCRM_API3_Exception {#997
-extraParams: array:6 [
"error_field" => "custom_52"
"error_code" => 2001
"entity" => "Activity"
"action" => "create"
"is_error" => 1
"error_message" => "'' is not a valid option for field custom_52"
]
#message: "'' is not a valid option for field custom_52"
#code: 0
#file: "/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/api/api.php"
#line: 133
trace: {
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/api/api.php:133 {
› if (is_array($result) && !empty($result['is_error'])) {
› throw new CiviCRM_API3_Exception($result['error_message'], CRM_Utils_Array::value('error_code', $result, 'undefined'), $result);
› }
}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Activity/Form/Task/Batch.php:234 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/Form.php:526 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/StateMachine.php:144 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Next.php:43 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php:203 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php:103 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/Controller.php:347 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/Invoke.php:313 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/Invoke.php:69 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/CRM/Core/Invoke.php:36 { …}
/Users/pradeep/Sites/drupal7/sites/all/modules/civicrm/drupal/civicrm.module:458 { …}
/Users/pradeep/Sites/drupal7/includes/menu.inc:527 { …}
/Users/pradeep/Sites/drupal7/index.php:21 { …}
}
}
]
Quick Fix
diff --git a/CRM/Activity/Form/Task/Batch.php b/CRM/Activity/Form/Task/Batch.php
index cfbe6ff238..ef5b8a7c16 100644
--- a/CRM/Activity/Form/Task/Batch.php
+++ b/CRM/Activity/Form/Task/Batch.php
@@ -231,7 +231,7 @@ class CRM_Activity_Form_Task_Batch extends CRM_Activity_Form_Task {
$value['subject'] = $value['activity_subject'];
}
- $activityId = civicrm_api3('activity', 'create', $value);
+ $activityId = CRM_Activity_BAO_Activity::create($value)->id;
// @todo this would be done by the api call above if the parames were passed through.
// @todo extract submit functions &
@@ -240,7 +240,7 @@ class CRM_Activity_Form_Task_Batch extends CRM_Activity_Form_Task {
if (!empty($value['custom']) &&
is_array($value['custom'])
) {
- CRM_Core_BAO_CustomValueTable::store($value['custom'], 'civicrm_activity', $activityId['id']);
+ CRM_Core_BAO_CustomValueTable::store($value['custom'], 'civicrm_activity', $activityId);
}
}
CRM_Core_Session::setStatus("", ts("Updates Saved"), "success");