Test Failed
Push — release/1.8.12 ( b58a2f...d255b1 )
by Ravinder
375:09 queued 372:17
created

uninstall.php (13 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Uninstall Give
4
 *
5
 * @package     Give
6
 * @subpackage  Uninstall
7
 * @copyright   Copyright (c) 2016, WordImpress
8
 * @license     https://opensource.org/licenses/gpl-license GNU Public License
9
 * @since       1.0
10
 */
11
12
// Exit if accessed directly.
13
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
14
	exit;
15
}
16
17
// Load Give file.
18
include_once( 'give.php' );
19
20
global $wpdb, $wp_roles;
21
22
23
if ( give_is_setting_enabled( give_get_option( 'uninstall_on_delete' ) ) ) {
24
25
	// Delete All the Custom Post Types.
26
	$give_taxonomies = array( 'form_category', 'form_tag', 'give_log_type' );
27
	$give_post_types = array( 'give_forms', 'give_payment', 'give_log' );
28
	foreach ( $give_post_types as $post_type ) {
29
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
		) );
37
38
		if ( $items ) {
39
			foreach ( $items as $item ) {
40
				wp_delete_post( $item, true );
41
			}
42
		}
43
	}
44
45
	// Delete All the Terms & Taxonomies.
46
	foreach ( array_unique( array_filter( $give_taxonomies ) ) as $taxonomy ) {
47
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 ) );
0 ignored issues
show
Usage of a direct database call is discouraged.
Loading history...
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
49
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
		}
57
58
		// Delete Taxonomies.
59
		$wpdb->delete( $wpdb->term_taxonomy, array( 'taxonomy' => $taxonomy ), array( '%s' ) );
60
	}
61
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
	}
70
71
	// Delete Capabilities.
72
	Give()->roles = new Give_Roles();
73
	Give()->roles->remove_caps();
74
75
	// Delete the Roles.
76
	$give_roles = array( 'give_manager', 'give_accountant', 'give_worker' );
77
	foreach ( $give_roles as $role ) {
78
		remove_role( $role );
79
	}
80
81
	// Remove all database tables.
82
	$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_donors' );
0 ignored issues
show
Usage of a direct database call is discouraged.
Loading history...
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
Attempting a database schema change is highly discouraged.
Loading history...
83
	$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_customers' );
0 ignored issues
show
Usage of a direct database call is discouraged.
Loading history...
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
Attempting a database schema change is highly discouraged.
Loading history...
84
	$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_customermeta' );
0 ignored issues
show
Usage of a direct database call is discouraged.
Loading history...
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
Attempting a database schema change is highly discouraged.
Loading history...
85
86
	// Cleanup Cron Events.
87
	wp_clear_scheduled_hook( 'give_daily_scheduled_events' );
88
	wp_clear_scheduled_hook( 'give_daily_cron' );
89
	wp_clear_scheduled_hook( 'give_weekly_cron' );
90
91
	// Get all options.
92
	$give_option_names = $wpdb->get_col(
0 ignored issues
show
Usage of a direct database call is discouraged.
Loading history...
Usage of a direct database call without caching is prohibited. Use wp_cache_get / wp_cache_set.
Loading history...
93
		$wpdb->prepare(
94
			"SELECT option_name FROM {$wpdb->options} where option_name LIKE '%%%s%%'",
95
			'give'
96
		)
97
	);
98
99
	if ( ! empty( $give_option_names ) ) {
100
		// Convert option name to transient or option name.
101
		$new_give_option_names = array();
102
103
		// Delete all the Plugin Options.
104
		foreach ( $give_option_names as $option ) {
105
			if ( false !== strpos( $option, 'give_cache' ) ) {
106
				Give_Cache::delete( $option );
107
			} else {
108
				delete_option( $option );
109
			}
110
		}
111
	}
112
}
113