PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 All 255 releases
← All changes | uninstall.php +110 -91 2.3.24.16.9 View file →
@@ -1,125 +1,144 @@
1 1 <?php
2 +
2 3 /**
3 4 * Uninstall Give
4 5 *
5 6 * @package Give
6 - * @subpackage Uninstall
7 + * @since 1.0
7 8 * @copyright Copyright (c) 2016, GiveWP
8 9 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 - * @since 1.0
10 + * @subpackage Uninstall
10 11 */
11 12
12 13 // Exit if accessed directly.
13 -if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
14 - exit;
14 +if (!defined('WP_UNINSTALL_PLUGIN')) {
15 + exit;
15 16 }
16 17
17 18 // Load Give file.
18 -include_once( 'give.php' );
19 +include_once('give.php');
19 20
21 +/**
22 + * Initialize the main Give class, which includes loading the code necessary to process the uninstall.
23 + * This is included manually because the plugins_loaded hook does not run on uninstall.
24 + *
25 + * @since 2.7.4
26 + */
27 +give()->init();
28 +
29 +// Prevent checking for plugin updates
30 +remove_filter('pre_set_site_transient_update_plugins', 'give_check_addon_updates', 999);
31 +
20 32 global $wpdb, $wp_roles;
21 33
22 34
23 -if ( give_is_setting_enabled( give_get_option( 'uninstall_on_delete' ) ) ) {
35 +if (give_is_setting_enabled(give_get_option('uninstall_on_delete'))) {
24 36
25 - // Delete All the Custom Post Types.
26 - $give_taxonomies = array( 'form_category', 'form_tag' );
27 - $give_post_types = array( 'give_forms', 'give_payment' );
28 - foreach ( $give_post_types as $post_type ) {
37 + // Delete All the Custom Post Types.
38 + $give_taxonomies = ['form_category', 'form_tag'];
39 + $give_post_types = ['give_forms', 'give_payment'];
40 + foreach ($give_post_types as $post_type) {
29 41
30 - $give_taxonomies = array_merge( $give_taxonomies, get_object_taxonomies( $post_type ) );
31 - $items = get_posts( array(
32 - 'post_type' => $post_type,
33 - 'post_status' => 'any',
34 - 'numberposts' => - 1,
35 - 'fields' => 'ids',
36 - ) );
42 + foreach (get_object_taxonomies($post_type) as $taxonomy) {
43 + $give_taxonomies[] = $taxonomy;
44 + }
37 45
38 - if ( $items ) {
39 - foreach ( $items as $item ) {
40 - wp_delete_post( $item, true );
41 - }
42 - }
43 - }
46 + $items = get_posts(
47 + [
48 + 'post_type' => $post_type,
49 + 'post_status' => 'any',
50 + 'numberposts' => -1,
51 + 'fields' => 'ids',
52 + ]
53 + );
44 54
45 - // Delete All the Terms & Taxonomies.
46 - foreach ( array_unique( array_filter( $give_taxonomies ) ) as $taxonomy ) {
55 + if ($items) {
56 + foreach ($items as $item) {
57 + wp_delete_post($item, true);
58 + }
59 + }
60 + }
47 61
48 - $terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('%s') ORDER BY t.name ASC", $taxonomy ) );
62 + // Delete All the Terms & Taxonomies.
63 + foreach (array_unique(array_filter($give_taxonomies)) as $taxonomy) {
49 64
50 - // Delete Terms.
51 - if ( $terms ) {
52 - foreach ( $terms as $term ) {
53 - $wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $term->term_taxonomy_id ) );
54 - $wpdb->delete( $wpdb->terms, array( 'term_id' => $term->term_id ) );
55 - }
56 - }
65 + $terms = $wpdb->get_results(
66 + $wpdb->prepare(
67 + "
68 + SELECT t.*, tt.*
69 + FROM $wpdb->terms AS t
70 + INNER JOIN $wpdb->term_taxonomy AS tt
71 + ON t.term_id = tt.term_id
72 + WHERE tt.taxonomy IN ('%s')
73 + ORDER BY t.name ASC
74 + ",
75 + $taxonomy
76 + )
77 + );
57 78
58 - // Delete Taxonomies.
59 - $wpdb->delete( $wpdb->term_taxonomy, array( 'taxonomy' => $taxonomy ), array( '%s' ) );
60 - }
79 + // Delete Terms.
80 + if ($terms) {
81 + foreach ($terms as $term) {
82 + $wpdb->delete($wpdb->term_taxonomy, ['term_taxonomy_id' => $term->term_taxonomy_id]);
83 + $wpdb->delete($wpdb->terms, ['term_id' => $term->term_id]);
84 + }
85 + }
61 86
62 - // Delete the Plugin Pages.
63 - $give_created_pages = array( 'success_page', 'failure_page', 'history_page' );
64 - foreach ( $give_created_pages as $p ) {
65 - $page = give_get_option( $p, false );
66 - if ( $page ) {
67 - wp_delete_post( $page, true );
68 - }
69 - }
87 + // Delete Taxonomies.
88 + $wpdb->delete($wpdb->term_taxonomy, ['taxonomy' => $taxonomy], ['%s']);
89 + }
70 90
71 - // Delete Capabilities.
72 - Give()->roles = new Give_Roles();
73 - Give()->roles->remove_caps();
91 + // Delete the Plugin Pages.
92 + $give_created_pages = ['success_page', 'failure_page', 'history_page'];
93 + foreach ($give_created_pages as $p) {
94 + $page = give_get_option($p, false);
95 + if ($page) {
96 + wp_delete_post($page, true);
97 + }
98 + }
74 99
75 - // Delete the Roles.
76 - $give_roles = array( 'give_manager', 'give_accountant', 'give_worker', 'give_donor' );
77 - foreach ( $give_roles as $role ) {
78 - remove_role( $role );
79 - }
100 + // Delete Capabilities.
101 + give()->roles->remove_caps();
80 102
81 - // Remove all database tables.
82 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donors" );
83 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donormeta" );
84 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donationmeta" );
85 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_formmeta" );
86 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_logs" );
87 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_logmeta" );
88 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_comments" );
89 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_commentmeta" );
90 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_sequential_ordering" );
91 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_sessions" );
103 + // Delete the Roles.
104 + $give_roles = ['give_manager', 'give_accountant', 'give_worker', 'give_donor'];
105 + foreach ($give_roles as $role) {
106 + remove_role($role);
107 + }
92 108
93 - // Remove tables which are supported with backward compatibility.
94 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_customers" );
95 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_customermeta" );
96 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_paymentmeta" );
109 + // Remove all give database tables.
110 + $give_tables = $wpdb->get_col("SHOW TABLES LIKE '{$wpdb->prefix}give_%'");
111 + $wpdb->query('DROP TABLE ' . implode(',', $give_tables));
97 112
98 - // Cleanup Cron Events.
99 - wp_clear_scheduled_hook( 'give_daily_scheduled_events' );
100 - wp_clear_scheduled_hook( 'give_weekly_scheduled_events' );
101 - wp_clear_scheduled_hook( 'give_daily_cron' );
102 - wp_clear_scheduled_hook( 'give_weekly_cron' );
113 + // Cleanup Cron Events.
114 + wp_clear_scheduled_hook('give_daily_scheduled_events');
115 + wp_clear_scheduled_hook('give_weekly_scheduled_events');
116 + wp_clear_scheduled_hook('give_daily_cron');
117 + wp_clear_scheduled_hook('give_weekly_cron');
103 118
104 - // Get all options.
105 - $give_option_names = $wpdb->get_col(
106 - $wpdb->prepare(
107 - "SELECT option_name FROM {$wpdb->options} where option_name LIKE '%%%s%%'",
108 - 'give'
109 - )
110 - );
119 + // Get all options.
120 + $give_option_names = $wpdb->get_col(
121 + $wpdb->prepare(
122 + "
123 + SELECT option_name
124 + FROM {$wpdb->options}
125 + WHERE option_name LIKE '%s'
126 + ",
127 + '%give%'
128 + )
129 + );
111 130
112 - if ( ! empty( $give_option_names ) ) {
113 - // Convert option name to transient or option name.
114 - $new_give_option_names = array();
131 + if (!empty($give_option_names)) {
132 + // Convert option name to transient or option name.
133 + $new_give_option_names = [];
115 134
116 - // Delete all the Plugin Options.
117 - foreach ( $give_option_names as $option ) {
118 - if ( false !== strpos( $option, 'give_cache' ) ) {
119 - Give_Cache::delete( $option );
120 - } else {
121 - delete_option( $option );
122 - }
123 - }
124 - }
135 + // Delete all the Plugin Options.
136 + foreach ($give_option_names as $option) {
137 + if (false !== strpos($option, 'give_cache')) {
138 + Give_Cache::delete($option);
139 + } else {
140 + delete_option($option);
141 + }
142 + }
143 + }
125 144 }