%PDF- %PDF-
Direktori : /var/www/html/ceaa/wp-content/plugins/buddypress/cli/components/ |
Current File : /var/www/html/ceaa/wp-content/plugins/buddypress/cli/components/group-member.php |
<?php namespace Buddypress\CLI\Command; use WP_CLI; /** * Manage BuddyPress group members. * * @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 * * ## 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 * --- * * [--porcelain] * : Return only the added group member id. * * ## EXAMPLES * * $ wp bp group member add --group-id=3 --user-id=10 * Success: Added user #3 to group #3 as member. * * $ 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'] ); // Sanitize role. $role = $assoc_args['role']; if ( empty( $role ) || ! in_array( $role, $this->group_roles(), true ) ) { $role = 'member'; } $joined = groups_join_group( $group_id, $user->ID ); if ( ! $joined ) { WP_CLI::error( 'Could not add user to the group.' ); } if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $user->ID ); } else { if ( 'member' !== $role ) { groups_promote_member( $user->ID, $group_id, $role ); } $success = sprintf( 'Added user #%d to group #%d as %s.', $user->ID, $group_id, $role ); WP_CLI::success( $success ); } } /** * 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 * * $ wp bp group member remove --group-id=3 --user-id=10 * Success: Member #10 removed from the group #3. * * $ wp bp group member delete --group-id=foo --user-id=admin * Success: Member #545 removed from the group #12. * * @alias delete */ public function remove( $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 ); // True on success. if ( $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. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * [--<field>=<value>] * : One or more parameters to pass. See groups_get_group_members() * * ## EXAMPLES * * $ wp bp group member list 3 * $ wp bp group member list my-group * * @subcommand list */ public function _list( $args, $assoc_args ) { $group_id = $this->get_group_id_from_identifier( $args[0] ); $roles = array( 'members' ); if ( isset( $assoc_args['role'] ) ) { if ( is_string( $assoc_args['role'] ) ) { $roles = explode( ',', $assoc_args['role'] ); } else { $roles = $assoc_args['role']; } } // Get our members. $members_query = groups_get_group_members( array( 'group_id' => $group_id, 'exclude_admins_mods' => false, 'group_role' => $roles, ) ); $members = $members_query['members']; // 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( $members ) ) { WP_CLI::error( 'No group members found.' ); } if ( empty( $assoc_args['fields'] ) ) { $fields = array( 'user_id', 'user_login', 'fullname', 'date_modified', 'role', ); $assoc_args['fields'] = $fields; } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $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 (mod, admin). * * ## EXAMPLES * * $ wp bp group member promote --group-id=3 --user-id=10 --role=admin * Success: Member promoted to new role successfully. * * $ 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'] ); $role = $assoc_args['role']; if ( ! in_array( $role, $this->group_roles(), true ) ) { WP_CLI::error( 'You need a valid role to promote the member.' ); } $member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $member->promote( $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 * * $ wp bp group member demote --group-id=3 --user-id=10 * Success: User demoted to the "member" status. * * $ wp bp group member demote --group-id=foo --user-id=admin * Success: User demoted to the "member" status. */ 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'] ); $member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $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 * * $ wp bp group member ban --group-id=3 --user-id=10 * Success: Member banned from the 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'] ); $member = new \BP_Groups_Member( $user->ID, $group_id ); if ( $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 * * $ wp bp group member unban --group-id=3 --user-id=10 * Success: Member unbanned from the 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.' ); } } /** * Group Roles. * * @since 1.5.0 * * @return array An array of group roles. */ protected function group_roles() { return array( 'member', 'mod', 'admin' ); } }