+--------------------------------------------------------------------+
| CiviCRM version 5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2019 |
+ | Copyright CiviCRM LLC (c) 2004-2020 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2019
+ * @copyright CiviCRM LLC (c) 2004-2020
*/
/**
// make this form an upload since we dont know if the custom data injected dynamically
// is of type file etc
$this->addButtons([
- [
- 'type' => 'upload',
- 'name' => ts('Save'),
- 'isDefault' => TRUE,
- ],
- [
- 'type' => 'cancel',
- 'name' => ts('Cancel'),
- ],
- ]
- );
+ [
+ 'type' => 'upload',
+ 'name' => ts('Save'),
+ 'isDefault' => TRUE,
+ ],
+ [
+ 'type' => 'cancel',
+ 'name' => ts('Cancel'),
+ ],
+ ]);
}
/**
'subject' => $this->_customTitle . " : change data",
'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed'),
'target_contact_id' => $this->_contactID,
- 'details' => json_encode($this->_defaults),
+ 'details' => $this->formatCustomDataChangesForDetail($params),
'activity_date_time' => date('YmdHis'),
];
$activity = CRM_Activity_BAO_Activity::create($activityParams);
$transaction->commit();
}
+ /**
+ * Format the custom data changes as [label]: [old value] => [new value]
+ *
+ * @param array $params New custom field values from form
+ *
+ * @return string
+ * @throws \CiviCRM_API3_Exception
+ */
+ public function formatCustomDataChangesForDetail($params) {
+ $formattedDetails = [];
+ foreach ($params as $customField => $newCustomValue) {
+ if (substr($customField, 0, 7) == 'custom_') {
+ if ($this->_defaults[$customField] == $newCustomValue) {
+ // Don't show values that did not change
+ continue;
+ }
+ // We need custom field ID from custom_XX_1
+ list($_, $customFieldId, $_) = explode('_', $customField);
+
+ if (!empty($customFieldId) && is_numeric($customFieldId)) {
+ // Got a custom field ID
+ $label = civicrm_api3('CustomField', 'getvalue', ['id' => $customFieldId, 'return' => 'label']);
+ $oldValue = civicrm_api3('CustomValue', 'getdisplayvalue', [
+ 'custom_field_id' => $customFieldId,
+ 'entity_id' => $this->_entityID,
+ 'custom_field_value' => $this->_defaults[$customField],
+ ]);
+ $oldValue = $oldValue['values'][$customFieldId]['display'];
+ $newValue = civicrm_api3('CustomValue', 'getdisplayvalue', [
+ 'custom_field_id' => $customFieldId,
+ 'entity_id' => $this->_entityID,
+ 'custom_field_value' => $newCustomValue,
+ ]);
+ $newValue = $newValue['values'][$customFieldId]['display'];
+ $formattedDetails[] = $label . ': ' . $oldValue . ' => ' . $newValue;
+ }
+
+ }
+ }
+
+ return implode('<br/>', $formattedDetails);
+ }
+
}