Email Queue - List: Add Resend option.

This commit is contained in:
fusionate
2025-09-10 12:47:08 -06:00
parent e4bae0ad32
commit 6fbcaab062
3 changed files with 181 additions and 29 deletions

View File

@@ -945,4 +945,112 @@ $text['description-email_test']['zh-cn'] = "这是对默认或域设置中当前
$text['description-email_test']['ja-jp'] = "これは、現在デフォルト設定またはドメイン設定で構成されている SMTP 設定の簡単なテストです。 注: 送信されたメッセージは電子メール キューには表示されません。";
$text['description-email_test']['ko-kr'] = "이는 현재 기본 또는 도메인 설정에 구성된 SMTP 설정에 대한 간단한 테스트입니다. 참고: 전송된 메시지는 이메일 대기열에 표시되지 않습니다.";
?>
$text['button-resend']['en-us'] = "Resend";
$text['button-resend']['en-gb'] = "Resend";
$text['button-resend']['ar-eg'] = "إعادة إرسال";
$text['button-resend']['de-at'] = "Erneut senden";
$text['button-resend']['de-ch'] = "Erneut senden";
$text['button-resend']['de-de'] = "Erneut senden";
$text['button-resend']['el-gr'] = "Εκ νέου αποστολή";
$text['button-resend']['es-cl'] = "Reenviar";
$text['button-resend']['es-mx'] = "Reenviar";
$text['button-resend']['fr-ca'] = "Renvoyer";
$text['button-resend']['fr-fr'] = "Renvoyer";
$text['button-resend']['he-il'] = "שלח שוב";
$text['button-resend']['it-it'] = "Invia nuovamente";
$text['button-resend']['ka-ge'] = "თავიდან გაგზავნა";
$text['button-resend']['nl-nl'] = "Opnieuw versturen";
$text['button-resend']['pl-pl'] = "Wysłać ponownie";
$text['button-resend']['pt-br'] = "Reenviar";
$text['button-resend']['pt-pt'] = "Reenviar";
$text['button-resend']['ro-ro'] = "Retrimiteți";
$text['button-resend']['ru-ru'] = "Отправить";
$text['button-resend']['sv-se'] = "Skicka igen";
$text['button-resend']['uk-ua'] = "Надіслати повторно";
$text['button-resend']['tr-tr'] = "Yeniden gönder";
$text['button-resend']['zh-cn'] = "重发";
$text['button-resend']['ja-jp'] = "再送信";
$text['button-resend']['ko-kr'] = "재전송";
$text['modal_title-resend']['en-us'] = "Resend Messages";
$text['modal_title-resend']['en-gb'] = "Resend Messages";
$text['modal_title-resend']['ar-eg'] = "إعادة إرسال البريد الإلكتروني";
$text['modal_title-resend']['de-at'] = "E-Mail zurücksenden";
$text['modal_title-resend']['de-ch'] = "E-Mail zurücksenden";
$text['modal_title-resend']['de-de'] = "E-Mail zurücksenden";
$text['modal_title-resend']['el-gr'] = "Ξαναστείλτε ηλεκτρονικό μήνυμα";
$text['modal_title-resend']['es-cl'] = "Reenviar email";
$text['modal_title-resend']['es-mx'] = "Reenviar email";
$text['modal_title-resend']['fr-ca'] = "Ré-envoyer l'email";
$text['modal_title-resend']['fr-fr'] = "Ré-envoyer l'email";
$text['modal_title-resend']['he-il'] = "שלח אימייל מחדש";
$text['modal_title-resend']['it-it'] = "Rinvia l'e-mail";
$text['modal_title-resend']['ka-ge'] = "ელფოსტის თავიდან გაგზავნა";
$text['modal_title-resend']['nl-nl'] = "Email opnieuw verzenden";
$text['modal_title-resend']['pl-pl'] = "Ponownie wysłać wiadomość e-mail";
$text['modal_title-resend']['pt-br'] = "Reenviar email";
$text['modal_title-resend']['pt-pt'] = "Reenviar email";
$text['modal_title-resend']['ro-ro'] = "Retrimiteți e-mailul";
$text['modal_title-resend']['ru-ru'] = "Отправить письмо повторно";
$text['modal_title-resend']['sv-se'] = "Skicka email igen";
$text['modal_title-resend']['uk-ua'] = "Повторно надіслати електронний лист";
$text['modal_title-resend']['tr-tr'] = "Elektronik postayı tekrar gönder";
$text['modal_title-resend']['zh-cn'] = "重发电子邮件";
$text['modal_title-resend']['ja-jp'] = "メールを再送";
$text['modal_title-resend']['ko-kr'] = "이메일 재전송";
$text['modal_message-resend']['en-us'] = "You are about to resend the selected messages in the email queue.";
$text['modal_message-resend']['en-gb'] = "You are about to resend the selected messages in the email queue.";
$text['modal_message-resend']['ar-eg'] = "";
$text['modal_message-resend']['de-at'] = "";
$text['modal_message-resend']['de-ch'] = "";
$text['modal_message-resend']['de-de'] = "";
$text['modal_message-resend']['el-gr'] = "";
$text['modal_message-resend']['es-cl'] = "";
$text['modal_message-resend']['es-mx'] = "";
$text['modal_message-resend']['fr-ca'] = "";
$text['modal_message-resend']['fr-fr'] = "";
$text['modal_message-resend']['he-il'] = "";
$text['modal_message-resend']['it-it'] = "";
$text['modal_message-resend']['ka-ge'] = "";
$text['modal_message-resend']['nl-nl'] = "";
$text['modal_message-resend']['pl-pl'] = "";
$text['modal_message-resend']['pt-br'] = "";
$text['modal_message-resend']['pt-pt'] = "";
$text['modal_message-resend']['ro-ro'] = "";
$text['modal_message-resend']['ru-ru'] = "";
$text['modal_message-resend']['sv-se'] = "";
$text['modal_message-resend']['uk-ua'] = "";
$text['modal_message-resend']['tr-tr'] = "";
$text['modal_message-resend']['zh-cn'] = "";
$text['modal_message-resend']['ja-jp'] = "";
$text['modal_message-resend']['ko-kr'] = "";
$text['message-resending_messages']['en-us'] = "Resending Message(s)";
$text['message-resending_messages']['en-gb'] = "Resending Message(s)";
$text['message-resending_messages']['ar-eg'] = "إعادة إرسال الرسائل";
$text['message-resending_messages']['de-at'] = "Nachrichten erneut senden";
$text['message-resending_messages']['de-ch'] = "Nachrichten erneut senden";
$text['message-resending_messages']['de-de'] = "Nachrichten erneut senden";
$text['message-resending_messages']['el-gr'] = "Επανάληψη αποστολής μηνυμάτων";
$text['message-resending_messages']['es-cl'] = "Reenviar mensajes";
$text['message-resending_messages']['es-mx'] = "Reenviar mensajes";
$text['message-resending_messages']['fr-ca'] = "Renvoyer des messages";
$text['message-resending_messages']['fr-fr'] = "Renvoyer des messages";
$text['message-resending_messages']['he-il'] = "שליחה חוזרת של הודעות";
$text['message-resending_messages']['it-it'] = "Reinvio dei messaggi";
$text['message-resending_messages']['ka-ge'] = "შეტყობინებების ხელახლა გაგზავნა";
$text['message-resending_messages']['nl-nl'] = "Berichten opnieuw verzenden";
$text['message-resending_messages']['pl-pl'] = "Ponowne wysyłanie wiadomości";
$text['message-resending_messages']['pt-br'] = "Reenviando mensagens";
$text['message-resending_messages']['pt-pt'] = "Reenviando mensagens";
$text['message-resending_messages']['ro-ro'] = "Retrimiterea mesajelor";
$text['message-resending_messages']['ru-ru'] = "Повторная отправка сообщений";
$text['message-resending_messages']['sv-se'] = "Skicka meddelanden igen";
$text['message-resending_messages']['uk-ua'] = "Повторне надсилання повідомлень";
$text['message-resending_messages']['tr-tr'] = "Mesajları Yeniden Gönderme";
$text['message-resending_messages']['zh-cn'] = "Mesajları Yeniden Gönderme";
$text['message-resending_messages']['ja-jp'] = "メッセージの再送信";
$text['message-resending_messages']['ko-kr'] = "메시지 재전송";
?>

