-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.php
More file actions
65 lines (53 loc) · 2.19 KB
/
uninstall.php
File metadata and controls
65 lines (53 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
* Uninstall handler for Cloudflare Zero Trust Login
*
* @package CloudflareZeroTrustLogin
*/
// If uninstall not called from WordPress, then exit
if (!defined('WP_UNINSTALL_PLUGIN')) {
exit;
}
// Only run if not a multisite or if network admin
if (!is_multisite() || is_super_admin()) {
// Remove plugin options
delete_option('cfzt_settings');
delete_option('cfzt_activated_time');
delete_option('cfzt_version');
delete_option('cfzt_activation_notice_dismissed');
// Remove user meta for all users
global $wpdb;
// Get all users with CF Zero Trust meta
$users = get_users(array(
'meta_key' => 'cfzt_user',
'meta_value' => true,
'fields' => 'ID'
));
// Remove CF Zero Trust related user meta
foreach ($users as $user_id) {
delete_user_meta($user_id, 'cfzt_user');
delete_user_meta($user_id, 'cfzt_sub');
delete_user_meta($user_id, 'cfzt_issuer');
delete_user_meta($user_id, 'cfzt_auth_method');
delete_user_meta($user_id, 'cfzt_last_login');
delete_user_meta($user_id, 'cfzt_backup_codes');
delete_user_meta($user_id, 'cfzt_onboarding_dismissed');
}
// Also clean up any other cfzt_* user meta that might exist
$wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'cfzt_%'");
// Clean up transients
// This includes: cfzt_auth_state_*, cfzt_attempts_*, cfzt_flush_rewrite_rules, and GitHub updater cache
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_cfzt_%'");
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_cfzt_%'");
// Clean up any sessions
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_wp_session_cfzt_%'");
// Drop logs table
$table_name = $wpdb->prefix . 'cfzt_logs';
$wpdb->query("DROP TABLE IF EXISTS $table_name");
// Remove database version option
delete_option('cfzt_db_version');
// Remove any scheduled events (if any were added in the future)
wp_clear_scheduled_hook('cfzt_cleanup_transients');
// Flush rewrite rules to clean up any custom endpoints
flush_rewrite_rules();
}