Project

General

Profile

Bug #21886 » action-scheduler-table-cleanup.php

Boone Gorges, 2025-10-10 02:40 PM

 
1
<?php
2

    
3
global $wpdb;
4

    
5
$tables = $wpdb->get_col( "SHOW TABLES LIKE '%actionscheduler_logs%'" );
6

    
7
$as_plugins = [
8
	'easy-wp-smtp/easy-wp-smtp.php',
9
	'event-tickets/event-tickets.php',
10
	'pdf-embedder/pdf_embedder.php',
11
	'the-events-calendar/the-events-calendar.php',
12
	'widget-for-eventbright-api/widget-for-eventbright-api.php',
13
];
14

    
15
foreach ( $tables as $table ) {
16
	$matched = preg_match( '/^' . $wpdb->base_prefix . '([0-9]+)_/', $table, $matches );
17

    
18
	if ( ! $matched ) {
19
		continue;
20
	}
21

    
22
	$site_id = (int) $matches[1];
23

    
24
	$needs_as_tables = false;
25

    
26
	switch_to_blog( $site_id );
27

    
28
	foreach ( $as_plugins as $as_plugin ) {
29
		if ( is_plugin_active( $as_plugin ) ) {
30
			$needs_as_tables = true;
31
			break;
32
		}
33
	}
34

    
35
	restore_current_blog();
36

    
37
	if ( ! $needs_as_tables ) {
38
		WP_CLI::log( "Dropping Action Scheduler tables for site ID {$site_id}." );
39
	} else {
40
		WP_CLI::log( "Keeping Action Scheduler tables for site ID {$site_id}." );
41
	}
42
}
(2-2/4)