$course = $DB->get_record('course', array('id' => $grouptool->course), '*', MUST_EXIST); $cm = get_coursemodule_from_instance('grouptool', $grouptool->id, $course->id, false, MUST_EXIST); } else { print_error('invalidcoursemodule'); } } require_login($course, true, $cm); $context = context_module::instance($cm->id); // Print the page header! $PAGE->set_url('/mod/grouptool/view.php', array('id' => $cm->id)); $PAGE->set_context($context); $PAGE->set_title(format_string($grouptool->name)); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_activity_record($grouptool); $PAGE->add_body_class('course-content'); $instance = new mod_grouptool($cm->id, $grouptool, $cm, $course); // Output starts here! echo $OUTPUT->header(); // Print tabs according to users capabilities! $inactive = array(); $tabs = array(); $row = array(); $creategrps = has_capability('mod/grouptool:create_groups', $context); $creategrpgs = has_capability('mod/grouptool:create_groupings', $context); $admingrps = has_capability('mod/grouptool:administrate_groups', $context); if ($creategrps || $creategrpgs || $admingrps) { if ($creategrps && ($admingrps || $creategrpgs)) { $row['administration'] = new tabobject('administration', $CFG->wwwroot . '/mod/grouptool/view.php?id=' . $id . '&tab=administration', get_string('administration', 'grouptool'), get_string('administration_alt', 'grouptool'), false); $row['administration']->subtree['group_admin'] = new tabobject('group_admin', $CFG->wwwroot . '/mod/grouptool/view.php?id=' . $id . '&tab=group_admin', get_string('group_administration', 'grouptool'), get_string('group_administration_alt', 'grouptool'), false); $row['administration']->subtree['group_creation'] = new tabobject('group_creation', $CFG->wwwroot . '/mod/grouptool/view.php?id=' . $id . '&tab=group_creation', get_string('group_creation', 'grouptool'), get_string('group_creation_alt', 'grouptool'), false); } else {
/** * prepare text for mymoodle-Page to be displayed * * @param stdClass[] $courses * @param string[] $htmlarray */ function grouptool_print_overview($courses, &$htmlarray) { global $USER, $CFG, $DB, $OUTPUT; require_once $CFG->dirroot . '/mod/grouptool/locallib.php'; if (empty($courses) || !is_array($courses) || count($courses) == 0) { return; } if (!($grouptools = get_all_instances_in_courses('grouptool', $courses))) { return; } foreach ($grouptools as $grouptool) { $context = context_module::instance($grouptool->coursemodule, MUST_EXIST); $strgrouptool = get_string('grouptool', 'grouptool'); $strduedate = get_string('duedate', 'grouptool'); $strduedateno = get_string('duedateno', 'grouptool'); $str = ""; if (has_capability('mod/grouptool:register', $context) || has_capability('mod/grouptool:view_regs_group_view', $context) || has_capability('mod/grouptool:view_regs_course_view', $context)) { $attrib = array('title' => $strgrouptool, 'href' => $CFG->wwwroot . '/mod/grouptool/view.php?id=' . $grouptool->coursemodule); if (!$grouptool->visible || $grouptool->timedue != 0 && $grouptool->timedue <= time()) { $attrib['class'] = 'dimmed'; } list($cc, $nused) = grouptool_display_lateness(time(), $grouptool->timedue); $str .= html_writer::tag('div', $strgrouptool . ': ' . html_writer::tag('a', $grouptool->name, $attrib), array('class' => 'name')); $attr = array('class' => 'info'); if ($grouptool->timeavailable > time()) { $ta = $grouptool->timeavailable; $str .= html_writer::tag('div', get_string('availabledate', 'grouptool') . ': ' . html_writer::tag('span', userdate($ta)), $attr); } if ($grouptool->timedue) { $str .= html_writer::tag('div', $strduedate . ': ' . html_writer::tag('span', userdate($grouptool->timedue), array('class' => $cc == 'late' ? ' late' : '')), $attr); } else { $str .= html_writer::tag('div', $strduedateno, $attr); } } $details = ''; if (has_capability('mod/grouptool:register', $context) || has_capability('mod/grouptool:view_regs_group_view', $context) || has_capability('mod/grouptool:view_regs_course_view', $context)) { $instance = new mod_grouptool($grouptool->coursemodule, $grouptool); $userstats = $instance->get_registration_stats($USER->id); } if (has_capability('mod/grouptool:register', $context) && $grouptool->allow_reg) { if (count($userstats->registered)) { $tempstr = ""; foreach ($userstats->registered as $registration) { $ts = $registration->timestamp; list($colorclass, $text) = grouptool_display_lateness($ts, $grouptool->timedue); if ($tempstr != "") { $tempstr .= '; '; } $tempstr .= html_writer::tag('span', $registration->grpname); } if ($grouptool->allow_multiple && count($userstats->registered) < $grouptool->choose_min || !$grouptool->allow_multiple && !count($userstats->registered)) { if ($grouptool->allow_multiple) { $missing = $grouptool->choose_min - count($userstats->registered); $stringlabel = $missing > 1 ? 'registrations_missing' : 'registration_missing'; } else { $missing = 1; $stringlabel = 'registration_missing'; } $details .= html_writer::tag('div', html_writer::tag('div', get_string($stringlabel, 'grouptool', $missing)) . ' ' . get_string('registrations', 'grouptool') . ': ' . $tempstr, array('class' => 'registered')); } else { $details .= html_writer::tag('div', get_string('registrations', 'grouptool') . ': ' . $tempstr, array('class' => 'registered')); } } else { if ($grouptool->allow_multiple) { $missing = $grouptool->choose_min; $stringlabel = $missing > 1 ? 'registrations_missing' : 'registration_missing'; } else { $missing = 1; $stringlabel = 'registration_missing'; } $details .= html_writer::tag('div', html_writer::tag('div', get_string($stringlabel, 'grouptool', $missing)) . get_string('registrations', 'grouptool') . ': ' . get_string('not_registered', 'grouptool'), array('class' => 'registered')); } if (count($userstats->queued)) { $tempstr = ""; foreach ($userstats->queued as $queue) { list($colorclass, $text) = grouptool_display_lateness($queue->timestamp, $grouptool->timedue); if ($tempstr != "") { $tempstr .= ", "; } $tempstr .= html_writer::tag('span', $queue->grpname . ' (' . $queue->rank . ')', array('class' => $colorclass)); } $details .= html_writer::tag('div', get_string('queues', 'grouptool') . ': ' . $tempstr, array('class' => 'queued')); } } if ($grouptool->allow_reg && (has_capability('mod/grouptool:view_regs_group_view', $context) || has_capability('mod/grouptool:view_regs_course_view', $context))) { $details .= html_writer::tag('div', get_string('global_userstats', 'grouptool', $userstats), array('class' => 'userstats')); } if (has_capability('mod/grouptool:view_regs_group_view', $context) || has_capability('mod/grouptool:view_regs_course_view', $context) || has_capability('mod/grouptool:register', $context)) { if ($grouptool->allow_reg) { $str .= html_writer::tag('div', $details, array('class' => 'details')); } $str = html_writer::tag('div', $str, array('class' => 'grouptool overview')); if (empty($htmlarray[$grouptool->course]['grouptool'])) { $htmlarray[$grouptool->course]['grouptool'] = $str; } else { $htmlarray[$grouptool->course]['grouptool'] .= $str; } } } }
* @package mod_grouptool * @author Andreas Hruska (andreas.hruska@tuwien.ac.at) * @author Katarzyna Potocka (katarzyna.potocka@tuwien.ac.at) * @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 '../../config.php'; require_once $CFG->dirroot . '/mod/grouptool/locallib.php'; $cmid = required_param('id', PARAM_INT); $cm = get_coursemodule_from_id('grouptool', $cmid); $context = context_module::instance($cmid); $PAGE->set_context($context); $url = new moodle_url($CFG->wwwroot . '/mod/grouptool/download.php', array('id' => $cmid)); $PAGE->set_url($url); $instance = new mod_grouptool($cmid); require_login($cm->course, true, $cm); require_capability('mod/grouptool:export', $context); $groupingid = optional_param('groupingid', 0, PARAM_INT); $groupid = optional_param('groupid', 0, PARAM_INT); $PAGE->url->param('groupingid', $groupingid); $PAGE->url->param('groupid', $groupid); $modinfo = get_fast_modinfo($cm->course); $cm = $modinfo->get_cm($cm->id); if (empty($cm->uservisible)) { if ($cm->availableinfo) { // User cannot access the activity, but on the course page they will // see a link to it, greyed-out, with information (HTML format) from // $cm->availableinfo about why they can't access it. $text = html_writer::empty_tag('br') . $cm->availableinfo; } else {
} list($colorclass, $unused) = grouptool_display_lateness(time(), $grouptool->timedue); $attr = array('class' => 'info'); if ($grouptool->timeavailable > time()) { $str .= html_writer::tag('div', get_string('availabledate', 'grouptool') . ': ' . html_writer::tag('span', userdate($grouptool->timeavailable)), $attr); } if ($grouptool->timedue) { $str .= html_writer::tag('div', $strduedate . ': ' . html_writer::tag('span', userdate($grouptool->timedue), array('class' => $colorclass == 'late' ? ' late' : '')), $attr); } else { $str .= html_writer::tag('div', $strduedateno, $attr); } } $details = ''; if (has_capability('mod/grouptool:register', $context) || has_capability('mod/grouptool:view_regs_course_view', $context) || has_capability('mod/grouptool:view_regs_group_view', $context)) { // It's similar to the student mymoodle output! $instance = new mod_grouptool($grouptool->coursemodule, $grouptool); $userstats = $instance->get_registration_stats($USER->id); } if (has_capability('mod/grouptool:register', $context)) { if ($grouptool->allow_reg) { if (count($userstats->registered)) { $tempstr = ""; foreach ($userstats->registered as $registration) { if ($tempstr != "") { $tempstr .= '; '; } $tempstr .= html_writer::tag('span', $registration->grpname); } if ($grouptool->allow_multiple && count($userstats->registered) < $grouptool->choose_min || !$grouptool->allow_multiple && !count($userstats->registered)) { if ($grouptool->allow_multiple) { $missing = $grouptool->choose_min - count($userstats->registered);
/** * group_deleted * * @param \core\event\group_deleted $event Event object containing useful data * @return bool true if success */ public static function group_deleted(\core\event\group_deleted $event) { global $CFG, $DB; $data = $event->get_record_snapshot('groups', $event->objectid); $course = $DB->get_record('course', array('id' => $data->courseid), '*', MUST_EXIST); if (!($grouptools = get_all_instances_in_course('grouptool', $course))) { return true; } $grouprecreated = false; $agrpids = array(); foreach ($grouptools as $grouptool) { $cmid = $grouptool->coursemodule; switch ($grouptool->ifgroupdeleted) { default: case GROUPTOOL_RECREATE_GROUP: if (!$grouprecreated) { $newid = $DB->insert_record('groups', $data, true); if ($newid !== false) { // Delete auto-inserted agrp. if ($DB->record_exists('grouptool_agrps', array('groupid' => $newid))) { $DB->delete_records('grouptool_agrps', array('groupid' => $newid)); } // Update reference. if ($DB->record_exists('grouptool_agrps', array('groupid' => $data->id))) { $DB->set_field('grouptool_agrps', 'groupid', $newid, array('groupid' => $data->id)); } // Trigger event! $logdata = array('cmid' => $cmid, 'groupid' => $data->id, 'newid' => $newid, 'courseid' => $data->courseid); \mod_grouptool\event\group_recreated::create_from_object($logdata)->trigger(); if ($grouptool->immediate_reg) { require_once $CFG->dirroot . '/mod/grouptool/locallib.php'; $instance = new mod_grouptool($cmid, $grouptool); $instance->push_registrations(); } $grouprecreated = true; } else { print_error('error', 'moodle'); return false; } } else { if ($grouptool->immediate_reg) { require_once $CFG->dirroot . '/mod/grouptool/locallib.php'; $instance = new mod_grouptool($cmid, $grouptool); $instance->push_registrations(); } } break; case GROUPTOOL_DELETE_REF: if ($agrpid = $DB->get_field('grouptool_agrps', 'id', array('groupid' => $data->id, 'grouptoolid' => $grouptool->id))) { $agrpids[] = $agrpid; } break; } } if (count($agrpids) > 0) { $agrps = $DB->get_records_list('grouptool_agrps', 'id', $agrpids); $cms = array(); $regs = $DB->get_records_list('grouptool_registered', 'agrpid', $agrpids); $DB->delete_records_list('grouptool_registered', 'agrpid', $agrpids); foreach ($regs as $cur) { if (empty($cms[$agrps[$cur->agrpid]->grouptoolid])) { $cms[$agrps[$cur->agrpid]->grouptoolid] = get_coursemodule_from_instance('grouptool', $agrps[$cur->agrpid]->grouptoolid); } $cur->groupid = $agrps[$cur->agrpid]->groupid; \mod_grouptool\event\registration_deleted::create_via_eventhandler($cms[$agrps[$cur->agrpid]->grouptoolid], $cur); } $queues = $DB->get_records_list('grouptool_queued', 'agrpid', $agrpids); $DB->delete_records_list('grouptool_queued', 'agrpid', $agrpids); foreach ($queues as $cur) { if (empty($cms[$agrps[$cur->agrpid]->grouptoolid])) { $cms[$agrps[$cur->agrpid]->grouptoolid] = get_coursemodule_from_instance('grouptool', $agrps[$cur->agrpid]->grouptoolid); } // Trigger event! $cur->groupid = $agrps[$cur->agrpid]->groupid; \mod_grouptool\event\queue_entry_deleted::create_via_eventhandler($cms[$agrps[$cur->agrpid]->grouptoolid], $cur); } $DB->delete_records_list('grouptool_agrps', 'id', $agrpids); foreach ($agrps as $cur) { if (empty($cms[$cur->grouptoolid])) { $cms[$cur->grouptoolid] = get_coursemodule_from_instance('grouptool', $cur->grouptoolid); } // Trigger event! $logdata = new stdClass(); $logdata->id = $cur->id; $logdata->cmid = $cms[$cur->grouptoolid]->id; $logdata->groupid = $cur->groupid; $logdata->agrpid = $cur->id; $logdata->courseid = $data->courseid; \mod_grouptool\event\agrp_deleted::create_from_object($logdata); } } return true; }