Your IP : 216.73.216.95


Current Path : /var/www/ljmtc/cbt/mod/grouptool/
Upload File :
Current File : /var/www/ljmtc/cbt/mod/grouptool/showmembers.php

<?php
// This file is part of mod_grouptool for Moodle - http://moodle.org/
//
// It is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// It is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Non-AJAX-Version of showing group's members. Fallback for JS using showmembers_ajax.php
 *
 * @package   mod_grouptool
 * @author    Philipp Hager
 * @copyright 2014 Academic Moodle Cooperation {@link http://www.academic-moodle-cooperation.org}
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

require_once(dirname(__FILE__) . '/../../config.php');
require_once($CFG->libdir .'/grouplib.php');
require_once($CFG->dirroot.'/mod/grouptool/locallib.php');

$agrpid = required_param('agrpid', PARAM_INT);

$grouptoolid = $DB->get_field_sql('SELECT agrp.grouptoolid AS grouptoolid
                                     FROM {grouptool_agrps} agrp
                                    WHERE agrp.id = ?', [$agrpid], MUST_EXIST);
$grouptool = $DB->get_record('grouptool', ['id' => $grouptoolid], '*', MUST_EXIST);

$PAGE->set_url('/mod/grouptool/showmembers.php');
$coursecontext = context_course::instance($grouptool->course);
$PAGE->set_context($coursecontext);

$cm = get_coursemodule_from_instance('grouptool', $grouptool->id, $grouptool->course);
$context = context_module::instance($cm->id);

require_login($cm->course, true, $cm);

echo $OUTPUT->header();

$grouptool = new mod_grouptool($cm->id, $grouptool, $cm);

if (!has_capability('mod/grouptool:view_regs_group_view', $context)
    && !has_capability('mod/grouptool:view_regs_course_view', $context)
    && !$grouptool->canshowmembers($agrpid)) {
    echo html_writer::tag('div', get_string('not_allowed_to_show_members', 'grouptool'),
                          ['class' => 'reg']);
} else {

    $showidnumber = has_capability('mod/grouptool:view_regs_group_view', $context)
                    || has_capability('mod/grouptool:view_regs_course_view', $context);

    $group = $grouptool->get_active_groups(true, true, $agrpid);
    $group = current($group);

    echo $OUTPUT->heading($group->name, 2, 'showmembersheading');

    // Add data attributes for JS!
    $registered = [];
    if (!empty($group->registered)) {
        foreach ($group->registered as $cur) {
            $registered[] = $cur->userid;
        }
    }
    $members = array_keys($group->moodle_members);
    $queued = [];
    if (!empty($group->queued)) {
        foreach ($group->queued as $cur) {
            $queued[$cur->userid] = $cur->userid;
        }
    }
    // Get all registered users with moodle-group-membership!
    $absregs = array_intersect($registered, $members);
    $absregs = array_combine($absregs, $absregs);
    // Get all registered users without moodle-group-membership!
    $gtregs = array_diff($registered, $members);
    $gtregs = array_combine($gtregs, $gtregs);
    // Get all moodle-group-members without registration!
    $mdlregs = array_diff($members, $registered);
    $mdlregs = array_combine($mdlregs, $mdlregs);

    $context = new stdClass();
    $context->courseid = $cm->course;
    $context->showidnumber = $showidnumber;
    $context->profileurl = $CFG->wwwroot . '/user/view.php?course='.$cm->course.'&id=';
    $helpicon = new help_icon('status', 'mod_grouptool');
    $context->statushelp = $helpicon->export_for_template($OUTPUT);
    $context->name = $group->name;

    // Cache needed user records right now!
    $userfields = get_all_user_name_fields(true);
    if ($showidnumber) {
        $fields = "id,idnumber,".$userfields;
    } else {
        $fields = "id,".$userfields;
    }
    $users = $DB->get_records_list("user", 'id', $gtregs + $queued, null, $fields);

    $context->absregs = [];
    if (!empty($absregs)) {
        foreach ($absregs as $cur) {
            // These user records are fully fetched in $group->moodle_members!
            $context->absregs[] = [
                    'idnumber' => $showidnumber ? $group->moodle_members[$cur]->idnumber : '',
                    'fullname' => fullname($group->moodle_members[$cur]),
                    'id'       => $cur
            ];
        }
    }

    $context->gtregs = [];
    if (!empty($gtregs)) {
        foreach ($gtregs as $cur) {
            $context->gtregs[] = [
                    'idnumber' => $showidnumber ? $users[$cur]->idnumber : '',
                    'fullname' => fullname($users[$cur]),
                    'id'       => $cur
            ];
        }
    }

    $context->mregs = [];
    if (!empty($mdlregs)) {
        foreach ($mdlregs as $cur) {
            $context->mregs[] = [
                    'idnumber' => $showidnumber ? $group->moodle_members[$cur]->idnumber : '',
                    'fullname' => fullname($group->moodle_members[$cur]),
                    'id'       => $cur
            ];
        }
    }

    $context->queued = [];
    if (!empty($queued)) {
        $queuedlist = $DB->get_records('grouptool_queued', ['agrpid' => $group->agrpid], 'timestamp ASC');
        foreach ($queued as $cur) {
            $context->queued[] = [
                    'idnumber' => $showidnumber ? $users[$cur]->idnumber : '',
                    'fullname' => fullname($users[$cur]),
                    'id'       => $cur,
                    'rank'     => $this->get_rank_in_queue($queuedlist, $cur)
            ];
        }
    }

    // This will call the function to load and render our template.
    $class = 'col-12 offset-0 col-xl-8 offset-xl-2';
    echo $OUTPUT->box($OUTPUT->render_from_template('mod_grouptool/groupmembers', $context), $class);
}

echo $OUTPUT->footer();