From 92a7156959b43cfaf4728326e3f40d1de70d604e Mon Sep 17 00:00:00 2001 From: Andrew Lima Date: Tue, 26 Mar 2024 15:10:08 +0200 Subject: [PATCH] Update child group status if exists * ENHANCEMENT: Added functionality to update the database record if the member has an inactive status for that same level to re-instate their level. --- classes/class-pmprogroupacct-group-member.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/classes/class-pmprogroupacct-group-member.php b/classes/class-pmprogroupacct-group-member.php index 2d49329..13d2b25 100644 --- a/classes/class-pmprogroupacct-group-member.php +++ b/classes/class-pmprogroupacct-group-member.php @@ -193,7 +193,23 @@ public static function create( $group_child_user_id, $group_child_level_id, $gro return false; } - // Create the group member in the database with an "active" status. + // Check if the group member and group already exists, if so just update the status instead of not doing anything. + $existing_group_member = $wpdb->get_row( + $wpdb->prepare( + "SELECT * FROM {$wpdb->pmprogroupacct_group_members} WHERE group_child_user_id = %d AND group_child_level_id = %d AND group_id = %d AND group_child_status = 'inactive'", + $group_child_user_id, + $group_child_level_id, + $group_id + ) + ); + + if ( ! empty( $existing_group_member ) ) { + $group_member = new self( (int) $existing_group_member->id ); + $group_member->update_group_child_status( 'active' ); + return $existing_group_member->id; + } + + // Create the group member in the database with an "active" status if they don't exist. $wpdb->insert( $wpdb->pmprogroupacct_group_members, array(