private function get_my_courses_with_reviews($sessions) { global $USER; //$mycourses = enrol_get_my_courses(); $courseswithreviews = array(); foreach ($sessions as $session) { $reviewcourses = array(); $subjectreviews = progressreview_controller::get_reviews($session->id, null, null, $USER->id, PROGRESSREVIEW_SUBJECT); $tutorreviews = progressreview_controller::get_reviews($session->id, null, null, $USER->id, PROGRESSREVIEW_TUTOR); foreach ($subjectreviews as $review) { $course = clone $review->get_course(); if (!array_key_exists($course->originalid, $reviewcourses)) { $course->id = $course->originalid; unset($course->originalid); $course->reviewtype = PROGRESSREVIEW_SUBJECT; $reviewcourses[$course->id] = $course; } } foreach ($tutorreviews as $review) { $course = clone $review->get_course(); if (!array_key_exists($course->originalid, $reviewcourses)) { $course->id = $course->originalid; unset($course->originalid); $course->reviewtype = PROGRESSREVIEW_TUTOR; $reviewcourses[$course->id] = $course; } } $session->courses = $reviewcourses; $courseswithreviews[] = $session; } return $courseswithreviews; }
$PAGE->navbar->add($session->name); } // If we're *not* viewing the form that we just edited again (i.e. we've moved to another // student), unset _POST so that the data we just submitted isn't displayed in the new form if ($editid != $studentid) { unset($_POST); } // If there's a student ID, show their review form if ($studentid) { $review = new progressreview($student->id, $sessionid, $courseid, $USER->id, PROGRESSREVIEW_TUTOR); $form = new progressreview_tutor_form(null, array('progressreview' => $review)); $data = new stdClass(); $form->set_data($data); } else { // If there's no student ID, show the list of students $tutorgroup = progressreview_controller::get_reviews($sessionid, null, $courseid, null, PROGRESSREVIEW_TUTOR); usort($tutorgroup, function ($a, $b) { $student_a = $a->get_student(); $student_b = $b->get_student(); $lastname = strcmp($student_a->lastname, $student_b->lastname); if ($lastname) { return $lastname; } else { return strcmp($student_a->firstname, $student_b->firstname); } }); $content .= $output->tutorgroup_list($tutorgroup); } } add_to_log($course->id, 'local_progressreview', 'view', $PAGE->url->out(), $studentid); if (isset($form)) {
$sessionid = required_param('sessionid', PARAM_INT); $courseid = required_param('courseid', PARAM_INT); $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid); if (!($session = $DB->get_record('progressreview_session', array('id' => $sessionid)))) { print_error('invalidsession', 'local_progressreview'); } if (!($course = $DB->get_record('course', array('id' => $courseid)))) { print_error('invalidcourse', 'local_progressreview'); } require_login($course); require_capability('moodle/local_progressreview:write', $coursecontext); $urlparams = array('sessionid' => $sessionid, 'courseid' => $courseid); $PAGE->set_url('/local/progressreview/changescale.php', $urlparams); $PAGE->navbar->add(get_string('pluginname', 'local_progressreview')); $PAGE->navbar->add($session->name); $reviews = progressreview_controller::get_reviews($sessionid, null, $courseid); $scaleid = current($reviews)->get_plugin('subject')->get_scaleid(); $formdata = array('sessionid' => $sessionid, 'courseid' => $courseid, 'scaleid' => $scaleid); $form = new progressreview_changescale_form('', $formdata); $content = ''; if ($data = $form->get_data()) { $newscaleid = $data->scaleid; foreach ($reviews as $review) { $review->get_plugin('subject')->update(array('scaleid' => $newscaleid)); } $redirectparams = array('sessionid' => $sessionid, 'courseid' => $courseid); $redirecturl = new moodle_url('/local/progressreview/subjectreview.php', $redirectparams); redirect($redirecturl, get_string('changessaved'), 2); } echo $OUTPUT->header(); echo $content;
protected function definition() { global $OUTPUT, $PAGE; $mform = $this->_form; $progressreview = $this->_customdata['progressreview']; $student = $progressreview->get_student(); $session = $progressreview->get_session(); $mform->addElement('hidden', 'reviewid', $progressreview->id, array('id' => 'id_reviewid')); $mform->addElement('hidden', 'editid', $student->id, array('id' => 'id_editid')); $mform->addElement('hidden', 'courseid', $progressreview->get_course()->originalid, array('id' => 'id_courseid')); $mform->addElement('hidden', 'sessionid', $session->id, array('id' => 'id_sessionid')); $mform->addElement('hidden', 'teacherid', $progressreview->get_teacher()->originalid, array('id' => 'id_teacherid')); $mform->addElement('hidden', 'reviewtype', PROGRESSREVIEW_TUTOR, array('id' => 'id_reviewtype')); $mform->addElement('header', 'core', fullname($student)); $mform->addElement('html', $OUTPUT->user_picture($student)); $output = $PAGE->get_renderer('local_progressreview'); $reviews = progressreview_controller::get_reviews($session->id, $student->id); $table = $output->subject_review_table($reviews, false, PROGRESSREVIEW_SUBJECT); $mform->addElement('html', $table); $progressreview->get_plugin('tutor')->add_form_fields($mform); $strsave = get_string('saveand', 'local_progressreview'); $jsmodule = array('name' => 'local_progressreview', 'fullpath' => '/local/progressreview/module.js', 'requires' => array('base', 'node', 'io', 'json', 'transition'), 'strings' => array(array('autosaveactive', 'local_progressreview'), array('autosavefailed', 'local_progressreview'), array('autosaving', 'local_progressreview'))); $PAGE->requires->js_init_call('M.local_progressreview.init_autosave', array($strsave), false, $jsmodule); $plugins = $progressreview->get_plugins(); foreach ($plugins as $plugin) { $pluginname = $plugin->get_name(); $legend = get_string('pluginname', 'progressreview_' . $pluginname); if ($pluginname != 'tutor') { $mform->addElement('header', $pluginname . '_header', $legend); $plugin->add_form_fields($mform); } $plugin->require_js(); $modulename = 'M.progressreview_' . $pluginname; $PAGE->requires->js_init_call($modulename . '.init_autosave'); } $tutorgroup = progressreview_controller::get_reviews($progressreview->get_session()->id, null, $progressreview->get_course()->originalid, null, PROGRESSREVIEW_TUTOR); usort($tutorgroup, function ($a, $b) { $student_a = $a->get_student(); $student_b = $b->get_student(); $lastname = strcmp($student_a->lastname, $student_b->lastname); if ($lastname) { return $lastname; } else { return strcmp($student_a->firstname, $student_b->firstname); } }); $prev = null; $current = null; $next = null; $found = false; reset($tutorgroup); foreach ($tutorgroup as $review) { if ($found) { $next = $review; break; } if ($review->id == $progressreview->id) { $found = true; $prev = $current; $current = $review; continue; } if (!$found) { $current = $review; } } $mform->closeHeaderBefore('save'); $mform->addElement('button', 'save', get_string('saveand', 'local_progressreview')); $buttongroup = array(); if ($prev) { $prevstudent = $prev->get_student(); $mform->addElement('hidden', 'previd', $prevstudent->id); $buttongroup[] = $mform->createElement('submit', 'prev', $OUTPUT->larrow() . ' ' . fullname($prevstudent)); } else { $strstartofgroup = get_string('startofgroup', 'local_progressreview'); $buttongroup[] = $mform->createElement('submit', 'prev', $OUTPUT->larrow() . ' ' . $strstartofgroup, array('disabled' => 'disabled')); } $buttongroup[] = $mform->createElement('submit', 'save', get_string('returntolist', 'local_progressreview')); if ($next) { $nextstudent = $next->get_student(); $mform->addElement('hidden', 'nextid', $nextstudent->id); $buttongroup[] = $mform->createElement('submit', 'next', fullname($nextstudent) . ' ' . $OUTPUT->rarrow()); } else { $strendofgroup = get_string('endofgroup', 'local_progressreview'); $buttongroup[] = $mform->createElement('submit', 'next', $strendofgroup . ' ' . $OUTPUT->rarrow(), array('disabled' => 'disabled')); } $mform->addGroup($buttongroup, 'buttons'); $mform->addElement('html', $output->progress_indicator()); $mform->addElement('html', $output->error_indicator()); }
$sessionid = required_param('sessionid', PARAM_INT); $studentid = required_param('studentid', PARAM_INT); $courseid = required_param('courseid', PARAM_INT); $teacherid = required_param('teacherid', PARAM_INT); $type = required_param('reviewtype', PARAM_INT); $plugin = required_param('plugin', PARAM_TEXT); $field = urldecode(required_param('field', PARAM_TEXT)); $value = urldecode(required_param('value', PARAM_TEXT)); progressreview_controller::validate_session($sessionid); progressreview_controller::validate_student($studentid); progressreview_controller::validate_course($courseid); progressreview_controller::validate_teacher($teacherid); require_login($courseid); $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid); require_capability('moodle/local_progressreview:write', $coursecontext); $progressreview = current(progressreview_controller::get_reviews($sessionid, $studentid, $courseid, $teacherid, $type)); $plugin = $progressreview->get_plugin($plugin); $plugin->validate(array($field => $value)); $plugin->autosave($field, $value); } catch (moodle_exception $e) { add_to_log($courseid, 'local_progressreview', 'update failed', '', get_class($e)); header('HTTP/1.1 400 Bad Request'); progressreview_controller::xhr_response($e); } catch (progressreview_invalidfield_exception $e) { add_to_log($courseid, 'local_progressreview', 'update failed', '', get_class($e)); header('HTTP/1.1 400 Bad Request'); progressreview_controller::xhr_response($e); } catch (dml_write_exception $e) { add_to_log($courseid, 'local_progressreview', 'update failed', '', get_class($e)); header('HTTP/1.1 400 Bad Request'); progressreview_controller::xhr_response($e);
/** * Returns (and sets if necessary) the previous review based on the previous session ID * * @return object the progressreview object representing the previous review */ public function get_previous() { if (is_null($this->previous_review)) { $this->previous_review = current(progressreview_controller::get_reviews($this->session->previoussession, $this->student->id, $this->course->originalid, $this->teacher->originalid, $this->type)); } return $this->previous_review; }
$PAGE->set_heading("{$SITE->shortname}: {$struser}"); $PAGE->navbar->add($struser); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('usernotavailable', 'error')); echo $OUTPUT->footer(); exit; } $PAGE->set_pagelayout('mydashboard'); $PAGE->set_pagetype('user-profile'); $strreviews = get_string('pluginname', 'local_progressreview'); $PAGE->set_heading(fullname($user) . ": {$strreviews}"); $PAGE->set_title(fullname($user) . ": {$strreviews}"); $PAGE->navigation->extend_for_user($user); $output = $PAGE->get_renderer('local_progressreview'); $subjectreviews = progressreview_controller::get_reviews($session->id, $user->id); $tutorreviews = progressreview_controller::get_reviews($session->id, $user->id, null, null, PROGRESSREVIEW_TUTOR); if ($tutorreview = @current($tutorreviews)) { $tutorplugins = $tutorreview->get_plugins(); $reviewdata = array(); $pluginrenderers = array(); foreach ($tutorplugins as $plugin) { $reviewdata[] = $plugin->get_review(); if (!($pluginrenderers[] = $PAGE->get_renderer('progressreview_' . $plugin->get_name()))) { throw new coding_exception('The progressreview_' . $plugin->get_name() . ' has no renderer. It must have a renderer with at least the review() method defined'); } } } add_to_log(SITEID, 'local_progressreview', 'view', $PAGE->url->out()); $content = $OUTPUT->heading(fullname($user) . ' - ' . get_string('pluginname', 'local_progressreview')); $content .= $output->user_session_links($user, $sessions, $sessionid);