$workshop->aggregate_submission_grades(); // updates 'grade' in {workshop_submissions}
$evaluator->update_grading_grades($settingsdata); // updates 'gradinggrade' in {workshop_assessments}
$workshop->aggregate_grading_grades(); // updates 'gradinggrade' in {workshop_aggregations}
+ $workshop->log('update aggregate grades');
redirect(new moodle_url($workshop->view_url(), compact('page', 'sortby', 'sorthow')));
}
if ($mform->is_cancelled()) {
redirect($workshop->view_url());
} elseif ($assessmenteditable and ($data = $mform->get_data())) {
+ if (is_null($assessment->grade)) {
+ $workshop->log('add assessment', $workshop->assess_url($assessment->id), $assessment->submissionid);
+ } else {
+ $workshop->log('update assessment', $workshop->assess_url($assessment->id), $assessment->submissionid);
+ }
$rawgrade = $strategy->save_assessment($assessment, $data);
if (isset($data->weight) and $cansetassessmentweight) {
$DB->set_field('workshop_assessments', 'weight', $data->weight, array('id' => $assessment->id));
defined('MOODLE_INTERNAL') || die();
$logs = array(
- //TODO copied from old install.php
- //array('module'=>'workshop', 'action'=>'add', 'mtable'=>'workshop', 'field'=>'name'),
- //array('module'=>'workshop', 'action'=>'update', 'mtable'=>'workshop', 'field'=>'name'),
- //array('module'=>'workshop', 'action'=>'view', 'mtable'=>'workshop', 'field'=>'name'),
- //array('module'=>'workshop', 'action'=>'view all', 'mtable'=>'workshop', 'field'=>'name'),
-);
\ No newline at end of file
+ // workshop instance log actions
+ array('module'=>'workshop', 'action'=>'add', 'mtable'=>'workshop', 'field'=>'name'),
+ array('module'=>'workshop', 'action'=>'update', 'mtable'=>'workshop', 'field'=>'name'),
+ array('module'=>'workshop', 'action'=>'view', 'mtable'=>'workshop', 'field'=>'name'),
+ array('module'=>'workshop', 'action'=>'view all', 'mtable'=>'workshop', 'field'=>'name'),
+ // submission log actions
+ array('module'=>'workshop', 'action'=>'add submission', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'update submission', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'view submission', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ // assessment log actions
+ array('module'=>'workshop', 'action'=>'add assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'update assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ // example log actions
+ array('module'=>'workshop', 'action'=>'add example', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'update example', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'view example', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ // example assessment log actions
+ array('module'=>'workshop', 'action'=>'add reference assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'update reference assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'add example assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ array('module'=>'workshop', 'action'=>'update example assessment', 'mtable'=>'workshop_submissions', 'field'=>'title'),
+ // grading evaluation log actions
+ array('module'=>'workshop', 'action'=>'update aggregate grades', 'mtable'=>'workshop', 'field'=>'name'),
+ array('module'=>'workshop', 'action'=>'update clear aggregated grades', 'mtable'=>'workshop', 'field'=>'name'),
+ array('module'=>'workshop', 'action'=>'update clear assessments', 'mtable'=>'workshop', 'field'=>'name'),
+);
if ($mform->is_cancelled()) {
redirect($workshop->view_url());
} elseif ($assessmenteditable and ($data = $mform->get_data())) {
+ if ($canmanage) {
+ if (is_null($assessment->grade)) {
+ $workshop->log('add reference assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid);
+ } else {
+ $workshop->log('update reference assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid);
+ }
+ } else {
+ if (is_null($assessment->grade)) {
+ $workshop->log('add example assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid);
+ } else {
+ $workshop->log('update example assessment', $workshop->exassess_url($assessment->id), $assessment->submissionid);
+ }
+ }
$rawgrade = $strategy->save_assessment($assessment, $data);
if ($canmanage) {
// remember the last one who edited the reference assessment
if ($id) { // example is specified
$example = $workshop->get_example_by_id($id);
+ $workshop->log('view example', $workshop->exsubmission_url($example->id), $example->id);
+
} else { // no example specified - create new one
require_capability('mod/workshop:manageexamples', $workshop->context);
$example = new stdclass();
$formdata->contenttrust = 0; // updated later
if (is_null($example->id)) {
$example->id = $formdata->id = $DB->insert_record('workshop_submissions', $formdata);
- // todo add to log
+ $workshop->log('add example', $workshop->exsubmission_url($example->id), $example->id);
} else {
+ $workshop->log('update example', $workshop->exsubmission_url($example->id), $example->id);
if (empty($formdata->id) or empty($example->id) or ($formdata->id != $example->id)) {
throw new moodle_exception('err_examplesubmissionid', 'workshop');
}
return new moodle_url('/mod/workshop/toolbox.php', array('id' => $this->cm->id, 'tool' => $tool));
}
+ /**
+ * Workshop wrapper around {@see add_to_log()}
+ *
+ * @param string $action to be logged
+ * @param moodle_url $url absolute url as returned by {@see workshop::submission_url()} and friends
+ * @param mixed $info additional info, usually id in a table
+ */
+ public function log($action, moodle_url $url = null, $info = null) {
+
+ if (is_null($url)) {
+ $url = $this->view_url();
+ }
+
+ if (is_null($info)) {
+ $info = $this->id;
+ }
+
+ $logurl = $this->log_convert_url($url);
+ add_to_log($this->course->id, 'workshop', $action, $logurl, $info, $this->cm->id);
+ }
+
/**
* Are users allowed to create their submissions?
*
);
}
+ /**
+ * Converts absolute URL to relative URL needed by {@see add_to_log()}
+ *
+ * @param moodle_url $url absolute URL
+ * @return string
+ */
+ protected function log_convert_url(moodle_url $fullurl) {
+ static $baseurl;
+
+ if (!isset($baseurl)) {
+ $baseurl = new moodle_url('/mod/workshop/');
+ $baseurl = $baseurl->out();
+ }
+
+ return substr($fullurl->out(), strlen($baseurl));
+ }
}
////////////////////////////////////////////////////////////////////////////////
if ($id) { // submission is specified
$submission = $workshop->get_submission_by_id($id);
+ $workshop->log('view submission', $workshop->submission_url($submission->id), $submission->id);
+
} else { // no submission specified
if (!$submission = $workshop->get_submission_by_author($USER->id)) {
$submission = new stdclass();
}
if (is_null($submission->id)) {
$submission->id = $formdata->id = $DB->insert_record('workshop_submissions', $formdata);
- // todo add to log
+ $workshop->log('add submission', $workshop->submission_url($submission->id), $submission->id);
} else {
+ $workshop->log('update submission', $workshop->submission_url($submission->id), $submission->id);
if (empty($formdata->id) or empty($submission->id) or ($formdata->id != $submission->id)) {
throw new moodle_exception('err_submissionid', 'workshop');
}
require_once(dirname(__FILE__).'/locallib.php');
$cmid = required_param('cmid', PARAM_INT); // course module
-$phase = required_param('phase', PARAM_INT); // the code of the new page
+$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('workshop', $cmid, 0, false, MUST_EXIST);
if (!$workshop->switch_phase($phase)) {
print_error('errorswitchingphase', 'workshop', $workshop->view_url());
}
+ $workshop->log('update switch phase', $workshop->view_url(), $workshop->phase);
redirect($workshop->view_url());
}
switch ($tool) {
case 'clearaggregatedgrades':
require_capability('mod/workshop:overridegrades', $workshop->context);
- add_to_log($course->id, 'workshop', $tool, 'view.php?id=' . $cm->id, $workshop->name, $cm->id);
+ $workshop->log('update clear aggregated grades');
$workshop->clear_submission_grades();
$workshop->clear_grading_grades();
break;
case 'clearassessments':
require_capability('mod/workshop:overridegrades', $workshop->context);
- add_to_log($course->id, 'workshop', $tool, 'view.php?id=' . $cm->id, $workshop->name, $cm->id);
+ $workshop->log('update clear assessments');
$workshop->clear_assessments();
break;
}
defined('MOODLE_INTERNAL') || die();
-$module->version = 2010080300;
-$module->requires = 2010080300; // Requires this Moodle version
+$module->version = 2010102005;
+$module->requires = 2010101901; // Requires this Moodle version
//$module->cron = 60;