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);
 }
Example #2
0
                $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
Example #3
0
/**
 * 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);
    }
}
Example #4
0
/**
 * 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);
                    }
                }
            }
        }
    }
}