From: Steve Sutton Date: Thu, 19 Jul 2018 20:56:01 +0000 (-0400) Subject: Update for more contact cleanup X-Git-Tag: v1.1.12^2~12 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/index.cgi?a=commitdiff_plain;h=65b96231510fdfc774b116a6b8269d122c6e28a2;p=WP-Plugins%2Fglm-member-db-contacts.git Update for more contact cleanup Adding script for removing contacts and users not assigned to a member. --- diff --git a/models/admin/management/contacts.php b/models/admin/management/contacts.php index 849651b..ea32539 100644 --- a/models/admin/management/contacts.php +++ b/models/admin/management/contacts.php @@ -147,6 +147,58 @@ class GlmMembersAdmin_management_contacts extends GlmDataContacts // $result = '
$option2: ' . print_r( $option2, true ) . '
'; switch ( $option2 ) { + case 'nomember': + $sql = " + SELECT id,email + FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts + WHERE ref_dest NOT IN ( + SELECT distinct id FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members + )"; + $member_contacts = $this->wpdb->get_results( $sql, ARRAY_A ); + foreach ( $member_contacts as $member_contact ) { + if ( $member_contact['email'] ) { + $wpUser = get_user_by( 'email', $member_contact['email'] ); + if ( $wpUser ) { + // $result .= '
$wpUser: ' . print_r( $wpUser, true ) . '
'; + // Check for other roles assigned to this user and remove our roles + $userHasOtherRole = false; + foreach ($wpUser->roles as $r) { + if (!in_array($r, $this->config['contact_role_wordpress'])) { + // Apparently not, so we need to keep the Wordpress user + $userHasOtherRole = true; + + //Otherwise, this is one of our roles so we should remove it just in case the Wordpress user isn't deleted + } else { + // Remove this role from our user + $wpUser->remove_role($r); + } + } + // If the user doesn't have a role other than our members contact roles + if (!$userHasOtherRole) { + + // Delete the wordpress user + wp_delete_user($wpUser->ID); + $wpUserDeleted = true; + + // Otherwise we need to drop the user meta data we added to the WP user. + } else { + delete_user_meta($wpUser->ID, 'glmMembersContactID'); + delete_user_meta($wpUser->ID, 'glmMembersContactActive'); + } + } + + } + if ( $member_contact['id'] ) { + // Delete the Member Contact + $this->wpdb->delete( + GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . 'contacts', + array( 'id' => $member_contact['id'] ), + array( '%d' ) + ); + } + } + break; + case 'usernames': $wp_count = 0; $contact_count = 0; @@ -267,6 +319,15 @@ class GlmMembersAdmin_management_contacts extends GlmDataContacts delete_user_meta($wpUser->ID, 'glmMembersContactActive'); } } + + } + if ( $member_contact['id'] ) { + // Delete the Member Contact + $this->wpdb->delete( + GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . 'contacts', + array( 'id' => $member_contact['id'] ), + array( '%d' ) + ); } // Delete member_info records belonging to the archived members. diff --git a/views/admin/management/clean.html b/views/admin/management/clean.html index 06bcfa1..0c1d57d 100644 --- a/views/admin/management/clean.html +++ b/views/admin/management/clean.html @@ -20,6 +20,14 @@ +
+ + + + + +
+ {if $result} {$result} {/if}