Files
wp-multisite-waas/inc/functions/email.php
2025-02-08 13:57:32 -07:00

174 lines
3.4 KiB
PHP

<?php
/**
* Email Functions
*
* @package WP_Ultimo\Functions
* @since 2.0.0
*/
// Exit if accessed directly
defined('ABSPATH') || exit;
use WP_Ultimo\Managers\Email_Manager;
use WP_Ultimo\Models\Email;
use WP_Ultimo\Helpers\Sender;
/**
* Returns a email.
*
* @since 2.0.0
*
* @param int $email_id The id of the email. This is not the user ID.
* @return Email|false
*/
function wu_get_email($email_id) {
return Email::get_by_id($email_id);
}
/**
* Returns a single email defined by a particular column and value.
*
* @since 2.0.0
*
* @param string $column The column name.
* @param mixed $value The column value.
* @return Email|false
*/
function wu_get_email_by($column, $value) {
return Email::get_by($column, $value);
}
/**
* Queries emails.
*
* @since 2.0.0
*
* @param array $query Query arguments.
* @return Email[]
*/
function wu_get_emails($query = []) {
$query['type__in'] = ['system_email'];
if (wu_get_isset($query, 'event')) {
$query['meta_query'] = [
'event_query' => [
'key' => 'wu_system_email_event',
'value' => wu_get_isset($query, 'event'),
],
];
}
return Email::query($query);
}
/**
* Get all saved system email.
*
* @since 2.0.0
*
* @return array With all system emails.
*/
function wu_get_all_system_emails() {
return Email::query(
[
'status__in' => ['draft', 'publish'],
'type__in' => ['system_email'],
]
);
}
/**
* Get a single or all default registered system emails.
*
* @since 2.0.0
*
* @param string $slug Default system email slug.
* @return array All default system emails.
*/
function wu_get_default_system_emails($slug = '') {
return Email_Manager::get_instance()->get_default_system_emails($slug);
}
/**
* Create a single default system email.
*
* @since 2.0.0
*
* @param string $slug Default system email slug to be create.
* @return array
*/
function wu_create_default_system_email($slug) {
$args = wu_get_default_system_emails($slug);
return Email_Manager::get_instance()->create_system_email($args);
}
/**
* Send an email to one or more users.
*
* @since 2.0.0
*
* @param array $from From whom will be send this mail.
* @param mixed $to To who this email is.
* @param array $args With content, subject and other arguments, has shortcodes, mail type.
* @return array
*/
function wu_send_mail($from = [], $to = [], $args = []) {
return Sender::send_mail($from, $to, $args);
}
/**
* Returns email-like strings.
*
* E.g.: Robert Smith <robert@rs.org>
*
* @since 2.0.0
*
* @param string $email The email address.
* @param false|string $name The customer/user display name.
* @return string
*/
function wu_format_email_string($email, $name = false) {
return $name ? sprintf('%s <%s>', $name, $email) : $email;
}
/**
* Creates a new email.
*
* Check the wp_parse_args below to see what parameters are necessary.
*
* @since 2.0.0
*
* @param array $email_data Email attributes.
* @return \WP_Error|Email
*/
function wu_create_email($email_data) {
$email_data = wp_parse_args(
$email_data,
[
'type' => 'system_email',
'event' => 'Laborum consectetur',
'title' => 'Lorem Ipsum',
'slug' => 'lorem-ipsum',
'target' => 'admin',
'date_created' => wu_get_current_time('mysql', true),
'date_modified' => wu_get_current_time('mysql', true),
]
);
$email = new Email($email_data);
$saved = $email->save();
return is_wp_error($saved) ? $saved : $email;
}