* @license http://www.gnu.org/copyleft/gpl.html GNU GPL * @copyright (C) 2006-2009 Catalyst IT Ltd http://catalyst.net.nz * */ define('PUBLIC', 1); define('INTERNAL', 1); define('JSON', 1); require dirname(dirname(__FILE__)) . '/init.php'; require_once 'group.php'; require_once 'searchlib.php'; $id = param_integer('id'); $query = trim(param_variable('query', '')); $offset = param_integer('offset', 0); $limit = param_integer('limit', 10); define('GROUP', $id); $group = group_current_group(); if (!is_logged_in() && !$group->public) { throw new AccessDeniedException(get_string('accessdenied', 'error')); } $membershiptype = param_variable('membershiptype', ''); if (!empty($membershiptype)) { if (group_user_access($id) != 'admin') { json_reply('local', get_string('accessdenied', 'error')); } } $results = get_group_user_search_results($group->id, $query, $offset, $limit, $membershiptype); if (!param_integer('html', 1)) { json_reply(false, $results); } list($html, $pagination, $count, $offset, $membershiptype) = group_get_membersearch_data($results, $id, $query, $membershiptype); json_reply(false, array('message' => null, 'data' => array('tablerows' => $html, 'pagination' => $pagination['html'], 'pagination_js' => $pagination['javascript'], 'count' => $count, 'results' => $count . ' ' . ($count == 1 ? get_string('result') : get_string('results')), 'offset' => $offset, 'membershiptype' => $membershiptype)));
$query = trim(param_variable('query', '')); // pagination params $setlimit = true; //Enable choosing page size; list of page sizes has been predefined in function build_pagination() $offset = param_integer('offset', 0); $limit = param_integer('limit', 10); // Sort options index and list of sort options // ORDER BY statements defined in group_user_search function need to be matched $sortoptions = array('adminfirst' => get_string('adminfirst'), 'nameatoz' => get_string('nameatoz'), 'nameztoa' => get_string('nameztoa'), 'firstjoined' => get_string('firstjoined'), 'lastjoined' => get_string('lastjoined')); $sortoptionidx = param_alpha('sortoption', 'adminfirst'); if ($membershiptype == 'request') { array_shift($sortoptions); $sortoptionidx = param_alpha('sortoption', 'nameatoz'); } $results = get_group_user_search_results($group->id, $query, $offset, $limit, $membershiptype, null, null, $sortoptionidx); list($html, $pagination, $count, $offset, $membershiptype) = group_get_membersearch_data($results, $group->id, $query, $membershiptype, $setlimit, $sortoptionidx); // Type-specific instructions $instructions = ''; if ('admin' == $role) { $url = get_config('wwwroot') . 'group/inviteusers.php?id=' . GROUP; $instructions = get_string('invitemembersdescription', 'group', $url); if ('controlled' == $group->jointype) { $url = get_config('wwwroot') . 'group/addmembers.php?id=' . GROUP; $instructions .= ' ' . get_string('membersdescription:controlled', 'group', $url); } } $searchform = pieform(array('name' => 'search', 'checkdirtychange' => false, 'class' => 'search-views-form form-inline with-heading', 'elements' => array('id' => array('type' => 'hidden', 'value' => $group->id), 'membershiptype' => array('type' => 'hidden', 'value' => $membershiptype), 'setlimit' => array('type' => 'hidden', 'value' => $setlimit), 'inputgroup' => array('type' => 'fieldset', 'class' => 'input-group', 'elements' => array('query' => array('title' => get_string('search') . ': ', 'type' => 'text', 'class' => 'input-small', 'defaultvalue' => $query), 'sortoption' => array('type' => 'select', 'class' => 'sortoption input-small', 'title' => get_string('sortedby'), 'multiple' => false, 'size' => 1, 'defaultvalue' => $sortoptionidx, 'options' => $sortoptions), 'submit' => array('type' => 'button', 'usebuttontag' => true, 'class' => 'btn-primary no-label input-group-btn', 'value' => get_string('search'))))))); $js = <<<EOF addLoadEvent(function () { p = {$pagination['javascript']} connect('search_submit', 'onclick', function (event) {
define('TITLE', $group->name . ' - ' . get_string('Members', 'group')); $role = group_user_access($group->id); if (!empty($membershiptype) && $role != 'admin') { throw new AccessDeniedException(); } $remove = param_variable('removeuser', null); $member = param_integer('member', null); if ($remove && $member) { // Create the remove user pieform for the user that's being removed. // The form's submit function will be called as soon as the form // is generated. // // We do this now because the user could be on the 2nd page of // results, so their remove form might never get generated on // this page. And also because generating the rest of the page // would be a waste of time -- the submit function just redirects // back here. group_get_removeuser_form($member, $group->id); } // Search related stuff for member pager $query = trim(param_variable('query', '')); $offset = param_integer('offset', 0); $limit = param_integer('limit', 10); list($html, $pagination, $count, $offset, $membershiptype) = group_get_membersearch_data($group->id, $query, $offset, $limit, $membershiptype); $smarty = smarty(array('groupmembersearch')); $smarty->assign('heading', $group->name); $smarty->assign('query', $query); $smarty->assign('results', $html); $smarty->assign('pagination', $pagination['html']); $smarty->assign('membershiptype', $membershiptype); $smarty->display('group/members.tpl');