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
");
?>
__('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()]);
}
});