MDL-24765 workshop logging features reviewed
authorDavid Mudrak <david.mudrak@gmail.com>
Wed, 20 Oct 2010 13:13:45 +0000 (13:13 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Wed, 20 Oct 2010 13:13:45 +0000 (13:13 +0000)
mod/workshop/aggregate.php
mod/workshop/assessment.php
mod/workshop/db/log.php
mod/workshop/exassessment.php
mod/workshop/exsubmission.php
mod/workshop/locallib.php
mod/workshop/submission.php
mod/workshop/switchphase.php
mod/workshop/toolbox.php
mod/workshop/version.php

index 97de926..0769bba 100644 (file)
@@ -56,6 +56,7 @@ if ($settingsform->is_cancelled()) {
     $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')));
 }
 
index 1e65f78..ea2a270 100644 (file)
@@ -120,6 +120,11 @@ if (is_null($assessment->grade) and !$assessmenteditable) {
     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));
index 968dee7..82627ed 100644 (file)
 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'),
+);
index 6875191..63abd3f 100644 (file)
@@ -70,6 +70,19 @@ $mform = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, $
 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
index 3f64d38..8ad3cc1 100644 (file)
@@ -49,6 +49,8 @@ $PAGE->set_url($workshop->exsubmission_url($id), array('edit' => $edit));
 
 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();
@@ -136,8 +138,9 @@ if ($edit and $canmanage) {
         $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');
             }
index 8e7a907..c3ecbc5 100644 (file)
@@ -1092,6 +1092,27 @@ class 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?
      *
@@ -1961,6 +1982,22 @@ class workshop {
         );
     }
 
+    /**
+     * 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));
+    }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
index e7d5ab8..51f7314 100644 (file)
@@ -47,6 +47,8 @@ $PAGE->set_url($workshop->submission_url(), array('cmid' => $cmid, 'id' => $id,
 
 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();
@@ -152,8 +154,9 @@ if ($edit) {
         }
         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');
             }
index e864e90..11512e5 100644 (file)
@@ -28,7 +28,7 @@ require_once(dirname(dirname(dirname(__FILE__))).'/config.php');
 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);
@@ -48,6 +48,7 @@ if ($confirm) {
     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());
 }
 
index d761187..a9f33d1 100644 (file)
@@ -41,14 +41,14 @@ require_sesskey();
 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;
 }
index 7bce7c8..0029e16 100644 (file)
@@ -29,6 +29,6 @@
 
 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;