Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
wp-content
/
plugins
/
buddypress
/
cli
/
src
/
Filename :
group-member.php
back
Copy
<?php namespace Buddypress\CLI\Command; use WP_CLI; /** * Manage BuddyPress group members. * * ## EXAMPLES * * # Add a user to a group as a member. * $ wp bp group member add --group-id=3 --user-id=10 * Success: Added user #3 to group #3 as member. * * # Add a user to a group as a mod. * $ wp bp group member create --group-id=bar --user-id=20 --role=mod * Success: Added user #20 to group #45 as mod. * * @since 1.5.0 */ class Group_Member extends BuddyPressCommand { /** * Group ID Object Key * * @var string */ protected $obj_id_key = 'group_id'; /** * Group Object Type * * @var string */ protected $obj_type = 'group'; /** * Add a member to a group. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * [--role=<role>] * : Group member role (member, mod, admin). * --- * default: member * options: * - member * - mod * - admin * --- * * ## EXAMPLES * * # Add a user to a group as a member. * $ wp bp group member add --group-id=3 --user-id=10 * Success: Added user #3 to group #3 as member. * * # Add a user to a group as a moderator. * $ wp bp group member create --group-id=bar --user-id=20 --role=mod * Success: Added user #20 to group #45 as mod. * * @alias add */ public function create( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); $role = $assoc_args['role']; $joined = groups_join_group( $group_id, $user->ID ); if ( ! $joined ) { WP_CLI::error( 'Could not add user to the group.' ); } if ( 'member' !== $role ) { $group_member = new \BP_Groups_Member( $user->ID, $group_id ); $group_member->promote( $role ); } WP_CLI::success( sprintf( 'Added user #%d to group #%d as %s.', $user->ID, $group_id, $role ) ); } /** * Remove a member from a group. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * ## EXAMPLES * * # Remove a member from a group. * $ wp bp group member remove --group-id=3 --user-id=10 * Success: Member #10 removed from the group #3. * * # Remove a member from a group. * $ wp bp group member delete --group-id=foo --user-id=admin * Success: Member #545 removed from the group #12. * * @alias remove * @alias trash */ public function delete( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); $group_member = new \BP_Groups_Member( $user->ID, $group_id ); // Check if the user is the only admin of the group. if ( (bool) $group_member->is_admin ) { $group_admins = groups_get_group_admins( $group_id ); if ( 1 === count( $group_admins ) ) { WP_CLI::error( 'Cannot remove the only admin of the group.' ); } } // True on success. if ( $group_member->remove() ) { WP_CLI::success( sprintf( 'Member #%d removed from the group #%d.', $user->ID, $group_id ) ); } else { WP_CLI::error( 'Could not remove member from the group.' ); } } /** * Get a list of group memberships. * * This command can be used to fetch a list of a user's groups (using the --user-id * parameter) or a group's members (using the --group-id flag). * * ## OPTIONS * * <group-id> * : Identifier for the group. Can be a numeric ID or the group slug. * * [--fields=<fields>] * : Limit the output to specific signup fields. * * [--<field>=<value>] * : One or more parameters to pass. See groups_get_group_members() * * [--role=<role>] * : Limit the output to members with a specific role. * --- * default: members * options: * - members * - mod * - admin * - banned * --- * * [--count=<number>] * : How many members to list. * --- * default: 50 * --- * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each group member: * * * id * * user_login * * fullname * * date_modified * * role * * ## EXAMPLE * * # Get a list of group members. * $ wp bp group member list 3 * +---------+------------+----------+---------------------+-------+ * | id | user_login | fullname | date_modified | role | * +---------+------------+----------+---------------------+-------+ * | 1 | user | User | 2022-07-04 02:12:02 | admin | * +---------+------------+----------+---------------------+-------+ * * # Get a list of group members and get the count. * $ wp bp group member list 65465 --format=count * 100 * * @subcommand list */ public function list_( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $args[0] ); // Get our members. $members_query = groups_get_group_members( [ 'per_page' => $assoc_args['count'], 'group_id' => $group_id, 'exclude_admins_mods' => false, 'group_role' => [ $assoc_args['role'] ], ] ); $members = $members_query['members']; if ( empty( $members ) ) { WP_CLI::error( 'No group members found.' ); } // Make 'role' human-readable. foreach ( $members as &$member ) { $role = 'member'; if ( $member->is_mod ) { $role = 'mod'; } elseif ( $member->is_admin ) { $role = 'admin'; } $member->role = $role; } if ( empty( $assoc_args['fields'] ) ) { $assoc_args['fields'] = [ 'id', 'user_login', 'fullname', 'date_modified', 'role', ]; } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( 'ids' === $formatter->format ? wp_list_pluck( $members, 'user_id' ) : $members ); } /** * Promote a member to a new status within a group. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * --role=<role> * : Group role to promote the member. * --- * options: * - mod * - admin * --- * * ## EXAMPLES * * # Promote a member to a new role. * $ wp bp group member promote --group-id=3 --user-id=10 --role=admin * Success: Member promoted to new role successfully. * * # Promote a member to a new role. * $ wp bp group member promote --group-id=foo --user-id=admin --role=mod * Success: Member promoted to new role successfully. */ public function promote( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); $group_member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $group_member->promote( $assoc_args['role'] ) ) { WP_CLI::success( 'Member promoted to new role successfully.' ); } else { WP_CLI::error( 'Could not promote the member.' ); } } /** * Demote user to the 'member' status. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * ## EXAMPLES * * # Demote a user to the "member" status using numeric IDs. * $ wp bp group member demote --group-id=3 --user-id=10 * Success: User demoted to the "member" status. * * # Demote a user to the "member" status using slugs. * $ wp bp group member demote --group-id=foo --user-id=admin * Success: User demoted to the "member" status. * * # Demote a user not part of the group. * $ wp bp group member demote --group-id=foo --user-id=admin * Error: User is not a member of the group. */ public function demote( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); // Check if the user is a member of the group. if ( ! groups_is_user_member( $user->ID, $group_id ) ) { WP_CLI::error( 'User is not a member of the group.' ); } $group_member = new \BP_Groups_Member( $user->ID, $group_id ); // Check if the user is the only admin of the group. if ( (bool) $group_member->is_admin ) { $group_admins = groups_get_group_admins( $group_id ); if ( 1 === count( $group_admins ) ) { WP_CLI::error( 'Cannot demote the only admin of the group.' ); } } if ( $group_member->demote() ) { WP_CLI::success( 'User demoted to the "member" status.' ); } else { WP_CLI::error( 'Could not demote the member.' ); } } /** * Ban a member from a group. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * ## EXAMPLES * * # Ban a member from a group. * $ wp bp group member ban --group-id=3 --user-id=10 * Success: Member banned from the group. * * # Ban a member from a group. * $ wp bp group member ban --group-id=foo --user-id=admin * Success: Member banned from the group. */ public function ban( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); // Check if the user is a member of the group. if ( ! groups_is_user_member( $user->ID, $group_id ) ) { WP_CLI::error( 'User is not a member of the group.' ); } $group_member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $group_member->ban() ) { WP_CLI::success( 'Member banned from the group.' ); } else { WP_CLI::error( 'Could not ban the member.' ); } } /** * Unban a member from a group. * * ## OPTIONS * * --group-id=<group> * : Identifier for the group. Accepts either a slug or a numeric ID. * * --user-id=<user> * : Identifier for the user. Accepts either a user_login or a numeric ID. * * ## EXAMPLES * * # Unban a member from a group. * $ wp bp group member unban --group-id=3 --user-id=10 * Success: Member unbanned from the group. * * # Unban a member from a group. * $ wp bp group member unban --group-id=foo --user-id=admin * Success: Member unbanned from the group. */ public function unban( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $assoc_args['group-id'] ); $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); $member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $member->unban() ) { WP_CLI::success( 'Member unbanned from the group.' ); } else { WP_CLI::error( 'Could not unban the member.' ); } } }