/**
  * 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));
 }
Beispiel #3
0
function groups_get_group_users($group_id, $limit = false, $page = false, $deprecated_function = true)
{
    return groups_get_group_members($group_id, $limit, $page);
}
Beispiel #4
0
 /**
  * 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' => '&larr;', 'next_text' => '&rarr;', 'mid_size' => 1));
 }