diff --git a/includes/admin.php b/includes/admin.php index 313ed80..07bb314 100644 --- a/includes/admin.php +++ b/includes/admin.php @@ -215,3 +215,47 @@ function pmprogroupacct_plugin_row_meta($links, $file) { return $links; } add_filter('plugin_row_meta', 'pmprogroupacct_plugin_row_meta', 10, 2); + + +/** + * Import group account member associations when using the Import Users From CSV plugin. + * + * @param WP_User $user The user object that was imported. + * @param int $membership_id The membership level ID that was imported. + * @param MemberOrder|null $order The order object that was created during import. Null if no order is created. + * @since TBD + */ +function pmprogroupacct_pmproiucsv_post_user_import( $user, $membership_id, $order ) { + global $wpdb; + + $group_level_settings = pmprogroupacct_get_settings_for_level( $membership_id ); + $parent_group = PMProGroupAcct_Group::get_group_by_parent_user_id_and_parent_level_id( $user->ID, $membership_id ); + $group_id = $user->pmprogroupacct_group_id; // Child accounts would pass through the Group ID. + $seats = ! empty( $user->pmprogroupacct_group_total_seats ) ? intval( $user->pmprogroupacct_group_total_seats ) : $group_level_settings['max_seats']; + + // Add user to group if their level is a parent level and create the group if it doesn't exist. + if ( ! empty( $parent_group ) ) { + //Update seats if the user has a total seats value from CSV. + $parent_group->update_group_total_seats( $seats ); + } elseif ( empty( $group_id ) ) { + // There is not already a group for this user and level. Let's create one. + PMProGroupAcct_Group::create( $user->ID, $membership_id, $seats ); + } + + // Add the child account if the level is a child level and passed through a group ID. + if ( ! empty( $group_id ) && pmprogroupacct_level_can_be_claimed_using_group_codes( $membership_id ) ) { + + // Let's set all previous instances to "inactive" before trying to insert the child record. + $wpdb->query( + $wpdb->prepare( + "UPDATE $wpdb->pmprogroupacct_group_members SET group_child_status = 'inactive' WHERE group_child_user_id = %d AND group_child_level_id = %d", + $user->ID, + $membership_id + ) + ); + + // Add them back. + PMProGroupAcct_Group_Member::create( $user->ID, $membership_id, $group_id ); + } +} +add_action( 'pmproiucsv_after_member_import', 'pmprogroupacct_pmproiucsv_post_user_import', 10, 3 ); \ No newline at end of file