Skip to content

Commit

Permalink
Merge pull request #3793 from impress-org/issue/3638
Browse files Browse the repository at this point in the history
fix: ensure `Delete All Data` actually deletes all data #3638
  • Loading branch information
ravinderk committed Oct 23, 2018
2 parents 995f38b + 5b3b7c9 commit 71a81c4
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 24 deletions.
42 changes: 28 additions & 14 deletions includes/admin/tools/data/class-give-tools-reset-stats.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,27 +113,41 @@ public function get_data() {

switch ( $type ) {
case 'customers':
$sql[] = "DELETE FROM $wpdb->donors WHERE id IN ($ids)";
$table_name = $wpdb->donors;
$meta_table_name = $wpdb->donormeta;
$sql[] = "DELETE FROM $table_name WHERE id IN ($ids)";
$sql[] = "DELETE FROM $meta_table_name WHERE donor_id IN ($ids)";

// Delete all the Give related donor and its meta.
$sql[] = "DELETE FROM {$wpdb->donors}";
$sql[] = "DELETE FROM {$wpdb->donormeta}";
break;
case 'forms':
$sql[] = "UPDATE {$meta_table['name']} SET meta_value = 0 WHERE meta_key = '_give_form_sales' AND {$meta_table['column']['id']} IN ($ids)";
$sql[] = "UPDATE {$meta_table['name']} SET meta_value = 0.00 WHERE meta_key = '_give_form_earnings' AND {$meta_table['column']['id']} IN ($ids)";
break;
case 'other':
$sql[] = "DELETE FROM $wpdb->posts WHERE id IN ($ids)";
$sql[] = "DELETE FROM $wpdb->postmeta WHERE post_id IN ($ids)";
$sql[] = "DELETE FROM $wpdb->comments WHERE comment_post_ID IN ($ids)";
$sql[] = "DELETE FROM $wpdb->give_commentmeta WHERE comment_id NOT IN (SELECT comment_ID FROM $wpdb->comments)";
$sql[] = "DELETE FROM $wpdb->formmeta WHERE form_id IN ($ids)";
$sql[] = "DELETE FROM $wpdb->logmeta WHERE meta_key = '_give_log_form_id' AND meta_value IN ($ids)";
$sql[] = "DELETE FROM {$wpdb->prefix}give_logs WHERE log_parent IN ($ids)";

// Delete main entries of forms and donations exists in posts table.
$sql[] = "DELETE FROM {$wpdb->posts} WHERE id IN ($ids)";

// Delete all the meta rows of form exists in form meta table.
$sql[] = "DELETE FROM {$wpdb->formmeta}";

// Delete all the meta rows of donation exists in donation meta table.
$sql[] = "DELETE FROM {$wpdb->prefix}give_donationmeta";

// Delete all the Give related sequential ordering entries for donations.
$sql[] = "DELETE FROM {$wpdb->prefix}give_sequential_ordering WHERE payment_id IN ($ids)";
$sql[] = "DELETE FROM {$wpdb->prefix}give_donationmeta WHERE donation_id IN ($ids)";

// Delete all the Give related comments and its meta.
$sql[] = "DELETE FROM {$wpdb->give_comments}";
$sql[] = "DELETE FROM {$wpdb->give_commentmeta}";

// Delete all the Give related logs and its meta.
$sql[] = "DELETE FROM {$wpdb->prefix}give_logs";
$sql[] = "DELETE FROM {$wpdb->logmeta}";

// Delete all the Give sessions data.
$sql[] = "DELETE FROM {$wpdb->prefix}give_sessions";

// Delete Give related categories and tags data from taxonomy tables.
$sql[] = $wpdb->prepare(
"
DELETE FROM $wpdb->terms
Expand Down Expand Up @@ -167,7 +181,7 @@ public function get_data() {
}
}

if ( ! empty( $sql ) ) {
if ( is_array( $sql ) && count( $sql ) > 0 ) {
foreach ( $sql as $query ) {
$wpdb->query( $query );
}
Expand Down
25 changes: 15 additions & 10 deletions uninstall.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,21 @@
}

// Remove all database tables.
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_donors' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_donormeta' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_customers' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_customermeta' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_paymentmeta' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_formmeta' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_logs' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_logmeta' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_sequential_ordering' );
$wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'give_sessions' );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donors" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donormeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_donationmeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_formmeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_logs" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_logmeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_comments" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_commentmeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_sequential_ordering" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_sessions" );

// Remove tables which are supported with backward compatibility.
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_customers" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_customermeta" );
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}give_paymentmeta" );

// Cleanup Cron Events.
wp_clear_scheduled_hook( 'give_daily_scheduled_events' );
Expand Down

0 comments on commit 71a81c4

Please sign in to comment.