/**
 * Get a list of group administrators.
 *
 * @param int $group_id ID of the group.
 *
 * @return array Info about group admins (user_id + date_modified).
 */
function groups_get_group_admins($group_id)
{
    return BP_Groups_Member::get_group_administrator_ids($group_id);
}
Example #2
0
/**
 * Process a group activity comment.
 *
 * @since 1.0.0
 *
 * @param object $activity The activity item being saved.
 */
function crowdmentions_activity_after_save_group_activity_comment($activity)
{
    if ($activity->type !== 'activity_comment') {
        return;
    }
    $root_activity = new BP_Activity_Activity($activity->item_id);
    if ($root_activity->component !== 'groups') {
        return;
    }
    // Find mentions in the activity item's content.
    $mentions = crowdmentions_find_mentions($activity->content);
    foreach ((array) array_values($mentions) as $mention) {
        if (!bp_is_active('groups') && $mention === 'group') {
            continue;
        }
        if (!bp_is_active('groups') && $mention === 'moderators') {
            continue;
        }
        if (!bp_is_active('groups') && $mention === 'administrators') {
            continue;
        }
        if (!bp_is_active('friends') && $mention === 'friends') {
            continue;
        }
        switch ($mention) {
            case 'group':
                $args = array('user_ids' => BP_Groups_Member::get_group_member_ids($root_activity->item_id), 'user_id' => $activity->user_id, 'item_id' => $activity->id, 'secondary_item_id' => $root_activity->item_id, 'component_action' => 'mention_group_' . $activity->id);
                break;
            case 'moderators':
                $user_ids = [];
                $mods = BP_Groups_Member::get_group_moderator_ids($root_activity->item_id);
                // Get an array of moderator IDs.
                foreach ((array) $mods as $mod) {
                    $user_ids[] = $mod->user_id;
                }
                $args = array('user_ids' => $user_ids, 'user_id' => $activity->user_id, 'item_id' => $activity->id, 'secondary_item_id' => $root_activity->item_id, 'component_action' => 'mention_moderators_' . $activity->id);
                break;
            case 'administrators':
                $user_ids = [];
                $admins = BP_Groups_Member::get_group_administrator_ids($root_activity->item_id);
                // Get an array of administrator IDs.
                foreach ((array) $admins as $admin) {
                    $user_ids[] = $admin->user_id;
                }
                $args = array('user_ids' => $user_ids, 'user_id' => $activity->user_id, 'item_id' => $activity->id, 'secondary_item_id' => $root_activity->item_id, 'component_action' => 'mention_administrators_' . $activity->id);
                break;
            case 'friends':
                $friend_ids = BP_Friends_Friendship::get_friend_user_ids($activity->user_id, false, false);
                $args = array('user_ids' => array_intersect(BP_Groups_Member::get_group_member_ids($root_activity->item_id), $friend_ids), 'user_id' => $activity->user_id, 'item_id' => $activity->id, 'secondary_item_id' => $root_activity->item_id, 'component_action' => 'mention_friends_' . $activity->id);
                break;
            default:
                // Skip to the next iteration.
                continue 2;
        }
        // Send notifications.
        crowdmentions_send_notifications($args);
    }
}
Example #3
0
function bp_gtm_search_gmembers($search_term, $limit, $group_id, $role)
{
    global $bp, $wpdb;
    if ($role == 'admins') {
        $allmembers = BP_Groups_Member::get_group_administrator_ids($group_id);
    } elseif ($role == 'mods') {
        $allmembers = BP_Groups_Member::get_group_moderator_ids($group_id);
    } elseif ($role == 'members') {
        $allmembers = BP_Groups_Member::get_group_member_ids($group_id);
    }
    /* Fetch the user's full name */
    //    if (function_exists('xprofile_install')) {
    /* Ensure xprofile globals are set */
    if (!defined('BP_XPROFILE_FULLNAME_FIELD_NAME')) {
        xprofile_setup_globals();
    }
    $allmembers = $wpdb->escape(implode(',', (array) $allmembers));
    $members = $wpdb->get_results($wpdb->prepare("\n            SELECT `user_id` as `id` FROM {$bp->profile->table_name_data}\n            WHERE `field_id` = 1 AND `user_id` IN ( {$allmembers} ) AND `value` LIKE '%%{$search_term}%%'\n            LIMIT %d\n            ", $limit));
    return $members;
}
 /**
  * Set up admins and mods for the current group object.
  *
  * Called only when the 'admins' or 'mods' property is accessed.
  *
  * @since 2.7.0
  */
 protected function set_up_admins_and_mods()
 {
     $admin_ids = BP_Groups_Member::get_group_administrator_ids($this->id);
     $admin_ids_plucked = wp_list_pluck($admin_ids, 'user_id');
     $mod_ids = BP_Groups_Member::get_group_moderator_ids($this->id);
     $mod_ids_plucked = wp_list_pluck($mod_ids, 'user_id');
     $admin_mod_users = get_users(array('include' => array_merge($admin_ids_plucked, $mod_ids_plucked)));
     $admin_objects = $mod_objects = array();
     foreach ($admin_mod_users as $admin_mod_user) {
         $obj = new stdClass();
         $obj->user_id = $admin_mod_user->ID;
         $obj->user_login = $admin_mod_user->user_login;
         $obj->user_email = $admin_mod_user->user_email;
         $obj->user_nicename = $admin_mod_user->user_nicename;
         if (in_array($admin_mod_user->ID, $admin_ids_plucked, true)) {
             $obj->is_admin = 1;
             $obj->is_mod = 0;
             $admin_objects[] = $obj;
         } else {
             $obj->is_admin = 0;
             $obj->is_mod = 1;
             $mod_objects[] = $obj;
         }
     }
     $this->admins = $admin_objects;
     $this->mods = $mod_objects;
 }