- remove all UM extensions data from DB

This commit is contained in:
andrewshuba
2019-05-29 18:42:17 +03:00
parent 5bc09b2d4b
commit a0cacee1ae
+130 -29
View File
@@ -49,8 +49,16 @@ if ( ! empty( $delete_options ) ) {
'post_type' => array(
'um_form',
'um_directory',
'um_role'
'um_role',
'um_private_content',
'um_mailchimp',
'um_profile_tabs',
'um_social_login',
'um_review',
'um_frontend_posting',
'um_notice'
),
'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash' ),
'numberposts' => -1
) );
@@ -68,30 +76,6 @@ if ( ! empty( $delete_options ) ) {
}
}
delete_option( 'um_first_activation_date' );
delete_option( 'um_role_subscriber_meta' );
delete_option( 'um_role_author_meta' );
delete_option( 'um_role_contributor_meta' );
delete_option( 'um_role_editor_meta' );
delete_option( 'um_role_administrator_meta' );
delete_option( 'um_roles' );
delete_option( 'um_role_um_user_meta' );
delete_option( 'um_fields' );
delete_option( 'um_roles' );
delete_option( 'um_options' );
delete_option( 'um_version' );
delete_option( 'um_is_installed' );
delete_option( 'um_core_forms' );
delete_option( 'um_core_directories' );
delete_option( 'um_last_version_upgrade' );
delete_option( 'um_first_setup_roles' );
delete_option( 'um_hashed_passwords_fix' );
delete_option( 'um_cached_users_queue' );
delete_option( 'um_options-transients' );
delete_option( 'um_cached_role_admin' );
delete_option( 'um_cached_role_member' );
delete_option( 'um_cache_fonticons' );
delete_option( 'widget_um_search_widget' );
delete_option( '__ultimatemember_sitekey' );
//remove all users cache
@@ -99,6 +83,16 @@ if ( ! empty( $delete_options ) ) {
global $wpdb;
//remove extensions core pages
$ext_pages = $wpdb->get_results( "
SELECT post_id
FROM {$wpdb->postmeta}
WHERE meta_key = '_um_core'
", ARRAY_A );
foreach ( $ext_pages as $page_id ) {
wp_delete_post( $page_id['post_id'], 1 );
}
$wpdb->query(
"DELETE
@@ -121,7 +115,18 @@ if ( ! empty( $delete_options ) ) {
meta_key = '_completed' OR
meta_key = '_cannot_add_review' OR
meta_key = 'synced_profile_photo' OR
meta_key = 'full_name'"
meta_key = 'full_name' OR
meta_key = '_reviews' OR
meta_key = '_reviews_compound' OR
meta_key = '_reviews_total' OR
meta_key = '_reviews_avg'"
);
$wpdb->query(
"DELETE
FROM {$wpdb->postmeta}
WHERE meta_key LIKE '_um%' OR
meta_key LIKE 'um%'"
);
//remove all tables from extensions
@@ -130,15 +135,111 @@ if ( ! empty( $delete_options ) ) {
if( $results ){
foreach( $results as $index => $value ) {
foreach( $value as $table_name ) {
$um_groups_members = $wpdb->prefix.'um_groups_members';
if( $table_name == $um_groups_members ){
$wpdb->query( "
DELETE posts, term_rel, pmeta, terms, tax, commetns
FROM {$wpdb->posts} posts
LEFT JOIN {$wpdb->term_relationships} term_rel
ON (posts.ID = term_rel.object_id)
LEFT JOIN {$wpdb->postmeta} pmeta
ON (posts.ID = pmeta.post_id)
LEFT JOIN {$wpdb->terms} terms
ON (term_rel.term_taxonomy_id = terms.term_id)
LEFT JOIN {$wpdb->term_taxonomy} tax
ON (term_rel.term_taxonomy_id = tax.term_taxonomy_id)
LEFT JOIN {$wpdb->comments} commetns
ON (commetns.comment_post_ID = posts.ID)
WHERE posts.post_type = 'um_groups' OR posts.post_type = 'um_groups_discussion'"
);
}
$wpdb->query( "DROP TABLE IF EXISTS $table_name" );
}
}
}
//remove options from extensions
delete_option( 'um_messaging_last_version_upgrade' );
delete_option( 'um_messaging_version' );
delete_option( 'ultimatemember_messaging_db2' );
//user photos
$um_user_photos = get_posts( array(
'post_type' => array(
'um_user_photos'
),
'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash' ),
'numberposts' => -1
) );
if( $um_user_photos ) {
foreach ( $um_user_photos as $um_user_photo ) {
$attachments = get_attached_media( 'image', $um_user_photo->ID );
foreach ( $attachments as $attachment ) {
wp_delete_attachment( $attachment->ID, 1 );
}
wp_delete_post( $um_user_photo->ID, 1 );
}
}
//user notes
$um_notes = get_posts( array(
'post_type' => array(
'um_notes'
),
'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash' ),
'numberposts' => -1
) );
if( $um_notes ){
foreach ( $um_notes as $um_note ){
$attachments = get_attached_media( 'image', $um_note->ID );
foreach ( $attachments as $attachment ){
wp_delete_attachment( $attachment->ID, 1 );
}
wp_delete_post( $um_note->ID, 1 );
}
}
//user tags
$wpdb->query( "
DELETE tax, terms
FROM {$wpdb->term_taxonomy} tax
LEFT JOIN {$wpdb->terms} terms
ON (tax.term_taxonomy_id = terms.term_id)
WHERE tax.taxonomy = 'um_user_tag'"
);
//mailchimp
$mailchimp_log = UM()->files()->upload_basedir . 'mailchimp.log';
if ( file_exists( $mailchimp_log ) ) {
unlink( $mailchimp_log );
}
$um_options = $wpdb->get_results(
"SELECT option_name
FROM {$wpdb->options}
WHERE option_name LIKE '_um%' OR
option_name LIKE 'um_%' OR
option_name LIKE 'widget_um%' OR
option_name LIKE 'ultimatemember_%'" );
foreach( $um_options as $um_option ) {
delete_option( $um_option->option_name );
}
//social activity
$um_activities = get_posts( array(
'post_type' => array(
'um_activity'
),
'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash' ),
'numberposts' => -1
) );
foreach ( $um_activities as $um_activity ) {
$image = get_post_meta( $um_activity->ID, '_photo', true );
if( $image ){
$user_id = get_post_meta( $um_activity->ID, '_user_id', true );
$upload_dir = wp_upload_dir();
$image_path = $upload_dir['basedir'] . '/ultimatemember/' . $user_id . '/' . $image;
if ( file_exists( $image_path ) ) {
unlink( $image_path );
}
}
wp_delete_post( $um_activity->ID, 1 );
}
}