Auth direct email or email queue (#6617)

* Auth direct email or email_queue

Authentication email plugin improvement 

* Update email.php
This commit is contained in:
volga629-1 2023-07-12 04:14:20 +03:00 committed by GitHub
parent 65ec8133df
commit 21be0125b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 12 deletions

View File

@ -59,5 +59,14 @@
$apps[$x]['default_settings'][$y]['default_setting_order'] = "30";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
$y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "11bed598-e461-11ed-9417-005056a27559";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "authentication";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "email_queue";
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_order'] = "40";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "send direct email or email queue";
?>

View File

@ -220,7 +220,7 @@ class plugin_email {
//get the language code
$language_code = $_SESSION['domain']['language']['code'];
//get the email template from the database
$sql = "select template_subject, template_body ";
$sql .= "from v_email_templates ";
@ -252,17 +252,72 @@ class plugin_email {
$email_from_address = $_SESSION['email']['smtp_from']['text'];
$email_from_name = $_SESSION['email']['smtp_from_name']['text'];
//send email - direct
$email = new email;
$email->recipients = $_SESSION["user_email"];
$email->subject = $email_subject;
$email->body = $email_body;
$email->from_address = $email_from_address;
$email->from_name = $email_from_name;
//$email->attachments = $email_attachments;
$email->debug_level = 0;
$email->method = 'direct';
$sent = $email->send();
// Direct or email_queue
$sql = "select * ";
$sql .= "from v_default_settings ";
$sql .= "where default_setting_category = :authentication ";
$sql .= "and default_setting_subcategory = :email_queue";
$parameters['authentication'] = 'authentication';
$parameters['email_queue'] = 'email_queue';
$database = new database;
$row = $database->select($sql, $parameters, 'row');
unset($sql, $parameters);
if (is_array($row) && @sizeof($row) != 0) {
foreach ($row as $record => $value) {
if ($row['default_setting_subcategory'] == 'email_queue' && $row['default_setting_value'] == "true" && $row['default_setting_enabled'] == "1" ) {
$email_queue = $row['default_setting_value'];
}
}
}
if ( $email_queue == 'true' ) {
// Array vars
$email_queue_uuid = uuid();
$email_uuid = uuid();
$hostname = gethostname();
//add the temporary permissions
$p = new permissions;
$p->add("email_queue_add", 'temp');
$p->add("email_queue_edit", 'temp');
$array['email_queue'][0]["email_queue_uuid"] = $email_queue_uuid;
$array['email_queue'][0]["domain_uuid"] = $_SESSION["domain_uuid"];
$array['email_queue'][0]["hostname"] = $hostname;
$array['email_queue'][0]["email_date"] = 'now()';
$array['email_queue'][0]["email_from"] = $email_from_address;
$array['email_queue'][0]["email_to"] = $_SESSION["user_email"];
$array['email_queue'][0]["email_subject"] = $email_subject;
$array['email_queue'][0]["email_body"] = $email_body;
$array['email_queue'][0]["email_status"] = 'waiting';
$array['email_queue'][0]["email_retry_count"] = 3;
$array['email_queue'][0]["email_uuid"] = $email_uuid;
$array['email_queue'][0]["email_action_before"] = null;
$array['email_queue'][0]["email_action_after"] = null;
$database = new database;
$database->app_name = 'email queue';
$database->app_uuid = '5befdf60-a242-445f-91b3-2e9ee3e0ddf7';
$database->save($array);
$err = $database->message;
unset($array);
//remove the temporary permission
$p->delete("email_queue_add", 'temp');
$p->delete("email_queue_edit", 'temp');
}
else {
//send email - direct
$email = new email;
$email->recipients = $_SESSION["user_email"];
$email->subject = $email_subject;
$email->body = $email_body;
$email->from_address = $email_from_address;
$email->from_name = $email_from_name;
//$email->attachments = $email_attachments;
$email->debug_level = 0;
$email->method = 'direct';
$sent = $email->send();
}
//debug informations
//$email_response = $email->response;