protected static function get_data($groupid) { global $USER; if (!defined('GROUP')) { define('GROUP', $groupid); } // get the currently requested group $group = group_current_group(); $group->ctime = strftime(get_string('strftimedate'), $group->ctime); // if the user isn't logged in an the group isn't public don't show anything if (!is_logged_in() && !$group->public) { throw new AccessDeniedException(); } // find the group administrators $group->admins = get_column_sql("SELECT \"member\"\n FROM {group_member}\n WHERE \"group\" = ?\n AND \"role\" = 'admin'", array($group->id)); $role = group_user_access($group->id); $group->role = $role; // logged in user can do stuff if (is_logged_in()) { $afterjoin = param_variable('next', 'view'); if ($role) { if ($role == 'admin') { $group->membershiptype = 'admin'; $group->requests = count_records('group_member_request', 'group', $group->id); } else { $group->membershiptype = 'member'; } $group->canleave = group_user_can_leave($group->id); } else { if ($group->jointype == 'invite' and $invite = get_record('group_member_invite', 'group', $group->id, 'member', $USER->get('id'))) { $group->membershiptype = 'invite'; $group->invite = group_get_accept_form('invite', $group->id, $afterjoin); } else { if ($group->jointype == 'request' and $request = get_record('group_member_request', 'group', $group->id, 'member', $USER->get('id'))) { $group->membershiptype = 'request'; } else { if ($group->jointype == 'open') { $group->groupjoin = group_get_join_form('joingroup', $group->id, $afterjoin); } } } } } $group->settingsdescription = group_display_settings($group); if (get_config('allowgroupcategories')) { $group->categorytitle = $group->category ? get_field('group_category', 'title', 'id', $group->category) : ''; } $filecounts = ArtefactTypeFileBase::count_user_files(null, $group->id, null); return array('group' => $group, 'filecounts' => $filecounts); }
$group->requests = array($group->requests); } } else { $group->membershiptype = 'member'; } $group->canleave = group_user_can_leave($group->id); } else { if ($group->jointype == 'invite' and $invite = get_record('group_member_invite', 'group', $group->id, 'member', $USER->get('id'))) { $group->membershiptype = 'invite'; $group->invite = group_get_accept_form('invite', $group->id, $afterjoin); } else { if ($group->jointype == 'request' and $request = get_record('group_member_request', 'group', $group->id, 'member', $USER->get('id'))) { $group->membershiptype = 'request'; } else { if ($group->jointype == 'open') { $group->groupjoin = group_get_join_form('joingroup', $group->id, $afterjoin); } } } } } $filecounts = ArtefactTypeFileBase::count_user_files(null, $group->id, null); // Latest forums posts // NOTE: it would be nicer if there was some generic way to get information // from any installed interaction. But the only interaction plugin is forum, // and group info pages might be replaced with views anyway... $foruminfo = null; if ($role || $group->public) { $foruminfo = get_records_sql_array(' SELECT p.id, p.subject, p.body, p.poster, p.topic, t.forum, pt.subject AS topicname
/** * Sets up groups for display in mygroups.php and find.php * * @param array $groups Initial group data, including the current user's * membership type in each group. See mygroups.php for * the query to build this information. * @param string $returnto Where forms generated for display should be told to return to */ function group_prepare_usergroups_for_display($groups, $returnto = 'mygroups') { if (!$groups) { return; } $groupids = array_map(create_function('$a', 'return $a->id;'), $groups); $groupadmins = group_get_admins($groupids); $i = 0; foreach ($groups as $group) { $group->admins = array(); foreach ($groupadmins as $admin) { if ($admin->group == $group->id) { $group->admins[] = $admin; } } if ($group->membershiptype == 'member') { $group->canleave = group_user_can_leave($group->id); } else { if ($group->membershiptype == 'invite') { $group->invite = group_get_accept_form('invite' . $i++, $group->id, $returnto); } else { if ($group->jointype == 'open') { $group->groupjoin = group_get_join_form('joingroup' . $i++, $group->id); } } } $showmembercount = !$group->hidemembersfrommembers && !$group->hidemembers || $group->membershiptype == 'member' && !$group->hidemembersfrommembers || $group->membershiptype == 'admin'; if (!$showmembercount) { unset($group->membercount); } $group->editwindow = group_format_editwindow($group); $group->settingsdescription = group_display_settings($group); } }
/** * Sets up groups for display in mygroups.php and find.php * * @param array $groups Initial group data, including the current user's * membership type in each group. See mygroups.php for * the query to build this information. * @param string $returnto Where forms generated for display should be told to return to */ function group_prepare_usergroups_for_display($groups, $returnto = 'mygroups') { if (!$groups) { return; } // Retrieve a list of all the group admins, for placing in each $group object $groupadmins = array(); $groupids = array_map(create_function('$a', 'return $a->id;'), $groups); if ($groupids) { $groupadmins = get_records_sql_array('SELECT "group", member FROM {group_member} WHERE "group" IN (' . implode(',', db_array_to_ph($groupids)) . ")\n AND role = 'admin'", $groupids); if (!$groupadmins) { $groupadmins = array(); } } $i = 0; foreach ($groups as $group) { $group->admins = array(); foreach ($groupadmins as $admin) { if ($admin->group == $group->id) { $group->admins[] = $admin->member; } } $group->description = str_shorten_html($group->description, 100, true); if ($group->membershiptype == 'member') { $group->canleave = group_user_can_leave($group->id); } else { if ($group->jointype == 'open') { $group->groupjoin = group_get_join_form('joingroup' . $i++, $group->id); } else { if ($group->membershiptype == 'invite') { $group->invite = group_get_accept_form('invite' . $i++, $group->id, $returnto); } else { if ($group->membershiptype == 'admin' && $group->requests > 1) { $group->requests = array($group->requests); } } } } } }