PluginProbe ʕ •ᴥ•ʔ
Smush – Image Optimization, Compression, Lazy Load, WebP & CDN / 3.15.2
Smush – Image Optimization, Compression, Lazy Load, WebP & CDN v3.15.2
4.1.0 4.0.3 4.0.2 2.8.1 2.9.1 3.0.0 3.0.1 3.0.2 3.1.1 3.10.1 3.10.2 3.10.3 3.11.1 3.12.3 3.12.4 3.12.5 3.12.6 3.13.0 3.13.1 3.13.2 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.2 3.16.4 3.16.5 3.16.6 3.17.0 3.17.1 3.18.0 3.18.1 3.2.0.1 3.2.1 3.2.2.1 3.2.4 3.20.0 3.21.1 3.22.1 3.22.3 3.23.0 3.23.1 3.23.2 3.23.3 3.23.4 3.24.0 3.24.0-beta.2 3.3.0 3.3.1 3.3.2 3.4.1 3.4.2 3.6.1 3.6.3 3.7.0 3.7.1 3.7.2 3.7.3 3.8.2 3.8.3 3.8.4 3.8.5 3.8.7 3.8.8 3.9.0 3.9.1 3.9.11 3.9.2 3.9.4 3.9.5 3.9.8 3.9.9 trunk 1.0.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.2 1.2.1 1.2.10 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.5.3 1.6.5.4 1.7 1.7.1 1.7.1.1 2.0 2.0.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.6.2 2.0.6.3 2.0.6.5 2.0.7 2.0.7.1 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.2 2.3 2.3.1 2.4 2.4.2 2.4.3 2.4.4 2.4.5 2.5.2 2.5.3 2.6.1 2.6.2 2.6.3 2.7 2.7.1 2.7.4 2.7.4.1 2.7.5 2.7.6 2.7.8 2.7.8.1 2.7.9.1 2.8.0 2.8.0.1
wp-smushit / uninstall.php
wp-smushit Last commit date
_src 2 years ago app 2 years ago core 2 years ago languages 2 years ago vendor 2 years ago readme.txt 2 years ago uninstall.php 2 years ago wp-smush.php 2 years ago
uninstall.php
202 lines
1 <?php
2 /**
3 * Remove plugin settings data.
4 *
5 * @since 1.7
6 * @package Smush
7 */
8
9 use Smush\Core\Settings;
10
11 // If uninstall not called from WordPress exit.
12 if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
13 exit();
14 }
15
16 if ( ! class_exists( '\\Smush\\Core\\Settings' ) ) {
17 /* @noinspection PhpIncludeInspection */
18 include_once plugin_dir_path( __FILE__ ) . '/core/class-settings.php';
19 }
20 $keep_data = Settings::get_instance()->get( 'keep_data' );
21
22 // Check if someone want to keep the stats and settings.
23 if ( ( defined( 'WP_SMUSH_PRESERVE_STATS' ) && WP_SMUSH_PRESERVE_STATS ) || true === $keep_data ) {
24 return;
25 }
26
27 global $wpdb;
28
29 $smushit_keys = array(
30 'wp-smush-resmush-list',
31 'wp-smush-nextgen-resmush-list',
32 'wp-smush-resize_sizes',
33 'wp-smush-transparent_png',
34 'wp-smush-image_sizes',
35 'wp-smush-super_smushed',
36 'wp-smush-super_smushed_nextgen',
37 'wp-smush-settings_updated',
38 'wp-smush-hide_update_info',
39 'wp-smush-install-type',
40 'wp-smush-version',
41 'wp-smush-scan',
42 'wp-smush-settings',
43 'wp-smush-cdn_status',
44 'wp-smush-lazy_load',
45 'wp-smush-last_run_sync',
46 'wp-smush-networkwide',
47 'wp-smush-cron_update_running',
48 'wp-smush-dismissed-notices',
49 'wp-smush-show_upgrade_modal',
50 'wp-smush-preset_configs',
51 'wp-smush-webp_hide_wizard',
52 'wp-smush-hide-tutorials',
53 'wp-smush-hide_tutorials_from_bulk_smush', // Possible leftover from 3.8.4.
54 'wp-smush-png2jpg-rewrite-rules-flushed',
55 'wp-smush-optimization-global-stats',
56 'wp-smush-resize-global-stats',
57 'wp-smush-png2jpg-global-stats',
58 'wp_smush_skip_image_sizes_recheck',
59 'wp_smush_image_sizes_state',
60 'wp_smush_global_stats',
61 'wp-smush-optimize-list',
62 'wp-smush-reoptimize-list',
63 'wp-smush-error-items-list',
64 'wp-smush-plugin-activated',
65 'wp_smush_run_optimize_on_scan_completed',
66 'wp-smush-nextgen-reoptimize-list',
67 'wp-smush-nextgen-super-smushed-list',
68 'wp_smush_scan_slice_size',
69 );
70
71 $db_keys = array(
72 'skip-smush-setup',
73 'smush_global_stats',
74 'wp_smush_stats_nextgen',
75 );
76
77 // Cache Keys.
78 $cache_smush_group = array(
79 'exceeding_items',
80 'wp-smush-resize_count',
81 'wp-smush-resize_savings',
82 'wp-smush-pngjpg_savings',
83 'wp-smush-smushed_ids',
84 'media_attachments',
85 'skipped_images',
86 'images_with_backups',
87 'wp-smush-dir_total_stats',
88 );
89
90 $cache_nextgen_group = array(
91 'wp_smush_images',
92 'wp_smush_images_smushed',
93 'wp_smush_images_unsmushed',
94 'wp_smush_stats_nextgen',
95 );
96
97 if ( ! is_multisite() ) {
98 // Delete Options.
99 foreach ( $smushit_keys as $key ) {
100 delete_option( $key );
101 delete_site_option( $key );
102 }
103
104 foreach ( $db_keys as $key ) {
105 delete_option( $key );
106 delete_site_option( $key );
107 }
108
109 // Delete Cache data.
110 foreach ( $cache_smush_group as $s_key ) {
111 wp_cache_delete( $s_key, 'wp-smush' );
112 }
113
114 foreach ( $cache_nextgen_group as $n_key ) {
115 wp_cache_delete( $n_key, 'nextgen' );
116 }
117
118 wp_cache_delete( 'get_image_sizes', 'smush_image_sizes' );
119
120 delete_transient( 'wp-smush-conflict_check' );
121 }
122
123 // Delete Directory Smush stats.
124 delete_option( 'dir_smush_stats' );
125 delete_option( 'wp_smush_scan' );
126 delete_option( 'wp_smush_api_auth' );
127 delete_site_option( 'wp_smush_api_auth' );
128
129 // Delete Post meta.
130 $meta_type = 'post';
131 $meta_key = 'wp-smpro-smush-data';
132 $meta_value = '';
133 $delete_all = true;
134
135 if ( is_multisite() ) {
136 $offset = 0;
137 $limit = 100;
138 while ( $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs} LIMIT $offset, $limit", ARRAY_A ) ) {
139 if ( $blogs ) {
140 foreach ( $blogs as $blog ) {
141 switch_to_blog( $blog['blog_id'] );
142 delete_metadata( $meta_type, null, $meta_key, $meta_value, $delete_all );
143 delete_metadata( $meta_type, null, 'wp-smush-lossy', '', $delete_all );
144 delete_metadata( $meta_type, null, 'wp-smush-resize_savings', '', $delete_all );
145 delete_metadata( $meta_type, null, 'wp-smush-original_file', '', $delete_all );
146 delete_metadata( $meta_type, null, 'wp-smush-pngjpg_savings', '', $delete_all );
147
148 foreach ( $smushit_keys as $key ) {
149 delete_option( $key );
150 delete_site_option( $key );
151 }
152
153 foreach ( $db_keys as $key ) {
154 delete_option( $key );
155 delete_site_option( $key );
156 }
157
158 // Delete Cache data.
159 foreach ( $cache_smush_group as $s_key ) {
160 wp_cache_delete( $s_key, 'wp-smush' );
161 }
162
163 foreach ( $cache_nextgen_group as $n_key ) {
164 wp_cache_delete( $n_key, 'nextgen' );
165 }
166
167 wp_cache_delete( 'get_image_sizes', 'smush_image_sizes' );
168 }
169 restore_current_blog();
170 }
171 $offset += $limit;
172 }
173 } else {
174 delete_metadata( $meta_type, null, $meta_key, $meta_value, $delete_all );
175 delete_metadata( $meta_type, null, 'wp-smush-lossy', '', $delete_all );
176 delete_metadata( $meta_type, null, 'wp-smush-resize_savings', '', $delete_all );
177 delete_metadata( $meta_type, null, 'wp-smush-original_file', '', $delete_all );
178 delete_metadata( $meta_type, null, 'wp-smush-pngjpg_savings', '', $delete_all );
179 }
180 // Delete Directory smush table.
181 $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->base_prefix}smush_dir_images" );
182
183 // Delete directory scan data.
184 delete_option( 'wp-smush-scan-step' );
185
186 // Delete all WebP images.
187 global $wp_filesystem;
188 if ( is_null( $wp_filesystem ) ) {
189 WP_Filesystem();
190 }
191
192 $upload_dir = wp_get_upload_dir();
193 $webp_dir = dirname( $upload_dir['basedir'] ) . '/smush-webp';
194 $wp_filesystem->delete( $webp_dir, true );
195
196 // Delete WebP test image.
197 $webp_img = $upload_dir['basedir'] . '/smush-webp-test.png';
198 $wp_filesystem->delete( $webp_img );
199
200 // TODO: Add procedure to delete backup files
201 // TODO: Update NextGen Metadata to remove Smush stats on plugin deletion.
202