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);
示例#6
0
 /**
  * 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);