mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-18 14:13:46 +09:00
Merge remote-tracking branch 'remotes/origin/fix_uninstall'
This commit is contained in:
+164
-23
@@ -27,6 +27,10 @@ require_once plugin_dir_path( __FILE__ ) . 'includes/class-init.php';
|
||||
$delete_options = UM()->options()->get( 'uninstall_on_delete' );
|
||||
if ( ! empty( $delete_options ) ) {
|
||||
|
||||
//remove uploads
|
||||
$upl_folder = UM()->files()->upload_basedir;
|
||||
UM()->files()->remove_dir( $upl_folder );
|
||||
|
||||
//remove core pages
|
||||
foreach ( UM()->config()->core_pages as $page_key => $page_value ) {
|
||||
$page_id = UM()->options()->get( UM()->options()->get_core_page_id( $page_key ) );
|
||||
@@ -45,38 +49,50 @@ 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
|
||||
) );
|
||||
|
||||
foreach ( $um_posts as $um_post )
|
||||
foreach ( $um_posts as $um_post ){
|
||||
delete_option( 'um_existing_rows_' . $um_post->ID );
|
||||
delete_option( 'um_form_rowdata_' . $um_post->ID );
|
||||
wp_delete_post( $um_post->ID, 1 );
|
||||
|
||||
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' );
|
||||
|
||||
foreach ( wp_load_alloptions() as $k => $v ) {
|
||||
if ( substr( $k, 0, 18 ) == 'um_cache_userdata_' )
|
||||
delete_option( $k );
|
||||
}
|
||||
|
||||
//remove user role meta
|
||||
$role_keys = get_option( 'um_roles' );
|
||||
if ( $role_keys ) {
|
||||
foreach ( $role_keys as $role_key ) {
|
||||
delete_option( 'um_role_' . $role_key . '_meta' );
|
||||
}
|
||||
}
|
||||
|
||||
delete_option( '__ultimatemember_sitekey' );
|
||||
|
||||
//remove all users cache
|
||||
UM()->user()->remove_cache_all_users();
|
||||
|
||||
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
|
||||
@@ -99,6 +115,131 @@ 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
|
||||
$all_tables = "SHOW TABLES LIKE '{$wpdb->prefix}um\_%'";
|
||||
$results = $wpdb->get_results( $all_tables );
|
||||
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
|
||||
//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 );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user