|
Server : LiteSpeed System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : rbnsfqys ( 805) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/rbnsfqys/public_html/wp-content/plugins/latepoint/lib/helpers/ |
<?php
class OsEmailHelper{
public static function get_default_headers(){
$headers = [];
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'From: '.get_bloginfo('name').' <'.get_bloginfo('admin_email').'>';
/**
* Default headers for sending email
*
* @since 4.7.0
* @hook latepoint_default_email_headers
*
* @param {array} $headers The array of headers for email
*
* @returns {array} The array of headers for email
*/
return apply_filters('latepoint_default_email_headers', $headers);
}
public static function get_email_layout($insert_content = false): string{
require_once ABSPATH . 'wp-admin/includes/file.php';
if ( ! WP_Filesystem() ) {
OsDebugHelper::log( __( 'Failed to initialise WC_Filesystem API while trying to show notification templates.', 'latepoint' ) );
return '';
}
global $wp_filesystem;
$html = OsSettingsHelper::get_settings_value('email_layout_template', $wp_filesystem->get_contents(LATEPOINT_VIEWS_ABSPATH.'mailers/layouts/default.html'));
if($insert_content){
$html = str_replace('{{content}}', $insert_content, $html);
}
return $html;
}
/**
* @param array $result
*
* @return OsActivityModel
*/
public static function log_email( array $result ) {
if ( empty( $result['processed_datetime'] ) ) {
$result['processed_datetime'] = OsTimeHelper::now_datetime_in_db_format();
}
$data = [
'code' => 'email_sent',
'description' => wp_json_encode($result)
];
if(!empty($result['extra_data']['activity_data'])) $data = array_merge($data, $result['extra_data']['activity_data']);
$activity = OsActivitiesHelper::create_activity( $data );
return $activity;
}
/**
*
* Sends email using WordPress wp_mail function
*
* @param string $to Email address(es) of the receiver
* @param string $subject Subject of the email
* @param string $content Contents of the email
* @param array $headers
* @return array
*/
public static function send_email(string $to, string $subject, string $content, array $headers = [], $activity_data = [], $attachments = []): array{
$processor_code = 'wp_mail';
$result = [
'status' => LATEPOINT_STATUS_ERROR,
'message' => __('No email processor is selected.', 'latepoint'),
'to' => $to,
'content' => $content,
'processor_code' => $processor_code,
'processor_name' => 'WordPress Mailer',
'processed_datetime' => '',
'extra_data' => [
'activity_data' => $activity_data
],
'errors' => [],
];
if(empty($to)) $errors[] = __('Email address of the recipient can not be blank', 'latepoint');
if(empty($subject)) $errors[] = __('Subject of the email can not be blank', 'latepoint');
if(empty($content)) $errors[] = __('Content of the email can not be blank', 'latepoint');
if(!empty($errors)){
$result['status'] = LATEPOINT_STATUS_ERROR;
$result['message'] = implode(', ', $errors);
$result['errors'] = $errors;
return $result;
}
if(OsSettingsHelper::is_email_allowed() && OsNotificationsHelper::is_notification_type_enabled('email')) {
if(OsNotificationsHelper::get_selected_processor_code_by_type('email') == $processor_code){
if(wp_mail($to, $subject, $content, $headers, $attachments)){
$result['status'] = LATEPOINT_STATUS_SUCCESS;
$result['message'] = __('Email was sent successfully', 'latepoint');
$result['processed_datetime'] = OsTimeHelper::now_datetime_in_db_format();
$result['extra_data']['subject'] = $subject;
}else{
$result['status'] = LATEPOINT_STATUS_ERROR;
$result['errors'] = __('Error sending email', 'latepoint');
$result['message'] = __('Error sending email, email address invalid or email processor not setup', 'latepoint');
}
}
/**
* Result of sending an email
*
* @since 4.7.0
* @hook latepoint_notifications_send_email
*
* @param {array} $result The array of data describing the result of operation
* @param {string} $to
* @param {string} $subject
* @param {string} $content
* @param {array} $headers
*
* @returns {array} The array of data describing the result of operation
*/
$result = apply_filters('latepoint_notifications_send_email', $result, $to, $subject, $content, $headers);
}else{
$result['message'] = __('Email notifications are disabled. Enable email processor in Settings - Notifications.', 'latepoint');
$result['errors'][] = __('Email notifications are disabled. Enable email processor in Settings - Notifications.', 'latepoint');
}
OsEmailHelper::log_email($result);
return $result;
}
}