prefix . 'rl_mailwarmer_conversations'; $message_table = $wpdb->prefix . 'rl_mailwarmer_messages'; // Fetch conversations with their messages $conversations = $wpdb->get_results(" SELECT c.id as conversation_id, c.campaign_id, c.created_at, m.id as message_id, m.scheduled_for_timestamp, m.from_email, m.to_email, m.subject FROM $conversation_table c LEFT JOIN $message_table m ON c.id = m.conversation_id WHERE m.status != 'scheduled' ORDER BY c.created_at DESC, m.scheduled_for_timestamp ASC "); ?>

message_id) : ?> conversation_id); ?> campaign_id); ?> created_at); ?> message_id); ?> scheduled_for_timestamp); ?> from_email); ?> to_email); ?> subject); ?>

__('Permission denied.', 'rl-mailwarmer')]); } $message_ids = isset($_POST['message_ids']) ? array_map('intval', $_POST['message_ids']) : []; if (empty($message_ids)) { wp_send_json_error(['message' => __('No messages selected.', 'rl-mailwarmer')]); } $table_name = $wpdb->prefix . 'rl_mailwarmer_messages'; // Delete selected messages $placeholders = implode(',', array_fill(0, count($message_ids), '%d')); $query = "DELETE FROM $table_name WHERE id IN ($placeholders)"; $result = $wpdb->query($wpdb->prepare($query, $message_ids)); if ($result === false) { wp_send_json_error(['message' => __('Failed to delete messages.', 'rl-mailwarmer')]); } wp_send_json_success(['message' => __('Messages deleted successfully.', 'rl-mailwarmer')]); }); /** * Add a metabox to the WP dashboard for monitoring and processing the message queue. */ add_action('wp_dashboard_setup', function () { wp_add_dashboard_widget( 'rl_mailwarmer_message_queue', __('Message Queue', 'rl-mailwarmer'), 'rl_mailwarmer_render_message_queue_widget' ); }); /** * Render the Message Queue dashboard widget. */ function rl_mailwarmer_render_message_queue_widget() { global $wpdb; // Count past-due messages $table_name = $wpdb->prefix . 'rl_mailwarmer_messages'; $past_due_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $table_name WHERE status = %s AND scheduled_for_timestamp < %s", 'scheduled', current_time('mysql') ) ); ?>

__('Invalid nonce.', 'rl-mailwarmer')]); } // Ensure the user has permission if (!current_user_can('manage_options')) { wp_send_json_error(['message' => __('Permission denied.', 'rl-mailwarmer')]); } try { // Process pending messages // log_to_file("wp_ajax_rl_mailwarmer_process_message_queue - Trying process_pending_messages()"); $results = RL_MailWarmer_Message_Handler::process_pending_messages(); wp_send_json_success($results); } catch (Exception $e) { wp_send_json_error(['message' => $e->getMessage()]); } });