Selaa lähdekoodia

Auth direct email or email queue (#6617)

* Auth direct email or email_queue

Authentication email plugin improvement 

* Update email.php
volga629-1 2 vuotta sitten
vanhempi
commit
524b384c71

+ 9 - 0
core/authentication/app_config.php

@@ -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";
 
 ?>

+ 67 - 12
core/authentication/resources/classes/plugins/email.php

@@ -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;