Esempio n. 1
0
        $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 {
Esempio n. 2
0
/**
 * 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;
            }
        }
    }
}
Esempio n. 3
0
 * @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 {
Esempio n. 4
0
     }
     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);
Esempio n. 5
0
 /**
  * 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;
 }