email_changelog-8.x-1.0-alpha1/modules/email_changelog_civicrm/email_changelog_civicrm.module
modules/email_changelog_civicrm/email_changelog_civicrm.module
<?php
/**
* @file
* Logs changes to civicrm contact emails.
*/
/**
* Implements hook_civicrm_pre().
*/
function email_changelog_civicrm_civicrm_pre($op, $objectName, $id, &$params) {
if ($op == 'edit' && $objectName == 'Email' && $id) {
$result = civicrm_api3('Email', 'get', [
'sequential' => 1,
'id' => $id,
]);
$_SESSION['email_changelog_civicrm'][$id]['email'] = $result['values'][0]['email'];
$_SESSION['email_changelog_civicrm'][$id]['is_primary'] = $result['values'][0]['is_primary'];
}
}
/**
* Implements hook_civicrm_post().
*/
function email_changelog_civicrm_civicrm_post($op, $objectName, $objectId, &$objectRef) {
if ($op == 'edit' && $objectName == 'Email' && isset($_SESSION['email_changelog_civicrm'][$objectId])) {
$reason = [];
$update = FALSE;
if ($_SESSION['email_changelog_civicrm'][$objectId]['email'] != $objectRef->email) {
$update = TRUE;
}
elseif ($_SESSION['email_changelog_civicrm'][$objectId]['is_primary'] != $objectRef->is_primary) {
$update = TRUE;
if ($objectRef->is_primary) {
$reason['message'] = t('%email is now Primary email address', ['%email' => $objectRef->email]);
}
else {
$reason['message'] = t('%email is no longer Primary email address', ['%email' => $objectRef->email]);
}
}
if ($update) {
$uid = CRM_Core_BAO_UFMatch::getUFId($objectRef->contact_id);
$reason['contact_id'] = $objectRef->contact_id;
_email_changelog_log($uid, $objectRef->email, $_SESSION['email_changelog_civicrm'][$objectId]['email'], $reason);
}
unset($_SESSION['email_changelog_civicrm'][$objectId]);
}
}
