PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / includes / installation / class-uninstall.php
advanced-ads / includes / installation Last commit date
class-capabilities.php 1 year ago class-compatibility.php 1 year ago class-install.php 1 year ago class-uninstall.php 1 year ago index.php 1 year ago
class-uninstall.php
177 lines
1 <?php
2 /**
3 * The class provides plugin uninstallation routines.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.47.0
8 */
9
10 namespace AdvancedAds\Installation;
11
12 use Advanced_Ads;
13 use AdvancedAds\Widget;
14 use AdvancedAds\Entities;
15 use AdvancedAds\Constants;
16 use Advanced_Ads_Ad_Blocker_Admin;
17 use AdvancedAds\Admin\Metabox_Ad_Settings;
18 use AdvancedAds\Framework\Interfaces\Initializer_Interface;
19
20 defined( 'ABSPATH' ) || exit;
21
22 /**
23 * Installation Uninstall.
24 *
25 * phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery
26 * phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching
27 */
28 class Uninstall implements Initializer_Interface {
29
30 /**
31 * Runs this initializer.
32 *
33 * @return void
34 */
35 public function initialize(): void {
36 $advads_options = Advanced_Ads::get_instance()->options();
37
38 // Early bail!!
39 if ( empty( $advads_options['uninstall-delete-data'] ) ) {
40 return;
41 }
42
43 // Delete assets (main blog).
44 Advanced_Ads_Ad_Blocker_Admin::get_instance()->clear_assets();
45 ( new Entities() )->hooks();
46
47 if ( ! is_multisite() ) {
48 $this->uninstall();
49 return;
50 }
51
52 $site_ids = Install::get_sites();
53
54 if ( empty( $site_ids ) ) {
55 return;
56 }
57
58 foreach ( $site_ids as $site_id ) {
59 switch_to_blog( $site_id );
60 $this->uninstall();
61 restore_current_blog();
62 }
63 }
64
65 /**
66 * Fired for each blog when the plugin is uninstalled.
67 *
68 * @return void
69 */
70 private function uninstall(): void { // phpcs:ignore Universal.CodeAnalysis.ConstructorDestructorReturn.ReturnTypeFound
71 $this->delete_post_types();
72 $this->delete_groups();
73 $this->delete_options();
74 $this->delete_usermeta();
75
76 wp_cache_flush();
77 }
78
79 /**
80 * Delete ads posts and postmeta.
81 *
82 * @return void
83 */
84 private function delete_post_types(): void {
85 $post_ids = get_posts(
86 [
87 'post_type' => [ Constants::POST_TYPE_AD, Constants::POST_TYPE_PLACEMENT ],
88 'post_status' => 'any',
89 'posts_per_page' => -1,
90 'fields' => 'ids',
91 ]
92 );
93
94 if ( ! empty( $post_ids ) ) {
95 foreach ( $post_ids as $ad_id ) {
96 wp_delete_post( $ad_id, true );
97 }
98 }
99
100 // Delete from postmeta.
101 delete_metadata( 'post', null, Metabox_Ad_Settings::SETTING_METAKEY, '', true );
102 }
103
104 /**
105 * Delete groups.
106 *
107 * @return void
108 */
109 private function delete_groups(): void {
110 global $wpdb;
111
112 $term_ids = $wpdb->get_col(
113 $wpdb->prepare( "SELECT t.term_id FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s", Constants::TAXONOMY_GROUP )
114 );
115
116 foreach ( $term_ids as $term_id ) {
117 wp_delete_term( $term_id, Constants::TAXONOMY_GROUP );
118 }
119 }
120
121 /**
122 * Delete options.
123 *
124 * @return void
125 */
126 private function delete_options(): void {
127 global $wpdb;
128
129 $prefixes = [
130 'advads_',
131 'advads-',
132 'advanced_ads_',
133 'advanced-ads-',
134 ];
135
136 foreach ( $prefixes as $prefix ) {
137 $wpdb->query(
138 $wpdb->prepare(
139 "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s",
140 $wpdb->esc_like( $prefix ) . '%'
141 )
142 );
143 }
144
145 delete_option( 'advanced-ads' );
146 delete_option( 'widget_' . Widget::get_base_id() );
147 delete_option( 'Advanced Ads Pro-internal' );
148
149 // Transients.
150 delete_transient( 'advanced-ads_add-on-updates-checked' );
151 delete_transient( 'advanced-ads-daily-ad-health-check-ran' );
152 delete_transient( 'advads-versions-list' );
153 delete_transient( 'advads_feed_posts_v2' );
154 delete_transient( 'advanced-ads-gam-all-units' );
155 }
156
157 /**
158 * Delete usermeta.
159 *
160 * @return void
161 */
162 private function delete_usermeta(): void {
163 delete_metadata( 'user', null, Constants::USER_WIZARD_DISMISS, '', true );
164 delete_metadata( 'user', null, 'advanced-ads-hide-wizard', '', true );
165 delete_metadata( 'user', null, 'advanced-ads-subscribed', '', true );
166 delete_metadata( 'user', null, 'advanced-ads-ad-list-screen-options', '', true );
167 delete_metadata( 'user', null, 'advanced-ads-admin-settings', '', true );
168 delete_metadata( 'user', null, 'advanced-ads-role', '', true );
169 delete_metadata( 'user', null, 'edit_advanced_ads_per_page', '', true );
170 delete_metadata( 'user', null, 'meta-box-order_advanced_ads', '', true );
171 delete_metadata( 'user', null, 'screen_layout_advanced_ads', '', true );
172 delete_metadata( 'user', null, 'closedpostboxes_advanced_ads', '', true );
173 delete_metadata( 'user', null, 'metaboxhidden_advanced_ads', '', true );
174 delete_metadata( 'user', null, 'advads-ad-screen-options', '', true );
175 }
176 }
177