/** * Regular jobs to execute via cron * * @return boolean true on success, false otherwise */ function workshopplus_cron() { global $CFG, $DB; $now = time(); mtrace(' processing workshopplus subplugins ...'); cron_execute_plugin_type('workshopplusallocation', 'workshopplus allocation methods'); // now when the scheduled allocator had a chance to do its job, check if there // are some workshoppluss to switch into the assessment phase $workshoppluss = $DB->get_records_select("workshopplus", "phase = 20 AND phaseswitchassessment = 1 AND submissionend > 0 AND submissionend < ?", array($now)); if (!empty($workshoppluss)) { mtrace('Processing automatic assessment phase switch in ' . count($workshoppluss) . ' workshopplus(s) ... ', ''); require_once $CFG->dirroot . '/mod/workshopplus/locallib.php'; foreach ($workshoppluss as $workshopplus) { $cm = get_coursemodule_from_instance('workshopplus', $workshopplus->id, $workshopplus->course, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $workshopplus = new workshopplus($workshopplus, $cm, $course); $workshopplus->switch_phase(workshopplus::PHASE_ASSESSMENT); $workshopplus->log('update switch phase', $workshopplus->view_url(), $workshopplus->phase); // disable the automatic switching now so that it is not executed again by accident // if the teacher changes the phase back to the submission one $DB->set_field('workshopplus', 'phaseswitchassessment', 0, array('id' => $workshopplus->id)); // todo inform the teachers } mtrace('done'); } return true; }
$phase = required_param('phase', PARAM_INT); // the code of the new phase $confirm = optional_param('confirm', false, PARAM_BOOL); // confirmation $cm = get_coursemodule_from_id('workshopplus', $cmid, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST); $workshopplus = new workshopplus($workshopplus, $cm, $course); $PAGE->set_url($workshopplus->switchphase_url($phase), array('cmid' => $cmid, 'phase' => $phase)); require_login($course, false, $cm); require_capability('mod/workshopplus:switchphase', $PAGE->context); if ($confirm) { if (!confirm_sesskey()) { throw new moodle_exception('confirmsesskeybad'); } if (!$workshopplus->switch_phase($phase)) { print_error('errorswitchingphase', 'workshopplus', $workshopplus->view_url()); } $workshopplus->log('update switch phase', $workshopplus->view_url(), $workshopplus->phase); redirect($workshopplus->view_url()); } $PAGE->set_title($workshopplus->name); $PAGE->set_heading($course->fullname); $PAGE->navbar->add(get_string('switchingphase', 'workshopplus')); // // Output starts here // echo $OUTPUT->header(); echo $OUTPUT->heading(format_string($workshopplus->name)); echo $OUTPUT->confirm(get_string('switchphase' . $phase . 'info', 'workshopplus'), new moodle_url($PAGE->url, array('confirm' => 1)), $workshopplus->view_url()); echo $OUTPUT->footer();
$cm = get_coursemodule_from_id('workshopplus', $cmid, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); require_login($course, false, $cm); if (isguestuser()) { print_error('guestsarenotallowed'); } $workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST); $workshopplus = new workshopplus($workshopplus, $cm, $course); $PAGE->set_url($workshopplus->submission_url(), array('cmid' => $cmid, 'id' => $id)); if ($edit) { $PAGE->url->param('edit', $edit); } if ($id) { // submission is specified $submission = $workshopplus->get_submission_by_id($id); $workshopplus->log('view submission', $workshopplus->submission_url($submission->id), $submission->id); } else { // no submission specified if (!($submission = $workshopplus->get_submission_by_author($USER->id))) { $submission = new stdclass(); $submission->id = null; $submission->authorid = $USER->id; $submission->example = 0; $submission->grade = null; $submission->gradeover = null; $submission->published = null; $submission->feedbackauthor = null; $submission->feedbackauthorformat = editors_get_preferred_format(); } } /* Modified by : Sayantan
// load the assessment form and process the submitted data eventually $mform = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, $assessmenteditable, array('editableweight' => $cansetassessmentweight, 'pending' => !empty($pending))); // Set data managed by the workshopplus core, subplugins set their own data themselves. $currentdata = (object) array('feedbackauthor' => $assessment->feedbackauthor, 'feedbackauthorformat' => $assessment->feedbackauthorformat); if ($assessmenteditable and $workshopplus->overallfeedbackmode) { $currentdata = file_prepare_standard_editor($currentdata, 'feedbackauthor', $workshopplus->overall_feedback_content_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_content', $assessment->id); if ($workshopplus->overallfeedbackfiles) { $currentdata = file_prepare_standard_filemanager($currentdata, 'feedbackauthorattachment', $workshopplus->overall_feedback_attachment_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_attachment', $assessment->id); } } $mform->set_data($currentdata); if ($mform->is_cancelled()) { redirect($workshopplus->view_url()); } elseif ($assessmenteditable and $data = $mform->get_data()) { if (is_null($assessment->grade)) { $workshopplus->log('add assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid); } else { $workshopplus->log('update assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid); } // Let the grading strategy subplugin save its data. $rawgrade = $strategy->save_assessment($assessment, $data); // Store the data managed by the workshopplus core. $coredata = (object) array('id' => $assessment->id); if (isset($data->feedbackauthor_editor)) { $coredata->feedbackauthor_editor = $data->feedbackauthor_editor; $coredata = file_postupdate_standard_editor($coredata, 'feedbackauthor', $workshopplus->overall_feedback_content_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_content', $assessment->id); unset($coredata->feedbackauthor_editor); } if (isset($data->feedbackauthorattachment_filemanager)) { $coredata->feedbackauthorattachment_filemanager = $data->feedbackauthorattachment_filemanager; $coredata = file_postupdate_standard_filemanager($coredata, 'feedbackauthorattachment', $workshopplus->overall_feedback_attachment_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_attachment', $assessment->id);
* * @package mod * @subpackage workshopplus * @copyright 2010 David Mudrak <*****@*****.**> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once dirname(dirname(dirname(__FILE__))) . '/config.php'; require_once dirname(__FILE__) . '/locallib.php'; $id = required_param('id', PARAM_INT); // course_module ID $tool = required_param('tool', PARAM_ALPHA); $cm = get_coursemodule_from_id('workshopplus', $id, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST); require_login($course, false, $cm); $workshopplus = new workshopplus($workshopplus, $cm, $course); require_sesskey(); switch ($tool) { case 'clearaggregatedgrades': require_capability('mod/workshopplus:overridegrades', $workshopplus->context); $workshopplus->log('update clear aggregated grades'); $workshopplus->clear_submission_grades(); $workshopplus->clear_grading_grades(); break; case 'clearassessments': require_capability('mod/workshopplus:overridegrades', $workshopplus->context); $workshopplus->log('update clear assessments'); $workshopplus->clear_assessments(); break; } redirect($workshopplus->view_url());
$mform = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, $assessmenteditable); // Set data managed by the workshopplus core, subplugins set their own data themselves. $currentdata = (object) array('feedbackauthor' => $assessment->feedbackauthor, 'feedbackauthorformat' => $assessment->feedbackauthorformat); if ($assessmenteditable and $workshopplus->overallfeedbackmode) { $currentdata = file_prepare_standard_editor($currentdata, 'feedbackauthor', $workshopplus->overall_feedback_content_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_content', $assessment->id); if ($workshopplus->overallfeedbackfiles) { $currentdata = file_prepare_standard_filemanager($currentdata, 'feedbackauthorattachment', $workshopplus->overall_feedback_attachment_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_attachment', $assessment->id); } } $mform->set_data($currentdata); if ($mform->is_cancelled()) { redirect($workshopplus->view_url()); } elseif ($assessmenteditable and $data = $mform->get_data()) { if ($canmanage) { if (is_null($assessment->grade)) { $workshopplus->log('add reference assessment', $workshopplus->exassess_url($assessment->id), $assessment->submissionid); } else { $workshopplus->log('update reference assessment', $workshopplus->exassess_url($assessment->id), $assessment->submissionid); } } else { if (is_null($assessment->grade)) { $workshopplus->log('add example assessment', $workshopplus->exassess_url($assessment->id), $assessment->submissionid); } else { $workshopplus->log('update example assessment', $workshopplus->exassess_url($assessment->id), $assessment->submissionid); } } // Let the grading strategy subplugin save its data. $rawgrade = $strategy->save_assessment($assessment, $data); // Store the data managed by the workshopplus core. $coredata = (object) array('id' => $assessment->id); if (isset($data->feedbackauthor_editor)) {
*/ require_once dirname(dirname(dirname(__FILE__))) . '/config.php'; require_once dirname(__FILE__) . '/locallib.php'; $cmid = required_param('cmid', PARAM_INT); // course module $confirm = optional_param('confirm', false, PARAM_BOOL); // confirmation // the params to be re-passed to view.php $page = optional_param('page', 0, PARAM_INT); $sortby = optional_param('sortby', 'lastname', PARAM_ALPHA); $sorthow = optional_param('sorthow', 'ASC', PARAM_ALPHA); $cm = get_coursemodule_from_id('workshopplus', $cmid, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST); $workshopplus = new workshopplus($workshopplus, $cm, $course); $PAGE->set_url($workshopplus->aggregate_url(), compact('confirm', 'page', 'sortby', 'sorthow')); require_login($course, false, $cm); require_capability('mod/workshopplus:overridegrades', $PAGE->context); // load and init the grading evaluator $evaluator = $workshopplus->grading_evaluation_instance(); $settingsform = $evaluator->get_settings_form($PAGE->url); if ($settingsdata = $settingsform->get_data()) { $workshopplus->aggregate_submission_grades(); // updates 'grade' in {workshopplus_submissions} $evaluator->update_grading_grades($settingsdata); // updates 'gradinggrade' in {workshopplus_assessments} $workshopplus->aggregate_grading_grades(); // updates 'gradinggrade' in {workshopplus_aggregations} $workshopplus->log('update aggregate grades'); } redirect(new moodle_url($workshopplus->view_url(), compact('page', 'sortby', 'sorthow')));
} $workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST); $workshopplus = new workshopplus($workshopplus, $cm, $course); $PAGE->set_url($workshopplus->exsubmission_url($id), array('edit' => $edit)); $PAGE->set_title($workshopplus->name); $PAGE->set_heading($course->fullname); if ($edit) { $PAGE->navbar->add(get_string('exampleediting', 'workshopplus')); } else { $PAGE->navbar->add(get_string('example', 'workshopplus')); } $output = $PAGE->get_renderer('mod_workshopplus'); if ($id) { // example is specified $example = $workshopplus->get_example_by_id($id); $workshopplus->log('view example', $workshopplus->exsubmission_url($example->id), $example->id); } else { // no example specified - create new one require_capability('mod/workshopplus:manageexamples', $workshopplus->context); $example = new stdclass(); $example->id = null; $example->authorid = $USER->id; $example->example = 1; } $canmanage = has_capability('mod/workshopplus:manageexamples', $workshopplus->context); $canassess = has_capability('mod/workshopplus:peerassess', $workshopplus->context); $refasid = $DB->get_field('workshopplus_assessments', 'id', array('submissionid' => $example->id, 'weight' => 1)); if ($example->id and ($canmanage or $workshopplus->assessing_examples_allowed() and $canassess)) { // ok you can go } elseif (is_null($example->id) and $canmanage) { // ok you can go