Ejemplo n.º 1
0
        $groupids[] = $group->id;
    }
    $groups['data'] = get_records_sql_assoc("SELECT g1.id, g1.name, g1.description, g1.jointype, g1.membershiptype, g1.membercount, COUNT(gmr.member) AS requests\n        FROM (\n            SELECT g.id, g.name, g.description, g.jointype, t.membershiptype, COUNT(gm.member) AS membercount\n            FROM {group} g\n            LEFT JOIN {group_member} gm ON (gm.group = g.id)\n            LEFT JOIN (\n                SELECT g.id, 'admin' AS membershiptype\n                FROM {group} g\n                INNER JOIN {group_member} gm ON (gm.group = g.id AND gm.member = ? AND gm.role = 'admin')\n                UNION\n                SELECT g.id, 'member' AS membershiptype\n                FROM {group} g\n                INNER JOIN {group_member} gm ON (g.id = gm.group AND gm.member = ? AND gm.role != 'admin')\n                UNION\n                SELECT g.id, 'invite' AS membershiptype\n                FROM {group} g\n                INNER JOIN {group_member_invite} gmi ON (gmi.group = g.id AND gmi.member = ?)\n                UNION\n                SELECT g.id, 'request' AS membershiptype\n                FROM {group} g\n                INNER JOIN {group_member_request} gmr ON (gmr.group = g.id AND gmr.member = ?)\n            ) t ON t.id = g.id\n            WHERE g.id IN (" . implode($groupids, ',') . ')
            GROUP BY g.id, g.name, g.description, g.jointype, t.membershiptype
            ORDER BY g.name
        ) g1
        LEFT JOIN {group_member_request} gmr ON (gmr.group = g1.id)
        GROUP BY g1.id, g1.name, g1.description, g1.jointype, g1.membershiptype, g1.membercount', array($USER->get('id'), $USER->get('id'), $USER->get('id'), $USER->get('id')));
    if ($groups['data']) {
        // Get 3 members from each group in a separate query -- mysql doesn't like including them as subqueries with limit 1 in the above query
        $members = get_records_sql_array("\n            SELECT m1.group, m1.member, u.* FROM {group_member} m1\n            INNER JOIN {usr} u ON (m1.member = u.id AND u.deleted = 0)\n            WHERE 3 > (\n                SELECT COUNT(m2.member)\n                FROM {group_member} m2\n                WHERE m1.group = m2.group AND m2.member < m1.member\n            )\n            AND m1.group IN (" . implode($groupids, ',') . ')', array());
        if ($members) {
            foreach ($members as $m) {
                $groups['data'][$m->group]->members[] = (object) array('id' => $m->id, 'name' => display_name($m));
            }
        }
    }
    $groups['data'] = array_values($groups['data']);
}
group_prepare_usergroups_for_display($groups['data'], 'find');
$pagination = build_pagination(array('url' => get_config('wwwroot') . 'group/find.php?filter=' . $filter . '&amp;query=' . $query, 'count' => $groups['count'], 'limit' => $groupsperpage, 'offset' => $offset, 'resultcounttextsingular' => get_string('group', 'group'), 'resultcounttextplural' => get_string('groups', 'group')));
function search_submit(Pieform $form, $values)
{
    redirect('/group/find.php?filter=' . $values['filter'] . (isset($values['query']) ? '&query=' . urlencode($values['query']) : ''));
}
$smarty = smarty();
$smarty->assign('heading', TITLE);
$smarty->assign('form', $searchform);
$smarty->assign('groups', $groups['data']);
$smarty->assign('pagination', $pagination['html']);
$smarty->display('group/find.tpl');
Ejemplo n.º 2
0
$filter = param_alpha('filter', 'all');
$offset = param_integer('offset', 'all');
$groupcategory = param_variable('groupcategory', 0);
$groupsperpage = 20;
$offset = (int) ($offset / $groupsperpage) * $groupsperpage;
$results = group_get_associated_groups($USER->get('id'), $filter, $groupsperpage, $offset, $groupcategory);
$elements = array();
$elements['options'] = array('type' => 'select', 'options' => array('all' => get_string('allmygroups', 'group'), 'admin' => get_string('groupsiown', 'group'), 'member' => get_string('groupsimin', 'group'), 'invite' => get_string('groupsiminvitedto', 'group'), 'request' => get_string('groupsiwanttojoin', 'group')), 'defaultvalue' => $filter);
if (get_config('allowgroupcategories') && ($groupcategories = get_records_menu('group_category', '', '', 'displayorder', 'id,title'))) {
    $options[0] = get_string('allcategories', 'group');
    $options[-1] = get_string('categoryunassigned', 'group');
    $options += $groupcategories;
    $elements['groupcategory'] = array('type' => 'select', 'options' => $options, 'defaultvalue' => $groupcategory, 'help' => true);
}
$elements['submit'] = array('type' => 'submit', 'value' => get_string('filter'));
$form = pieform(array('name' => 'filter', 'method' => 'post', 'renderer' => 'oneline', 'elements' => $elements));
$pagination = build_pagination(array('url' => get_config('wwwroot') . 'group/mygroups.php?filter=' . $filter, 'count' => $results['count'], 'limit' => $groupsperpage, 'offset' => $offset, 'resultcounttextsingular' => get_string('group', 'group'), 'resultcounttextplural' => get_string('groups', 'group')));
group_prepare_usergroups_for_display($results['groups'], 'mygroups');
$smarty = smarty();
$smarty->assign('groups', $results['groups']);
$smarty->assign('cancreate', group_can_create_groups());
$smarty->assign('form', $form);
$smarty->assign('filter', $filter);
$smarty->assign('pagination', $pagination['html']);
$smarty->assign('searchingforgroups', array('<a href="' . get_config('wwwroot') . 'group/find.php">', '</a>'));
$smarty->assign('PAGEHEADING', TITLE);
$smarty->display('group/mygroups.tpl');
function filter_submit(Pieform $form, $values)
{
    redirect('/group/mygroups.php?filter=' . $values['options'] . (!empty($values['groupcategory']) ? '&groupcategory=' . intval($values['groupcategory']) : ''));
}