/** * Create the CHI CSV when requested. * * @since 1.4.0 */ public function run_chi_hub_member_list_csv() { global $wpdb; $bp = buddypress(); if (!function_exists('cdc_get_target_group_id')) { return; } // @TODO: This could be generalized and added to the general Hub Member CSV, I think. $chi_hub_id = cdc_get_target_group_id(); // Output headers so that the file is downloaded rather than displayed. header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=cc-chi-hub-members.csv'); // Create a file pointer connected to the output stream. $output = fopen('php://output', 'w'); //add BOM to fix UTF-8 in Excel fputs($output, $bom = chr(0xef) . chr(0xbb) . chr(0xbf)); // Find all members in the group, whether they've agreed to receive mail or not. $user_query = groups_get_group_members(array('group_id' => $chi_hub_id)); // User Loop if (!empty($user_query['members'])) { // We want to exclude groups that aren't the base or SA group $profile_groups = bp_xprofile_get_groups(); $profile_groups_ids = wp_list_pluck($profile_groups, 'id'); $desired_groups = array(); $hub_pfg_ids = 0; if (function_exists('grpf_get_associated_field_groups')) { $hub_pfg_ids = grpf_get_associated_field_groups($chi_hub_id); $desired_groups = $hub_pfg_ids; } $desired_groups[] = 1; $exclude_group_ids = array_diff($profile_groups_ids, $desired_groups); $i = 1; foreach ($user_query['members'] as $user) { $profile = bp_xprofile_get_groups(array('user_id' => $user->ID, 'fetch_fields' => true, 'fetch_field_data' => true, 'fetch_visibility_level' => true, 'exclude_groups' => $exclude_group_ids, 'update_meta_cache' => true)); // If this is the first result, we need to create the column header row. if (1 == $i) { $row = array('user_id', 'user_email'); foreach ($profile as $profile_group_obj) { if ($profile_group_obj->id != 1) { $is_hub_pfg = true; } else { $is_hub_pfg = false; } foreach ($profile_group_obj->fields as $field) { $towrite .= '"'; if ($is_hub_pfg) { $row[] = 'CHI: ' . $field->name; } else { $row[] = $field->name; } } } $row[] = 'date_joined'; // Write the row. fputcsv($output, $row); } // Write the user ID and email address $row = array($user->ID, $user->user_email); // Record the user's data foreach ($profile as $profile_group_obj) { foreach ($profile_group_obj->fields as $field) { // Allow "public" data, hub-specific data and ZIP code fields. if ('public' == $field->visibility_level || in_array($profile_group_obj->id, $hub_pfg_ids) || 470 == $field->id) { // Account for various field situations switch ($field->id) { case '1312': if (!empty($field->data->value)) { $row[] = 'yes'; } else { $row[] = ''; } break; default: $value = maybe_unserialize($field->data->value); if (is_array($value)) { $value = implode(', ', preg_replace('/\\s+|\\r|\\n/', ' ', trim(strip_tags(stripslashes($value))))); } $row[] = preg_replace('/\\s+|\\r|\\n/', ' ', trim(strip_tags(stripslashes($value)))); break; } } elseif (1218 == $field->id) { // Affiliation field $value = maybe_unserialize($field->data->value); if (is_array($value)) { $value = implode(', ', $value); } $row[] = $value; } else { // If this shouldn't be included, add an empty array member/placeholder. $row[] = ''; } } } $row[] = $user->date_modified; // Write the row. fputcsv($output, $row); $i++; } } fclose($output); exit; }
/** * Constructor. * * @param array $args { * An array of optional arguments. * @type int $group_id ID of the group whose members are being * queried. Default: current group ID. * @type int $page Page of results to be queried. Default: 1. * @type int $per_page Number of items to return per page of * results. Default: 20. * @type int $max Optional. Max number of items to return. * @type array $exclude Optional. Array of user IDs to exclude. * @type bool|int True (or 1) to exclude admins and mods from * results. Default: 1. * @type bool|int True (or 1) to exclude banned users from results. * Default: 1. * @type array $group_role Optional. Array of group roles to include. * @type string $search_terms Optional. Search terms to match. * } */ function __construct($args = array()) { // Backward compatibility with old method of passing arguments if (!is_array($args) || func_num_args() > 1) { _deprecated_argument(__METHOD__, '2.0.0', sprintf(__('Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress'), __METHOD__, __FILE__)); $old_args_keys = array(0 => 'group_id', 1 => 'per_page', 2 => 'max', 3 => 'exclude_admins_mods', 4 => 'exclude_banned', 5 => 'exclude', 6 => 'group_role'); $func_args = func_get_args(); $args = bp_core_parse_args_array($old_args_keys, $func_args); } $r = wp_parse_args($args, array('group_id' => bp_get_current_group_id(), 'page' => 1, 'per_page' => 20, 'max' => false, 'exclude' => false, 'exclude_admins_mods' => 1, 'exclude_banned' => 1, 'group_role' => false, 'search_terms' => false, 'type' => 'last_joined')); // @todo No extract($r); $this->pag_page = isset($_REQUEST['mlpage']) ? intval($_REQUEST['mlpage']) : $r['page']; $this->pag_num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : $per_page; /** * Check the current group is the same as the supplied group ID. * It can differ when using {@link bp_group_has_members()} outside the Groups screens. */ $current_group = groups_get_current_group(); if (!$current_group || $current_group && $current_group->id !== bp_get_current_group_id()) { $current_group = groups_get_group(array('group_id' => $r['group_id'])); } // Assemble the base URL for pagination $base_url = trailingslashit(bp_get_group_permalink($current_group) . bp_current_action()); if (bp_action_variable()) { $base_url = trailingslashit($base_url . bp_action_variable()); } $members_args = $r; $members_args['page'] = $this->pag_page; $members_args['per_page'] = $this->pag_num; $this->members = groups_get_group_members($members_args); if (!$max || $max >= (int) $this->members['count']) { $this->total_member_count = (int) $this->members['count']; } else { $this->total_member_count = (int) $max; } $this->members = $this->members['members']; if ($max) { if ($max >= count($this->members)) { $this->member_count = count($this->members); } else { $this->member_count = (int) $max; } } else { $this->member_count = count($this->members); } $this->pag_links = paginate_links(array('base' => add_query_arg(array('mlpage' => '%#%'), $base_url), 'format' => '', 'total' => !empty($this->pag_num) ? ceil($this->total_member_count / $this->pag_num) : $this->total_member_count, 'current' => $this->pag_page, 'prev_text' => '←', 'next_text' => '→', 'mid_size' => 1)); }
function groups_get_group_users($group_id, $limit = false, $page = false, $deprecated_function = true) { return groups_get_group_members($group_id, $limit, $page); }
/** * get_teachers( $group_id ) * * Returns an array with group teachers user_id * @param Int $group_id, the group ID to check for * @return Mixed, an array of user_id's */ function get_teachers($group_id) { $teachers = array(); $group_admins = groups_get_group_admins($group_id); $group_members = groups_get_group_members($group_id); $group_members = array_merge($group_admins, $group_members['members']); foreach ($group_members as $member) { if (self::can_teach($member->user_id)) { $teachers[] = $member->user_id; } } return $teachers; }
private function _get_group_map($group_id, $data_overrides = array()) { $data_overrides = wp_parse_args($data_overrides, array('show_members' => true)); $data = groups_get_groupmeta($group_id, "agm-group_map"); $model = new AgmMapModel(); $map_id = get_option("_agm-group_map-for-{$group_id}", false); $address = !empty($data["address"]) ? $data["address"] : apply_filters('agm-group_map-default_group_address', false, $group_id, $data); $map = false; if ($map_id) { $map = $model->get_map($map_id); } else { if (!$map_id && $address) { $map_id = $model->autocreate_map(false, false, false, $address); if (!$map_id) { return false; } update_option("_agm-group_map-for-{$group_id}", $map_id); $map = $model->get_map($map_id); } else { $map = $model->get_map_defaults(); $map['defaults'] = $model->get_map_defaults(); $map['id'] = $group_id . md5(time() . rand()); $map['show_map'] = 1; $map['show_markers'] = 0; $map['markers'] = array(); } } if (!empty($data_overrides['group_marker']) && 'avatar' == $data_overrides['group_marker'] && function_exists('bp_core_fetch_avatar')) { if (1 != count($map['markers'])) { continue; } if (empty($map['markers'][0])) { continue; } $avatar = bp_core_fetch_avatar(array('object' => 'group', 'item_id' => $group_id, 'width' => 32, 'height' => 32, 'html' => false)); if (!empty($avatar)) { $map['markers'][0]['icon'] = $avatar; } } if (!empty($data['member_locations']) && !empty($data_overrides['show_members']) && class_exists('Agm_Bp_Pm_UserPages')) { $profile = new Agm_Bp_Pm_UserPages(); $markers = $map['markers']; $members = groups_get_group_members($group_id); if ($members && !empty($members['members'])) { foreach ($members['members'] as $member) { $marker = $profile->member_to_marker($member->ID); if ($marker) { $markers[] = $marker; } } } $map['markers'] = $markers; } if (empty($map['markers'])) { return false; } return $map; }
/** * Generates a array of profile data from a user * @since 0.0.4 * @access public * @static * @param $user_name */ public static function generate_profile_data($user_name, $group_id) { $group = array(); $members = array(); $userdata = get_user_by('login', $user_name); if (groups_is_user_member($userdata->ID, $group_id)) { // User ist in der Gruppe $groupdata = groups_get_group(array('group_id' => $group_id)); $group['name'] = $groupdata->name; $group['url'] = trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $groupdata->slug . '/'); // Members $membersdata = groups_get_group_members(array('group_id' => $group_id, 'page' => 1, 'per_page' => 99999, 'max' => 99999, 'exclude_admins_mods' => false)); foreach ($membersdata["members"] as $member) { $members[] = array('login_name' => $member->user_login, 'profil_url' => bp_core_get_userlink($member->ID, false, true)); } $back = array('data' => array('group' => $group, 'member' => $members)); } else { // User ist nicht in der Gruppe: $back = array('errors' => 403); } return $back; }
/** * Fetch a list of site members eligible to be invited to a group. * * The list is essentially a list of everyone on the site, minus the logged in user and members * of the current group. * * @package Invite Anyone * @since 1.0 * * @param int $group_id The group_id you want to exclude * @param string $search_terms If you want to search on username/display name * @param string $fields Fields to retrieve. 'ID' or 'all'. * @return array $users An array of located users */ function invite_anyone_invite_query($group_id = false, $search_terms = false, $fields = 'all') { // Get a list of group members to be excluded from the main query $group_members = array(); $args = array('group_id' => $group_id, 'group_role' => array('member', 'mod', 'admin', 'banned')); if ($search_terms) { $args['search'] = $search_terms; } $gm = groups_get_group_members($args); $group_members = wp_list_pluck($gm['members'], 'ID'); // Don't include the logged-in user, either $group_members[] = bp_loggedin_user_id(); $fields = 'ID' == $fields ? 'ID' : 'all'; // Now do a user query // Pass a null blog id so that the capabilities check is skipped. For BP blog_id doesn't // matter anyway $user_query = new Invite_Anyone_User_Query(array('blog_id' => NULL, 'exclude' => $group_members, 'search' => $search_terms, 'fields' => $fields, 'orderby' => 'display_name')); return $user_query->results; }
/** * gradebook_screen( $vars ) * * Hooks into screen_handler * Adds a UI to assignments for gradebook management. * * @param Array $vars a set of variables received for this screen template * @return Array $vars a set of variable passed to this screen template */ function gradebook_screen($vars) { global $bp; $nonce_name = 'gradebook_nonce'; $nonce_import_name = 'gradebook_import_nonce'; $nonce_clear_name = 'gradebook_clear_nonce'; if (!$this->has_gradebook_caps($bp->loggedin_user->id) && !is_super_admin()) { $vars['die'] = __('BuddyPress Courseware Error while forbidden user tried to manage gradebook.', 'bpsp'); return $vars; } // BP_Groups_Member::get_all_for_group( $bp->groups->current_group->id ); $students = groups_get_group_members(array('group_id' => $bp->groups->current_group->id, 'per_page' => 1000, 'exclude_admins_mods' => true)); if (isset($_POST['_wpnonce'])) { $is_nonce = wp_verify_nonce($_POST['_wpnonce'], $nonce_name); } if (isset($_POST['_wpnonce']) && true != $is_nonce) { $vars['die'] = __('BuddyPress Courseware Nonce Error while updating gradebook.', 'bpsp'); return $vars; } $gradebook_id = $this->has_gradebook($this->current_assignment); if (!$gradebook_id) { $vars['die'] = __('BuddyPress Courseware Error while creating gradebook.', 'bpsp'); return $vars; } if (!empty($_POST['grade'])) { foreach ($_POST['grade'] as $grade) { if (!empty($grade) && !empty($grade['uid']) && !empty($grade['value'])) { # If grade was added or updated! $status = $this->save_grade($gradebook_id, $grade); if ($status !== null) { $data = array('grade' => $grade, 'teacher' => $bp->loggedin_user->userdata, 'assignment' => $this->current_assignment); if ($status == true) { do_action('courseware_grade_added', $data); } else { do_action('courseware_grade_updated', $data); } } } } $vars['message'] = __('Gradebook saved.', 'bpsp'); } $vars['name'] = 'gradebook'; $vars['students'] = $students['members']; if (empty($vars['grades'])) { $vars['grades'] = $this->load_grades($gradebook_id, true); } $vars['bpsp_gradebook_format'] = get_option('bpsp_gradebook_format'); $vars['assignment'] = BPSP_Assignments::is_assignment($this->current_assignment); $vars['gradebook_permalink'] = $vars['assignment_permalink'] . '/gradebook'; $vars['clear_gradebook_permalink'] = add_query_arg('_wpnonce', wp_create_nonce($nonce_clear_name), $vars['gradebook_permalink'] . '/clear'); $vars['import_gradebook_nonce'] = wp_nonce_field($nonce_import_name, '_wpnonce', true, false); $vars['nonce'] = wp_nonce_field($nonce_name, '_wpnonce', true, false); return $vars; }
function getStudents($force = false) { //check cache if (isset($this->students) && !$force) { return $this->students; } //have a group? if (empty($this->group)) { return false; } $r = groups_get_group_members(array('group_id' => $this->group->id, 'exclude_admins_mods' => true)); $this->students = $r['members']; return $this->students; }
private function _save_meta($post_id, $request) { if (!function_exists('groups_get_groups')) { return false; } if (!isset($request['eab_event-bp-group_event'])) { return false; } $data = (int) $request['eab_event-bp-group_event']; //if (!$data) return false; update_post_meta($post_id, 'eab_event-bp-group_event', $data); $email_grp_member = $this->_data->get_option('eab_event_bp_group_event_email_grp_member'); if (isset($email_grp_member) && $email_grp_member == 1) { $grp_members = groups_get_group_members(array('group_id' => $data, 'exclude_admins_mods' => false)); foreach ($grp_members['members'] as $member) { //echo $member->user_email; $subject = __('Information about a group event', Eab_EventsHub::TEXT_DOMAIN); $subject = apply_filters('eab_bp_grp_events_member_mail_subject', $subject, $member, $post_id); $message = __('Dear ' . $member->display_name . ',<br><br>An event is created/updated. I hope you will join in that event. Check the event here: ' . get_permalink($post_id), Eab_EventsHub::TEXT_DOMAIN); $message = apply_filters('eab_bp_grp_events_member_mail_message', $message, $member, $post_id); wp_mail($member->user_email, $subject, $message); } } }
function __construct($group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude, $group_role = false) { $this->pag_page = isset($_REQUEST['mlpage']) ? intval($_REQUEST['mlpage']) : 1; $this->pag_num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : $per_page; $this->members = groups_get_group_members($group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned, $exclude, $group_role); if (!$max || $max >= (int) $this->members['count']) { $this->total_member_count = (int) $this->members['count']; } else { $this->total_member_count = (int) $max; } $this->members = $this->members['members']; if ($max) { if ($max >= count($this->members)) { $this->member_count = count($this->members); } else { $this->member_count = (int) $max; } } else { $this->member_count = count($this->members); } $this->pag_links = paginate_links(array('base' => add_query_arg('mlpage', '%#%'), 'format' => '', 'total' => !empty($this->pag_num) ? ceil($this->total_member_count / $this->pag_num) : $this->total_member_count, 'current' => $this->pag_page, 'prev_text' => '←', 'next_text' => '→', 'mid_size' => 1)); }