[buddypress-trac] [BuddyPress Trac] #4316: typo in action name in groups_promote_member()
buddypress-trac
noreply at wordpress.org
Sun Feb 4 18:22:34 UTC 2024
#4316: typo in action name in groups_promote_member()
--------------------------+---------------------
Reporter: DJPaul | Owner: (none)
Type: defect (bug) | Status: closed
Priority: normal | Milestone: 1.6
Component: Groups | Version:
Severity: trivial | Resolution: fixed
Keywords: |
--------------------------+---------------------
Comment (by cesurumben):
The code works by taking a map of member type to group role. You only need
to specify the map for the group admin and moderator role.
Here is the code.
PHP
/**
* Promote user as the group admin for the given member types.
*
* @param int $user_id user id whose member type is changing.
* @param string $member_type new member type name.
* @param bool $append is it appending or resetting.
*/
function buddydev_promote_as_group_admin_on_member_types_update( $user_id,
$member_type, $append ) {
// Update with your member types.
// we don't do anything on member type reset or if our plugin is
not active.
if ( empty( $member_type ) || ! function_exists(
'bpmtp_member_types_pro' ) ) {
return;
}
// use member type slug(unique name) here, It is not label.
// member type to role map, use
member_type_name=>group_role(admin|mod).
$member_types_role_map = array(
'advisor' => 'admin',// users will be added as group
admin.
'officer' => 'mod', // All users with this member type
will be added as the moderator to their respective group.
);
if ( ! isset( $member_types_role_map[ $member_type ] ) ) {
return;// member was already added by member types pro and
it is not our member type.
}
$role = $member_types_role_map[ $member_type ];
// if we are here, let us upgrade the membership.
// Get active types.
$active_types = bpmtp_get_active_member_type_entries();
if ( empty( $member_type ) || empty( $active_types ) || empty(
$active_types[ $member_type ] ) ) {
return;
}
$mt_object = $active_types[ $member_type ];
$groups = get_post_meta( $mt_object->post_id,
'_bp_member_type_groups', true );
if ( empty( $groups ) ) {
return;
}
$user = get_user_by( 'id', $user_id );
if ( ! $user ) {
return;
}
// Now add the one/more roles to the user.
foreach ( $groups as $group_id ) {
// upgrade role to admin/mod.
groups_promote_member( $user_id, $group_id, $role );
}
}
add_action( 'bp_set_member_type',
'buddydev_promote_as_group_admin_on_member_types_update', 11, 3 );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* Promote user as the group admin for the given member types.
*
* @param int $user_id user id whose member type is changing.
* @param string $member_type new member type name.
* @param bool $append is it appending or resetting.
*/
function buddydev_promote_as_group_admin_on_member_types_update( $user_id,
$member_type, $append ) {
// Update with your member types.
// we don't do anything on member type reset or if our plugin is not
active.
if ( empty( $member_type ) || ! function_exists(
'bpmtp_member_types_pro' ) ) {
return;
}
// use member type slug(unique name) here, It is not label.
// member type to role map, use
member_type_name=>group_role(admin|mod).
$member_types_role_map = array(
'advisor' => 'admin',// users will be added as group admin.
'officer' => 'mod', // All users with this member type will be
added as the moderator to their respective group.
);
if ( ! isset( $member_types_role_map[ $member_type ] ) ) {
return;// member was already added by member types pro and it is
not our member type.
}
$role = $member_types_role_map[ $member_type ];
// if we are here, let us upgrade the membership.
// Get active types.
$active_types = bpmtp_get_active_member_type_entries();
if ( empty( $member_type ) || empty( $active_types ) || empty(
$active_types[ $member_type ] ) ) {
return;
}
$mt_object = $active_types[ $member_type ];
$groups = get_post_meta( $mt_object->post_id,
'_bp_member_type_groups', true );
if ( empty( $groups ) ) {
return;
}
$user = get_user_by( 'id', $user_id );
if ( ! $user ) {
return;
}
// Now add the one/more roles to the user.
foreach ( $groups as $group_id ) {
// upgrade role to admin/mod.
groups_promote_member( $user_id, $group_id, $role );
}
}
add_action( 'bp_set_member_type',
'buddydev_promote_as_group_admin_on_member_types_update',
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4316#comment:2>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list