| @@ -12,11 +12,12 @@ | ||
| 12 | 12 | |
| 13 | 13 | // Include file of Database Class. |
| 14 | 14 | require_once dirname( __FILE__ ) . '/includes/db.php'; |
| 15 | 15 | |
| 16 | -$options = get_option( 'sellkit', [] ); | |
| 16 | +$sellkit_options = get_option( 'sellkit', [] ); | |
| 17 | +$sellkit_multisite_delete_switch = is_multisite() ? get_site_option( 'delete_data' ) : false; | |
| 17 | 18 | |
| 18 | -if ( '1' === $options['delete_data'] ) { | |
| 19 | +if ( '1' === $sellkit_options['delete_data'] || '1' === $sellkit_multisite_delete_switch ) { | |
| 19 | 20 | // Drop Sellkit admin tables. |
| 20 | 21 | Sellkit\Database::drop_all_tables(); |
| 21 | 22 | |
| 22 | 23 | // Delete sellkit option from wp_options. |
| @@ -21,7 +22,88 @@ | ||
| 21 | 22 | |
| 22 | 23 | // Delete sellkit option from wp_options. |
| 23 | 24 | delete_option( 'sellkit' ); |
| 24 | 25 | |
| 26 | + if ( is_multisite() ) { | |
| 27 | + sellkit_multisite_remove_tables(); | |
| 28 | + sellkit_multisite_remove_data(); | |
| 29 | + } | |
| 30 | + | |
| 31 | + sellkit_delete_posts(); | |
| 32 | +} | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Deletes posts. | |
| 36 | + * | |
| 37 | + * @since 1.3.2 | |
| 38 | + * @return void | |
| 39 | + */ | |
| 40 | +function sellkit_delete_posts() { | |
| 41 | + global $wpdb; | |
| 42 | + | |
| 43 | + $posts_id = $wpdb->prefix . 'posts.id'; | |
| 44 | + $meta_id = $wpdb->prefix . 'postmeta.post_id'; | |
| 45 | + $posts = $wpdb->prefix . 'posts'; // phpcs:ignore | |
| 46 | + $meta = $wpdb->prefix . 'postmeta'; | |
| 47 | + $post_type = $wpdb->prefix . 'posts.post_type'; //phpcs:ignore | |
| 48 | + | |
| 49 | + // phpcs:disable | |
| 50 | + $wpdb->query( | |
| 51 | + "DELETE $posts, $meta | |
| 52 | + FROM $posts | |
| 53 | + INNER JOIN $meta ON $meta_id = $posts_id | |
| 54 | + WHERE $post_type IN ( 'sellkit-funnels', 'sellkit_step' )" | |
| 55 | + ); | |
| 56 | + // phpcs:enable | |
| 57 | + | |
| 58 | + // Unset sellkit cookie. | |
| 59 | + setcookie( 'sellkit_contact_segmentation', null, -1, '/' ); | |
| 60 | + | |
| 25 | 61 | // Clear any cached data that has been removed. |
| 26 | 62 | wp_cache_flush(); |
| 63 | + | |
| 64 | + // Temporary option. | |
| 65 | + update_option( 'sellkit_pro_delete_data', '1' ); | |
| 66 | +} | |
| 67 | + | |
| 68 | +/** | |
| 69 | + * Removes tables. | |
| 70 | + * | |
| 71 | + * @since 1.3.2 | |
| 72 | + * @return void | |
| 73 | + */ | |
| 74 | +function sellkit_multisite_remove_tables() { | |
| 75 | + global $wpdb; | |
| 76 | + | |
| 77 | + $database_name = DB_NAME; | |
| 78 | + | |
| 79 | + // phpcs:disable | |
| 80 | + $query = $wpdb->get_results( " | |
| 81 | + SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) | |
| 82 | + AS statement FROM information_schema.tables | |
| 83 | + WHERE table_schema = '$database_name' AND ( table_name LIKE '%_sellkit_contact_segmentation' OR table_name LIKE '%_sellkit_applied_funnel' ); | |
| 84 | + " ); | |
| 85 | + | |
| 86 | + if ( ! empty( $query[0]->statement ) ) { | |
| 87 | + $wpdb->query( $query[0]->statement ); | |
| 88 | + } | |
| 89 | + // phpcs:enable | |
| 90 | +} | |
| 91 | + | |
| 92 | +/** | |
| 93 | + * Removes multisite data. | |
| 94 | + * | |
| 95 | + * @since 1.3.2 | |
| 96 | + * @return void | |
| 97 | + */ | |
| 98 | +function sellkit_multisite_remove_data() { | |
| 99 | + $sites = get_sites(); | |
| 100 | + | |
| 101 | + foreach ( $sites as $site ) { | |
| 102 | + switch_to_blog( $site->blog_id ); | |
| 103 | + sellkit_delete_posts(); | |
| 104 | + delete_option( 'sellkit' ); | |
| 105 | + restore_current_blog(); | |
| 106 | + } | |
| 107 | + | |
| 108 | + delete_site_option( 'delete_data' ); | |
| 27 | 109 | } |