Permalink
Browse files

MDL-32203 completion: Fix issues with data object where clauses

  • Loading branch information...
1 parent eddceb6 commit 4ef74c4834b02b4d61674e631ab51de2ff018dea Aaron Barnes committed with Aaron Barnes Mar 27, 2012
View
@@ -103,44 +103,43 @@
// Handle aggregation methods
// Overall aggregation
- $aggregation = new completion_aggregation();
- $aggregation->course = $data->id;
- $aggregation->criteriatype = null;
+ $aggdata = array(
+ 'course' => $data->id,
+ 'criteriatype' => null
+ );
+ $aggregation = new completion_aggregation($aggdata);
$aggregation->setMethod($data->overall_aggregation);
- $aggregation->insert();
+ $aggregation->save();
// Activity aggregation
if (empty($data->activity_aggregation)) {
$data->activity_aggregation = 0;
}
- $aggregation = new completion_aggregation();
- $aggregation->course = $data->id;
- $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_ACTIVITY;
+ $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_ACTIVITY;
+ $aggregation = new completion_aggregation($aggdata);
$aggregation->setMethod($data->activity_aggregation);
- $aggregation->insert();
+ $aggregation->save();
// Course aggregation
if (empty($data->course_aggregation)) {
$data->course_aggregation = 0;
}
- $aggregation = new completion_aggregation();
- $aggregation->course = $data->id;
- $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_COURSE;
+ $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_COURSE;
+ $aggregation = new completion_aggregation($aggdata);
$aggregation->setMethod($data->course_aggregation);
- $aggregation->insert();
+ $aggregation->save();
// Role aggregation
if (empty($data->role_aggregation)) {
$data->role_aggregation = 0;
}
- $aggregation = new completion_aggregation();
- $aggregation->course = $data->id;
- $aggregation->criteriatype = COMPLETION_CRITERIA_TYPE_ROLE;
+ $aggdata['criteriatype'] = COMPLETION_CRITERIA_TYPE_ROLE;
+ $aggregation = new completion_aggregation($aggdata);
$aggregation->setMethod($data->role_aggregation);
- $aggregation->insert();
+ $aggregation->save();
// Update course total passing grade
if (!empty($data->criteria_grade)) {
@@ -152,7 +151,10 @@
}
}
- redirect($CFG->wwwroot."/course/view.php?id=$course->id", get_string('changessaved'));
+ add_to_log($course->id, 'course', 'completion updated', 'completion.php?id='.$course->id);
+
+ $url = new moodle_url('/course/view.php', array('id' => $course->id));
+ redirect($url);
}
@@ -1,5 +1,4 @@
<?php
-
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
@@ -19,65 +18,58 @@
/**
* Course completion critieria aggregation
*
- * @package moodlecore
+ * @package core_completion
+ * @category completion
* @copyright 2009 Catalyst IT Ltd
- * @author Aaron Barnes <aaronb@catalyst.net.nz>
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @author Aaron Barnes <aaronb@catalyst.net.nz>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
+
+defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir.'/completion/data_object.php');
/**
* Course completion critieria aggregation
+ *
+ * @package core_completion
+ * @category completion
+ * @copyright 2009 Catalyst IT Ltd
+ * @author Aaron Barnes <aaronb@catalyst.net.nz>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class completion_aggregation extends data_object {
- /**
- * DB Table
- * @var string $table
- */
+ /* @var string Database table name that stores completion aggregation information */
public $table = 'course_completion_aggr_methd';
/**
* Array of required table fields, must start with 'id'.
- * @var array $required_fields
+ * Defaults to id, course, criteriatype, method, value
+ * @var array
*/
public $required_fields = array('id', 'course', 'criteriatype', 'method', 'value');
- /**
- * Course id
- * @access public
- * @var int
- */
+ /* @var array Array of unique fields, used in where clauses */
+ public $unique_fields = array('course', 'criteriatype');
+
+ /* @var int Course id */
public $course;
- /**
- * Criteria type this aggregation method applies to, or NULL for overall course aggregation
- * @access public
- * @var int
- */
+ /* @var int Criteria type this aggregation method applies to, or NULL for overall course aggregation */
public $criteriatype;
- /**
- * Aggregation method (COMPLETION_AGGREGATION_* constant)
- * @access public
- * @var int
- */
+ /* @var int Aggregation method (COMPLETION_AGGREGATION_* constant) */
public $method;
- /**
- * Method value
- * @access public
- * @var mixed
- */
+ /* @var mixed Method value */
public $value;
/**
* Finds and returns a data_object instance based on params.
- * @static abstract
*
* @param array $params associative arrays varname=>value
- * @return object data_object instance or false if none found.
+ * @return data_object instance of data_object or false if none found.
*/
public static function fetch($params) {
return self::fetch_helper('course_completion_aggr_methd', __CLASS__, $params);
@@ -86,7 +78,6 @@ public static function fetch($params) {
/**
* Finds and returns all data_object instances based on params.
- * @static abstract
*
* @param array $params associative arrays varname=>value
* @return array array of data_object insatnces or false if none found.
@@ -95,9 +86,8 @@ public static function fetch_all($params) {}
/**
* Set the aggregation method
- * @access public
- * @param $method int
- * @return void
+ *
+ * @param int $method One of COMPLETION_AGGREGATION_ALL or COMPLETION_AGGREGATION_ANY
*/
public function setMethod($method) {
$methods = array(
@@ -111,4 +101,19 @@ public function setMethod($method) {
$this->method = COMPLETION_AGGREGATION_ALL;
}
}
+
+
+ /**
+ * Save aggregation method to database
+ *
+ * @access public
+ * @return boolean
+ */
+ public function save() {
+ if ($this->id) {
+ return $this->update();
+ } else {
+ return $this->insert();
+ }
+ }
}
Oops, something went wrong.

0 comments on commit 4ef74c4

Please sign in to comment.