View File

@@ -80,21 +80,16 @@
//send the array to the database class
switch ($action) {
case 'copy':
//if (permission_exists('email_queue_add')) {
// $database->copy($array);
//}
break;
case 'toggle':
//if (permission_exists('email_queue_edit')) {
// $database->toggle($array);
//}
case 'resend':
if (permission_exists('email_queue_edit')) {
$obj = new email_queue;
$obj->resend($array);
}
break;
case 'delete':
if (permission_exists('email_queue_delete')) {
$obj = new email_queue;
$obj->delete($array);
//$database->delete($array);
}
break;
}
@@ -247,27 +242,21 @@
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-email_queue']."</b><div class='count'>".number_format($num_rows)."</div></div>\n";
echo " <div class='actions'>\n";
//if (permission_exists('email_queue_add')) {
// echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$settings->get('theme', 'button_icon_add'),'id'=>'btn_add','name'=>'btn_add','link'=>'email_queue_edit.php']);
//}
//if (permission_exists('email_queue_add') && $email_queue) {
// echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$settings->get('theme', 'button_icon_copy'),'id'=>'btn_copy','name'=>'btn_copy','style'=>'display:none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
//}
//if (permission_exists('email_queue_edit') && $email_queue) {
// echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$settings->get('theme', 'button_icon_toggle'),'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display:none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
//}
echo "<form id='form_test' class='inline' method='post' action='email_test.php' target='_blank'>\n";
echo button::create(['label'=>$text['button-test'],'icon'=>'tools','type'=>'button','id'=>'test_button','style'=>'margin-right: 15px;','onclick'=>"$(this).fadeOut(400, function(){ $('span#form_test').fadeIn(400); $('#to').trigger('focus'); });"]);
echo button::create(['label'=>$text['button-test'],'icon'=>'tools','type'=>'button','id'=>'test_button','onclick'=>"$(this).fadeOut(400, function(){ $('span#form_test').fadeIn(400); $('#to').trigger('focus'); });"]);
echo " <span id='form_test' style='display: none;'>\n";
echo " <input type='text' class='txt' style='width: 150px;' name='to' id='to' placeholder='recipient@domain.com'>";
echo button::create(['label'=>$text['button-send'],'icon'=>'envelope','type'=>'submit','id'=>'send_button','style'=>'margin-right: 15px;']);
echo button::create(['label'=>$text['button-send'],'icon'=>'envelope','type'=>'submit','id'=>'send_button']);
echo " </span>\n";
echo " </form>";
if (permission_exists('email_queue_edit') && $email_queue) {
echo button::create(['type'=>'button','label'=>$text['button-resend'],'icon'=>$settings->get('theme', 'button_icon_email'),'id'=>'btn_resend','name'=>'btn_resend','collapse'=>'hide-xs','style'=>'display: none; margin-left: 15px;','class'=>'+revealed','onclick'=>"modal_open('modal-resend','btn_resend');"]);
}
if (permission_exists('email_queue_delete') && $email_queue) {
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$settings->get('theme', 'button_icon_delete'),'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
}
echo " <form id='form_search' class='inline' method='get'>\n";
echo " <select class='formfld' name='email_status'>\n";
echo " <select class='formfld' style='margin-left: 15px;' name='email_status'>\n";
echo " <option value='' selected='selected' disabled hidden>".$text['label-email_status']."...</option>";
echo " <option value=''></option>\n";
echo " <option value='waiting' ".(!empty($_GET["email_status"]) && $_GET["email_status"] == "waiting" ? "selected='selected'" : null).">".ucwords($text['label-waiting'])."</option>\n";
@@ -283,7 +272,7 @@
// echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$settings->get('theme', 'button_icon_all'),'link'=>'?show=all']);
// }
//}
echo "<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search ?? '')."\" placeholder=\"".$text['label-search']."\" />";
echo "<input type='text' class='txt list-search' style='margin-left: 0;' name='search' id='search' value=\"".escape($search ?? '')."\" placeholder=\"".$text['label-search']."\" />";
echo button::create(['label'=>$text['button-search'],'icon'=>$settings->get('theme', 'button_icon_search'),'type'=>'submit','id'=>'btn_search']);
if ($paging_controls_mini != '') {
echo "<span style='margin-left: 15px;'>".$paging_controls_mini."</span>\n";
@@ -293,11 +282,15 @@
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
if (permission_exists('email_queue_add') && $email_queue) {
echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('copy'); list_form_submit('form_list');"])]);
}
if (permission_exists('email_queue_edit') && $email_queue) {
echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('toggle'); list_form_submit('form_list');"])]);
echo modal::create([
'id'=>'modal-resend',
'title'=>$text['modal_title-resend'],
'message'=>$text['modal_message-resend'],
'actions'=>
button::create(['type'=>'button','label'=>$text['button-cancel'],'icon'=>$settings->get('theme', 'button_icon_cancel'),'collapse'=>'hide-xs','onclick'=>'modal_close();']).
button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','collapse'=>'never','style'=>'float: right;','onclick'=>"modal_close(); list_action_set('resend'); list_form_submit('form_list');"])
]);
}
if (permission_exists('email_queue_delete') && $email_queue) {
echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
@@ -417,4 +410,4 @@
//include the footer
require_once "resources/footer.php";
?>
?>

View File

@@ -81,6 +81,57 @@
}
}
/**
* resend emails in the queue
*/
public function resend($records) {
if (permission_exists($this->name.'_edit')) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//validate the token
$token = new token;
if (!$token->validate($_SERVER['PHP_SELF'])) {
message::add($text['message-invalid_token'],'negative');
header('Location: '.$this->location);
exit;
}
//resend multiple emails
if (is_array($records) && @sizeof($records) != 0) {
//build the message array
$x = 0;
foreach ($records as $record) {
//add to the array
if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
$array[$this->table][$x][$this->name.'_uuid'] = $record['uuid'];
$array[$this->table][$x]['email_status'] = 'waiting';
$array[$this->table][$x]['email_retry_count'] = null;
}
//increment the id
$x++;
}
//save the changes
if (is_array($array) && @sizeof($array) != 0) {
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
unset($array);
//set message
message::add($text['message-resending_messages']);
}
unset($records, $states);
}
}
}
/**
* toggle a field between two values
*/