} else { error('You must specify a course_module ID or an instance ID'); } require_login($course, true, $cm); $context = context_module::instance($cm->id); require_capability('mod/jclic:view', $context); require_capability('moodle/grade:viewall', $context); $PAGE->set_url('/mod/jclic/report.php', array('id' => $cm->id, 'mode' => $mode)); $PAGE->set_title(format_string($jclic->name)); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_pagelayout('report'); $PAGE->set_context($context); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('report_' . $mode, 'jclic')); groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/jclic/report.php?id=' . $cm->id); jclic_view_dates($jclic, $cm); // Report $PAGE->requires->js('/mod/jclic/jclic.js'); // Show students list with their results require_once $CFG->libdir . '/gradelib.php'; $perpage = optional_param('perpage', 10, PARAM_INT); $perpage = $perpage <= 0 ? 10 : $perpage; $page = optional_param('page', 0, PARAM_INT); // find out current groups mode $groupmode = groups_get_activity_groupmode($cm); $currentgroup = groups_get_activity_group($cm, true); // Get all ppl that are allowed to submit jclic list($esql, $params) = get_enrolled_sql($context, 'mod/jclic:submit', $currentgroup); $sql = "SELECT u.id FROM {user} u " . "LEFT JOIN ({$esql}) eu ON eu.id=u.id " . "WHERE u.deleted = 0 AND eu.id=u.id "; $users = $DB->get_records_sql($sql, $params); if (!empty($users)) {
/** * Display the jclic applet * */ function jclic_view_applet($jclic, $context, $ispreview = false) { global $OUTPUT, $PAGE, $CFG, $USER; $timenow = time(); $isopen = empty($jclic->timeavailable) || $jclic->timeavailable < $timenow; if (!$isopen) { echo $OUTPUT->box(get_string('notopenyet', 'jclic', userdate($jclic->timeavailable)), 'generalbox boxaligncenter jclicdates'); if (!$ispreview) { return; } } $isclosed = !empty($jclic->timedue) && $jclic->timedue < $timenow; if ($isclosed) { echo $OUTPUT->box(get_string('expired', 'jclic', userdate($jclic->timedue)), 'generalbox boxaligncenter jclicdates'); if (!$ispreview) { return; } } $sessions = jclic_get_sessions($jclic->id, $USER->id); $attempts = count($sessions); if (!$ispreview && ($attempts > 0 || $isopen)) { echo '<br><A href="#" onclick="window.open(\'action/student_results.php?id=' . $context->instanceid . '\',\'JClic\',\'navigation=0,toolbar=0,resizable=1,scrollbars=1,width=700,height=400\');" >' . get_string('show_my_results', 'jclic') . '</A>'; } $config = get_config('jclic'); if ($jclic->maxattempts < 0 || $attempts < $jclic->maxattempts) { echo '<div id="jclic_applet" style="text-align:center;padding-top:10px;">'; echo '</div>'; if (isset($config->pluginjs) && !empty($config->pluginjs)) { echo '<script type="text/javascript" src="' . $config->pluginjs . '"></script>'; } else { $PAGE->requires->js('/mod/jclic/jclicplugin.js'); } $PAGE->requires->js('/mod/jclic/jclic.js'); $params = get_object_vars($jclic); $params['jclic_url'] = jclic_get_url($jclic, $context); $params['jclic_path'] = jclic_get_server(); $params['jclic_service'] = jclic_get_path() . '/mod/jclic/action/beans.php'; $params['jclic_user'] = $USER->id; $params['jclic_jarbase'] = $config->jarbase; $params['jclic_lap'] = $config->lap; $params['width'] = 800; $params['height'] = 600; if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 || substr($CFG->wwwroot, 0, strlen('https')) === 'https') { $params['jclic_protocol'] = 'https'; } else { $params['jclic_protocol'] = 'http'; } $PAGE->requires->js_init_call('M.mod_jclic.init', array($params)); } else { echo $OUTPUT->box(get_string('msg_noattempts', 'jclic'), 'generalbox boxaligncenter'); } jclic_view_dates($jclic, $context, $timenow); }