From 6fbcaab06245697689f80ac0bd3098a711272532 Mon Sep 17 00:00:00 2001 From: fusionate Date: Wed, 10 Sep 2025 12:47:08 -0600 Subject: [PATCH] Email Queue - List: Add Resend option. --- app/email_queue/app_languages.php | 110 +++++++++++++++++- app/email_queue/email_queue.php | 49 ++++---- .../resources/classes/email_queue.php | 51 ++++++++ 3 files changed, 181 insertions(+), 29 deletions(-) diff --git a/app/email_queue/app_languages.php b/app/email_queue/app_languages.php index 24ea578332..1ba61054f1 100644 --- a/app/email_queue/app_languages.php +++ b/app/email_queue/app_languages.php @@ -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'] = "메시지 재전송"; + +?> \ No newline at end of file diff --git a/app/email_queue/email_queue.php b/app/email_queue/email_queue.php index fda776538c..e83f69c95c 100644 --- a/app/email_queue/email_queue.php +++ b/app/email_queue/email_queue.php @@ -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 "
\n"; echo "
".$text['title-email_queue']."
".number_format($num_rows)."
\n"; echo "
\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 "
\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 " \n"; echo "
"; + 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 "
\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"; -?> +?> \ No newline at end of file diff --git a/app/email_queue/resources/classes/email_queue.php b/app/email_queue/resources/classes/email_queue.php index a7efc72c7e..ac755a8b49 100644 --- a/app/email_queue/resources/classes/email_queue.php +++ b/app/email_queue/resources/classes/email_queue.php @@ -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 */