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); }
function group_get_membersearch_data($results, $group, $query, $membershiptype, $setlimit = false, $sortoption = '') { global $USER; $params = array(); if ($query != '') { $params['query'] = $query; } if (!empty($membershiptype)) { $params['membershiptype'] = $membershiptype; } if (!empty($sortoption)) { $params['sortoption'] = $sortoption; } $searchurl = get_config('wwwroot') . 'group/members.php?id=' . $group . (!empty($params) ? '&' . http_build_query($params) : ''); $smarty = smarty_core(); $role = group_user_access($group); $userid = $USER->get('id'); foreach ($results['data'] as &$r) { if ($role == 'admin' && ($r['id'] != $userid || group_user_can_leave($group, $r['id']))) { $r['removeform'] = group_get_removeuser_form($r['id'], $group); } // NOTE: this is a quick approximation. We should really check whether, // for each role in the group, that the user can change to it (using // group_can_change_role). This only controls whether the 'change // role' link appears though, so it doesn't matter too much. If the // user clicks on this link, changerole.php does the full check and // sends them back here saying that the user has no roles they can // change to anyway. $r['canchangerole'] = !group_is_only_admin($group, $r['id']); } if (!empty($membershiptype)) { if ($membershiptype == 'request') { foreach ($results['data'] as &$r) { $r['addform'] = group_get_adduser_form($r['id'], $group); $r['denyform'] = group_get_denyuser_form($r['id'], $group); // TODO: this will suck when there's quite a few on the page, // would be better to grab all the reasons in one go $r['reason'] = get_field('group_member_request', 'reason', 'group', $group, 'member', $r['id']); } } $smarty->assign('membershiptype', $membershiptype); } $results['cdata'] = array_chunk($results['data'], 2); $results['roles'] = group_get_role_info($group); $smarty->assign_by_ref('results', $results); $smarty->assign('searchurl', $searchurl); $smarty->assign('pagebaseurl', $searchurl); $smarty->assign('caneditroles', group_user_access($group) == 'admin'); $smarty->assign('group', $group); $html = $smarty->fetch('group/membersearchresults.tpl'); $pagination = build_pagination(array('id' => 'member_pagination', 'class' => 'center', 'url' => $searchurl, 'count' => $results['count'], 'setlimit' => $setlimit, 'limit' => $results['limit'], 'offset' => $results['offset'], 'jumplinks' => 8, 'numbersincludeprevnext' => 2, 'datatable' => 'membersearchresults', 'searchresultsheading' => 'searchresultsheading', 'jsonscript' => 'group/membersearchresults.json.php', 'firsttext' => '', 'previoustext' => '', 'nexttext' => '', 'lasttext' => '', 'numbersincludefirstlast' => false, 'resultcounttextsingular' => get_string('member', 'group'), 'resultcounttextplural' => get_string('members', 'group'))); return array($html, $pagination, $results['count'], $results['offset'], $membershiptype); }
* */ define('INTERNAL', 1); define('MENUITEM', 'groups'); require dirname(dirname(__FILE__)) . '/init.php'; require_once 'pieforms/pieform.php'; require 'group.php'; $groupid = param_integer('id'); $returnto = param_alpha('returnto', 'mygroups'); define('GROUP', $groupid); $group = group_current_group(); define('TITLE', $group->name); if (!group_user_access($group->id)) { throw new AccessDeniedException(get_string('notamember', 'group')); } if (!group_user_can_leave($group)) { throw new AccessDeniedException(get_string('cantleavegroup', 'group')); } $goto = get_config('wwwroot') . 'group/' . $returnto . '.php' . ($returnto == 'view' ? '?id=' . $groupid : ''); $views = count_records_sql('SELECT COUNT(*) FROM {view} v INNER JOIN {view_access_group} a ON a.group = ? AND a.view = v.id WHERE v.owner = ?', array($groupid, $USER->get('id'))); $form = pieform(array('name' => 'leavegroup', 'renderer' => 'div', 'autofocus' => false, 'method' => 'post', 'elements' => array('submit' => array('type' => 'submitcancel', 'value' => array(get_string('yes'), get_string('no')), 'goto' => $goto), 'returnto' => array('type' => 'hidden', 'value' => $returnto)))); $smarty = smarty(); $smarty->assign('subheading', get_string('leavespecifiedgroup', 'group', $group->name)); $smarty->assign('form', $form); $smarty->assign('message', $views ? get_string('groupconfirmleavehasviews', 'group') : get_string('groupconfirmleave', 'group')); $smarty->assign('group', $group);
$group->ctime = strftime(get_string('strftimedate'), $group->ctime); $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); 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); if ($group->requests > 1) { $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); } } } } }