-
Notifications
You must be signed in to change notification settings - Fork 0
/
uninstall.php
102 lines (88 loc) · 1.83 KB
/
uninstall.php
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
92
93
94
95
96
97
98
99
100
101
102
<?php
/**
* Timestamps uninstaller
*
* Used when clicking "Delete" from inside of WordPress's plugins page.
*
* @package SDCOM_Timestamps
* @since 1.0.0
*/
namespace SDCOM_Timestamps;
defined( 'ABSPATH' ) || exit;
require_once __DIR__ . '/includes/utils.php';
/**
* Class Uninstaller
*/
class Uninstaller {
/**
* List of option keys that need to be deleted when uninstalling the plugin.
*
* @var array
*/
protected $options = [
'sdcom_timestamps',
// Admin notices options
'sdcom_timestamps_hide_need_setup_notice',
];
/**
* List of transient keys that need to be deleted when uninstalling the plugin.
*
* @var array
*/
protected $transients = [];
/**
* Initialize uninstaller
*
* Perform some checks to make sure plugin can/should be uninstalled
*
* @since 1.0.0
*/
public function __construct() {
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
$this->exit_uninstaller();
}
// Uninstall the plugin.
$this->clean_options_and_transients();
}
/**
* Delete all the options in a single site context.
*/
protected function delete_options() {
foreach ( $this->options as $option ) {
delete_option( $option );
}
}
/**
* Delete all the transients in a single site context.
*/
protected function delete_transients() {
foreach ( $this->transients as $transient ) {
delete_transient( $transient );
}
}
/**
* Cleanup options and transients
*
* Deletes the plugin options and transients.
*
* @since 1.0.0
*/
protected function clean_options_and_transients() {
$this->delete_options();
$this->delete_transients();
}
/**
* Exit uninstaller
*
* Gracefully exit the uninstaller if we should not be here
*
* @since 1.0.0
* @return void
*/
protected function exit_uninstaller() {
status_header( 404 );
exit;
}
}
new Uninstaller();