Plugin Directory

Changeset 3297433


Ignore:
Timestamp:
05/20/2025 01:54:11 PM (11 months ago)
Author:
webimpian
Message:

2.2.2

  • Added automatic recovery for emails stuck in "processing" state
  • Added manual recovery functionality in Email Log interface
  • Enhanced email queue processing reliability and resilience
Location:
mailniaga-smtp
Files:
307 added
5 edited

Legend:

Unmodified
Added
Removed
  • mailniaga-smtp/trunk/includes/src/MailniagaCheckBalance.php

    r3170128 r3297433  
    1111
    1212    public function register() {
     13        add_action('init', [$this, 'register_cron_interval'], 20);
     14        add_action('init', [$this, 'schedule_event'], 30);
     15        add_action('mailniaga_check_balance_hook', [$this, 'check_balance_task']);
     16    }
     17
     18    public function register_cron_interval() {
    1319        add_filter('cron_schedules', [$this, 'add_cron_interval']);
    14         add_action('init', [$this, 'schedule_event']);
    15         add_action('mailniaga_check_balance_hook', [$this, 'check_balance_task']);
    1620    }
    1721
  • mailniaga-smtp/trunk/includes/src/MailniagaConnector.php

    r3193246 r3297433  
    1515    private MailniagaActionSchedulerCleaner $action_scheduler_cleaner;
    1616
     17    private MailniagaRecoveryManager $recovery_manager;
     18
    1719
    1820
     
    2729        $this->check_balance = new MailniagaCheckBalance($this->settings);
    2830        $this->action_scheduler_cleaner = new MailniagaActionSchedulerCleaner();
     31        $this->recovery_manager = new MailniagaRecoveryManager();
    2932    }
    3033
     
    4750        $this->check_balance->register();
    4851        $this->action_scheduler_cleaner->register();
     52        $this->recovery_manager->register();
    4953
    5054        add_action('admin_post_mailniaga_send_test_email', [$this, 'handle_test_email']);
  • mailniaga-smtp/trunk/includes/src/MailniagaEmailLog.php

    r3193246 r3297433  
    2626
    2727    public function screen_option() {
    28         // Add screen options if needed
    2928    }
    3029
     
    8786        }
    8887
     88        if (isset($_GET['processing_recovered'])) {
     89            $recovered_count = intval($_GET['processing_recovered']);
     90            echo '<div class="updated"><p>' . sprintf(_n('%s stuck processing email recovered.', '%s stuck processing emails recovered.', $recovered_count, 'mailniaga-smtp'), number_format_i18n($recovered_count)) . '</p></div>';
     91        }
     92
    8993        $page = isset($_GET['paged']) ? absint($_GET['paged']) : 1;
    9094        $status = isset($_GET['status']) ? sanitize_text_field($_GET['status']) : 'all';
     
    102106            <h1><?php echo esc_html(__('Mail Niaga Email Log', 'mailniaga-smtp')); ?></h1>
    103107
    104             <?php
    105             $this->render_filter_tabs($status, $status_counts);
    106             $this->display_auto_delete_notice();
    107             ?>
     108            <?php
     109            $this->render_filter_tabs($status, $status_counts);
     110            $this->display_auto_delete_notice();
     111            ?>
    108112            <div class="datefilter alignright">
    109                 <?php $this->render_date_filter($from_date, $to_date, $search); ?>
     113                <?php $this->render_date_filter($from_date, $to_date, $search); ?>
    110114            </div>
    111115            <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" id="email-log-form">
     
    125129                    <div>
    126130                        <input type="hidden" name="action" value="mailniaga_bulk_action">
    127                         <?php wp_nonce_field('mailniaga_bulk_action', 'mailniaga_bulk_action_nonce'); ?>
     131                        <?php wp_nonce_field('mailniaga_bulk_action', 'mailniaga_bulk_action_nonce'); ?>
    128132                        <input type="submit" name="clear_all_logs" class="button action" value="<?php esc_attr_e('Clear All Logs', 'mailniaga-smtp'); ?>" onclick="return confirm('<?php esc_attr_e('Are you sure you want to clear all email logs?', 'mailniaga-smtp'); ?>');">
    129133                        <input type="submit" name="resend_all_failed" class="button action" value="<?php esc_attr_e('Resend All Failed', 'mailniaga-smtp'); ?>" onclick="return confirm('<?php esc_attr_e('Are you sure you want to resend all failed emails?', 'mailniaga-smtp'); ?>');">
     134                        <input type="submit" name="recover_processing" class="button action" value="<?php esc_attr_e('Restart Processing Emails', 'mailniaga-smtp'); ?>" onclick="return confirm('<?php esc_attr_e('Are you sure you want to requeue all processing emails?', 'mailniaga-smtp'); ?>');">
    130135                    </div>
    131136                </div>
     
    149154                    </thead>
    150155                    <tbody>
    151                     <?php if (empty($emails)): ?>
     156                    <?php if (empty($emails)): ?>
    152157                        <tr>
    153158                            <td colspan="8" style="text-align: center;">
     
    155160                            </td>
    156161                        </tr>
    157                     <?php else: ?>
    158                     <?php endif; ?>
     162                    <?php else: ?>
     163                    <?php endif; ?>
    159164                    <?php foreach ($emails as $email): ?>
    160165                        <tr>
     
    191196            'sent' => __('Sent', 'mailniaga-smtp'),
    192197            'queued' => __('Queue', 'mailniaga-smtp'),
     198            'processing' => __('Processing', 'mailniaga-smtp'),
    193199            'failed' => __('Failed', 'mailniaga-smtp'),
    194200        ];
     
    224230            'sent' => 0,
    225231            'queue' => 0,
     232            'processing' => 0,
    226233            'failed' => 0,
    227234        ];
     
    268275        if (!empty($where_clauses)) {
    269276            $query .= " WHERE " . implode(' AND ', $where_clauses);
    270         }
    271 
    272         return $wpdb->get_var($wpdb->prepare($query, $args));
     277            return $wpdb->get_var($wpdb->prepare($query, $args));
     278        } else {
     279            // Direct query without prepare when no conditions
     280            return $wpdb->get_var($query);
     281        }
    273282    }
    274283
     
    428437        }
    429438
     439        if (isset($_POST['recover_processing'])) {
     440            $recovered_count = $this->recover_processing_emails();
     441            wp_redirect(add_query_arg('processing_recovered', $recovered_count, wp_get_referer()));
     442            exit;
     443        }
     444
    430445        if (!isset($_POST['email_ids']) || !is_array($_POST['email_ids'])) {
    431446            wp_redirect(wp_get_referer());
     
    474489            current_time('mysql')
    475490        ));
     491    }
     492
     493    private function recover_processing_emails() {
     494        global $wpdb;
     495        $table_name = $wpdb->prefix . 'mailniaga_email_queue';
     496
     497        return $wpdb->query(
     498            $wpdb->prepare(
     499                "UPDATE $table_name SET status = 'queued', updated_at = %s WHERE status = 'processing'",
     500                current_time('mysql')
     501            )
     502        );
    476503    }
    477504
  • mailniaga-smtp/trunk/mailniaga-smtp.php

    r3193699 r3297433  
    1313 * Plugin Name:         Mail Niaga SMTP
    1414 * Plugin URI:          https://mailniaga.com
    15  * Version:             2.2.1
     15 * Version:             2.2.2
    1616 * Description:         Streamline your WordPress email delivery with Mail Niaga API integration. Boost email deliverability, track performance, and ensure reliable SMTP service for all your website's outgoing emails.
    1717 * Author:              Web Impian
     
    3838        'PATH'     => realpath(plugin_dir_path(__FILE__)),
    3939        'URL'      => trailingslashit(plugin_dir_url(__FILE__)),
    40         'VERSION'  => '2.0.0',
     40        'VERSION'  => '2.2.2',
    4141    ]
    4242);
  • mailniaga-smtp/trunk/readme.txt

    r3193699 r3297433  
    33Tags: SMTP, email, wp_mail, mailniaga, api, email queue, email log
    44Requires at least: 5.6
    5 Tested up to: 6.7
     5Tested up to: 6.8
    66Requires PHP: 7.4
    7 Stable tag: 2.2.1
     7Stable tag: 2.2.2
    88License: GPLv3
    99License URI: https://www.gnu.org/licenses/gpl-3.0.txt
     
    9494== Changelog ==
    9595
     96= 2.2.2 =
     97* Added automatic recovery for emails stuck in "processing" state
     98* Added manual recovery functionality in Email Log dashboard
     99* Enhanced email queue processing reliability and resilience
     100
    96101= 2.2.1 =
    97102* Add support 7.4
Note: See TracChangeset for help on using the changeset viewer.