Skip to content
Snippets Groups Projects
Commit 56e50a8b authored by ayduns's avatar ayduns
Browse files

When syncing to UF record, use API instead of DAO to create email

 - with the addition of a default location in this change, this fixes #1026

Bonus code tidy: if UF email matches the contact primary email, avoid unnecessary update.
If update is needed, use API not direct SQL.
parent 2890c0f9
No related branches found
No related tags found
No related merge requests found
......@@ -431,25 +431,23 @@ AND domain_id = %4
$contactDetails = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactId);
if (trim($contactDetails[1])) {
//update if record is found but different
$emailID = $contactDetails[3];
//update if record is found
$query = "UPDATE civicrm_email
SET email = %1
WHERE id = %2";
$p = [
1 => [$emailAddress, 'String'],
2 => [$emailID, 'Integer'],
];
$dao = CRM_Core_DAO::executeQuery($query, $p);
if (trim($contactDetails[1]) != $emailAddress) {
civicrm_api3('Email', 'create', [
'id' => $emailID,
'email' => $emailAddress,
]);
}
}
else {
//else insert a new email record
$email = new CRM_Core_DAO_Email();
$email->contact_id = $contactId;
$email->is_primary = 1;
$email->email = $emailAddress;
$email->save();
$emailID = $email->id;
$result = civicrm_api3('Email', 'create', [
'contact_id' => $contactId,
'email' => $emailAddress,
'is_primary' => 1,
]);
$emailID = $result->id;
}
CRM_Core_BAO_Log::register($contactId,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment