Skip to content
Snippets Groups Projects
Commit a8b07502 authored by colemanw's avatar colemanw
Browse files

Refactor from_email_address to SiteEmailAddress API.

Replaced legacy "from_email_address" option group references with the new API.
parent 9d0c4cac
Branches
Tags
No related merge requests found
......@@ -192,19 +192,18 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain {
* @throws \CRM_Core_Exception
*/
public static function getNameAndEmail($skipFatal = FALSE, $returnString = FALSE) {
$fromEmailAddress = CRM_Core_OptionGroup::values('from_email_address', NULL, NULL, NULL, ' AND is_default = 1');
$fromEmailAddress = \Civi\Api4\SiteEmailAddress::get(FALSE)
->addSelect('display_name', 'email')
->addWhere('domain_id', '=', 'current_domain')
->addWhere('is_default', '=', TRUE)
->addWhere('is_active', '=', TRUE)
->execute()->first();
if (!empty($fromEmailAddress)) {
if ($returnString) {
// Return a string like: "Demonstrators Anonymous" <info@example.org>
return $fromEmailAddress;
return [CRM_Utils_Mail::formatFromAddress($fromEmailAddress)];
}
foreach ($fromEmailAddress as $key => $value) {
$email = CRM_Utils_Mail::pluckEmailFromHeader($value);
$fromArray = explode('"', $value);
$fromName = $fromArray[1] ?? NULL;
break;
}
return [$fromName, $email];
return [$fromEmailAddress['display_name'], $fromEmailAddress['email']];
}
if ($skipFatal) {
......@@ -220,15 +219,11 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain {
* Get the domain email in a format suitable for using as the from address.
*
* @return string
* E.g. '"Demonstrators Anonymous" <info@example.org>'
* @throws \CRM_Core_Exception
*/
public static function getFromEmail(): string {
$email = CRM_Core_OptionGroup::values('from_email_address', NULL, NULL, NULL, ' AND is_default = 1');
$email = current($email);
if (!$email) {
throw new CRM_Core_Exception(self::getMissingDomainFromEmailMessage());
}
return $email;
return self::getNameAndEmail(FALSE, TRUE)[0];
}
/**
......
......@@ -288,9 +288,14 @@ AND reset_date IS NULL
*/
public static function domainEmails() {
$domainEmails = [];
$domainFrom = (array) CRM_Core_OptionGroup::values('from_email_address');
foreach (array_keys($domainFrom) as $k) {
$domainEmail = $domainFrom[$k];
$domainFrom = \Civi\Api4\SiteEmailAddress::get(FALSE)
->addSelect('display_name', 'email')
->addWhere('domain_id', '=', 'current_domain')
->addWhere('is_active', '=', TRUE)
->addOrderBy('display_name')
->execute();
foreach ($domainFrom as $address) {
$domainEmail = CRM_Utils_Mail::formatFromAddress($address);
$domainEmails[$domainEmail] = htmlspecialchars($domainEmail);
}
return $domainEmails;
......
......@@ -649,12 +649,16 @@ class CRM_Utils_Mail {
* If it's numeric, look up the display name and email of the corresponding
* contact ID in RFC822 format.
*
* @param string $from
* @param string|array $from
* civicrm_email.id or formatted "From address", eg. 12 or "Fred Bloggs" <fred@example.org>
* or array containing 'display_name' and 'email' keys.
* @return string
* The RFC822-formatted email header (display name + address)
*/
public static function formatFromAddress($from) {
if (is_array($from)) {
return "\"{$from['display_name']}\" <{$from['email']}>";
}
if (is_numeric($from)) {
$result = civicrm_api3('Email', 'get', [
'id' => $from,
......
......@@ -31,14 +31,14 @@ SELECT @locBlockId := id from civicrm_loc_block where phone_id = @phoneId AND em
SELECT @domainID := id FROM civicrm_domain where name = 'Second Domain';
SELECT @option_group_id_mail_approval_status := max(id) from civicrm_option_group where name = 'mail_approval_status';
SELECT @option_group_id_fma := max(id) from civicrm_option_group where name = 'from_email_address';
SELECT @mailCompId := max(id) FROM civicrm_component where name = 'CiviMail';
INSERT INTO civicrm_site_email_address (display_name, email, is_default, description, domain_id)
values ('FIXME', '<info@EXAMPLE.ORG>', '1', 'Default domain email address and from name.', @domainID);
INSERT INTO
`civicrm_option_value` (`option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `domain_id`, `visibility_id`)
VALUES
-- from email address.
(@option_group_id_fma, '"FIXME" <info@EXAMPLE.ORG>', '1', '"FIXME" <info@EXAMPLE.ORG>', NULL, 0, 1, 1, 'Default domain email address and from name.', 0, 0, 1, NULL, @domainID, NULL ),
-- Mail Approval Status Preferences
(@option_group_id_mail_approval_status, 'Approved' , 1, 'Approved', NULL, 0, 1, 1, NULL, 0, 1, 1, @mailCompId, @domainID, NULL),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment