-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.php
More file actions
91 lines (80 loc) · 2.46 KB
/
uninstall.php
File metadata and controls
91 lines (80 loc) · 2.46 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
/**
* Uninstall Easy PHP Settings
*
* Fired when the plugin is uninstalled (deleted). Removes all options,
* transients, and scheduled events created by the plugin.
*
* @package EasyPHPSettings
*/
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
exit;
}
global $wpdb;
$is_multisite = is_multisite();
/**
* Delete an option (site or network depending on context).
*
* @param string $option Option name.
*/
$delete_option_fn = function ( $option ) use ( $is_multisite ) {
if ( $is_multisite ) {
delete_site_option( $option );
} else {
delete_option( $option );
}
};
// Plugin options.
$option_keys = array(
'easy_php_settings_settings',
'easy_php_settings_wp_memory_settings',
'easy_php_settings_debugging_settings',
'easy_php_settings_import_backup',
'easy_php_settings_reset_backup',
'easy_php_settings_history',
'easy_php_settings_error_log',
);
foreach ( $option_keys as $key ) {
$delete_option_fn( $key );
}
// Config backups (option names like easy_php_settings_config_backup_1234567890).
if ( $is_multisite ) {
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE %s",
$wpdb->esc_like( 'easy_php_settings_config_backup_' ) . '%'
)
);
} else {
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->options WHERE option_name LIKE %s",
$wpdb->esc_like( 'easy_php_settings_config_backup_' ) . '%'
)
);
}
// Plugin transients (easy_php_settings_cache_*, easy_php_settings_log_cleared).
// Transients are stored as _transient_* and _transient_timeout_* in options.
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s",
$wpdb->esc_like( '_transient_easy_php_settings_' ) . '%',
$wpdb->esc_like( '_transient_timeout_easy_php_settings_' ) . '%'
)
);
// Plugin Tracker integration: cron and options.
$main_plugin_file = dirname( __FILE__ ) . '/class-easy-php-settings.php';
$basename = plugin_basename( $main_plugin_file );
$cron_option = 'plugin_tracker_cron_' . md5( $basename );
$hook_name = 'plugin_tracker_ping_' . preg_replace( '/[^a-z0-9_-]/i', '_', $basename );
wp_clear_scheduled_hook( $hook_name );
delete_option( $cron_option );
delete_option( 'plugin_tracker_plugin_file' );
// Plugin Tracker transients.
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s",
$wpdb->esc_like( '_transient_plugin_tracker_' ) . '%',
$wpdb->esc_like( '_transient_timeout_plugin_tracker_' ) . '%'
)
);