-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.php
More file actions
70 lines (62 loc) · 1.95 KB
/
Copy pathuninstall.php
File metadata and controls
70 lines (62 loc) · 1.95 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
<?php
/**
* Fired when the plugin is uninstalled.
*/
defined('WP_UNINSTALL_PLUGIN') || exit;
$kurl_delete_data = get_option('kurl_delete_data', 0);
if (!is_scalar($kurl_delete_data) || (string) $kurl_delete_data !== '1') {
return;
}
if (!function_exists('wp_get_upload_dir')) {
require_once ABSPATH . 'wp-includes/functions.php';
}
global $wpdb;
delete_option('kurl_settings');
delete_option('kurl_delete_data');
delete_option('kurl_log_token');
delete_option('kurl_installed_version');
delete_transient('kurl_dashboard_overview');
$kurl_meta_keys = ['_kurl_shorturl', '_kurl_keyword', '_kurl_stats'];
foreach ($kurl_meta_keys as $kurl_meta_key) {
delete_post_meta_by_key($kurl_meta_key);
}
$kurl_uploads = wp_get_upload_dir();
$kurl_base_dir = isset($kurl_uploads['basedir']) && is_string($kurl_uploads['basedir']) ? $kurl_uploads['basedir'] : '';
if ($kurl_base_dir !== '') {
$kurl_log_dir = trailingslashit($kurl_base_dir) . 'kurl-short-url-manager-yourls';
if (is_link($kurl_log_dir)) {
wp_delete_file($kurl_log_dir);
} elseif (is_dir($kurl_log_dir)) {
kurl_uninstall_delete_dir($kurl_log_dir);
}
}
function kurl_uninstall_delete_dir(string $dir): void {
$dir = untrailingslashit($dir);
if ($dir === '') {
return;
}
if (is_link($dir)) {
wp_delete_file($dir);
return;
}
if (!is_dir($dir)) {
return;
}
$items = @scandir($dir);
if (!is_array($items)) {
return;
}
foreach ($items as $item) {
if ($item === '.' || $item === '..') {
continue;
}
$path = $dir . DIRECTORY_SEPARATOR . $item;
if (is_dir($path) && !is_link($path)) {
kurl_uninstall_delete_dir($path);
} else {
wp_delete_file($path);
}
}
// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_rmdir -- Removing the plugin's dedicated empty log directory during uninstall.
@rmdir($dir);
}