';
}
}
- // if we are requesting updated grades only, we are not interested in this user at all
+ // if we are requesting updated grades only, we are not interested in this user at all
if (!$gradeupdated && $this->updatedgradesonly) {
- continue;
+ continue;
}
echo '
';
- echo "
$user->firstname
$user->lastname
$user->idnumber
$user->institution
$user->department
$user->email
";
+ echo "
$user->firstname
$user->lastname
$user->idnumber
$user->institution
$user->department
$user->email
";
echo $rowstr;
echo "
";
-
+
$i++; // increment the counter
}
echo '';
@@ -340,7 +340,7 @@ class grade_export_update_buffer {
if (count($this->update_list) > $buffersize) {
$list = implode(',', $this->update_list);
- $sql = "UPDATE {$CFG->prefix}grade_grades SET exported = {$this->export_time} WHERE id IN ($list)";
+ $sql = "UPDATE {grade_grades} SET exported = {$this->export_time} WHERE id IN ($list)";
execute_sql($sql, false);
$this->update_list = array();
}
diff --git a/grade/import/csv/index.php b/grade/import/csv/index.php
index d6ae483833a..c5008632de6 100755
--- a/grade/import/csv/index.php
+++ b/grade/import/csv/index.php
@@ -152,7 +152,7 @@ if ($formdata = $mform->get_data()) {
$mform2->display();
//} else if (($formdata = data_submitted()) && !empty($formdata->map)) {
-
+
// else if grade import mapping form is submitted
} else if ($formdata = $mform2->get_data()) {
@@ -427,7 +427,7 @@ if ($formdata = $mform->get_data()) {
if ($status and !empty($newfeedbacks)) {
foreach ($newfeedbacks as $newfeedback) {
$sql = "SELECT *
- FROM {$CFG->prefix}grade_import_values
+ FROM {grade_import_values}
WHERE importcode=$importcode AND userid=$studentid AND itemid=$newfeedback->itemid AND importer={$USER->id}";
if ($feedback = get_record_sql($sql)) {
$newfeedback->id = $feedback->id;
diff --git a/grade/import/lib.php b/grade/import/lib.php
index dc55db553f7..261a532ef5f 100755
--- a/grade/import/lib.php
+++ b/grade/import/lib.php
@@ -59,7 +59,7 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
/// first select distinct new grade_items with this batch
if ($newitems = get_records_sql("SELECT *
- FROM {$CFG->prefix}grade_import_newitem
+ FROM {grade_import_newitem}
WHERE importcode = $importcode AND importer={$USER->id}")) {
// instances of the new grade_items created, cached
@@ -98,7 +98,7 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
/// then find all existing items
if ($gradeitems = get_records_sql("SELECT DISTINCT (itemid)
- FROM {$CFG->prefix}grade_import_values
+ FROM {grade_import_values}
WHERE importcode = $importcode AND importer={$USER->id} AND itemid > 0")) {
$modifieditems = array();
@@ -157,7 +157,7 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
/**
* This function returns an array of grades that were included in the import,
- * but wherer the user does not currenly have a graded role on the course. These gradse
+ * but wherer the user does not currenly have a graded role on the course. These gradse
* are still stored in the database, but will not be visible in the gradebook unless
* this user subsequently enrols on the course in a graded roles.
*
@@ -170,15 +170,15 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb
function get_unenrolled_users_in_import($importcode, $courseid) {
global $CFG;
$relatedctxcondition = get_related_contexts_string(get_context_instance(CONTEXT_COURSE, $courseid));
-
- $sql = "SELECT giv.id, u.firstname, u.lastname, u.idnumber AS useridnumber,
+
+ $sql = "SELECT giv.id, u.firstname, u.lastname, u.idnumber AS useridnumber,
COALESCE(gi.idnumber, gin.itemname) AS gradeidnumber
FROM
- {$CFG->prefix}grade_import_values giv
- JOIN {$CFG->prefix}user u ON giv.userid = u.id
- LEFT JOIN {$CFG->prefix}grade_items gi ON gi.id = giv.itemid
- LEFT JOIN {$CFG->prefix}grade_import_newitem gin ON gin.id = giv.newgradeitem
- LEFT JOIN {$CFG->prefix}role_assignments ra ON (giv.userid = ra.userid AND
+ {grade_import_values} giv
+ JOIN {user} u ON giv.userid = u.id
+ LEFT JOIN {grade_items} gi ON gi.id = giv.itemid
+ LEFT JOIN {grade_import_newitem} gin ON gin.id = giv.newgradeitem
+ LEFT JOIN {role_assignments} ra ON (giv.userid = ra.userid AND
ra.roleid IN ($CFG->gradebookroles) AND
ra.contextid $relatedctxcondition)
WHERE giv.importcode = $importcode
diff --git a/grade/lib.php b/grade/lib.php
index a4952a2986e..acf3188d3f4 100644
--- a/grade/lib.php
+++ b/grade/lib.php
@@ -30,16 +30,16 @@ require_once $CFG->libdir.'/gradelib.php';
* Returns detailed info about users and their grades.
*/
class graded_users_iterator {
- var $course;
- var $grade_items;
- var $groupid;
- var $users_rs;
- var $grades_rs;
- var $gradestack;
- var $sortfield1;
- var $sortorder1;
- var $sortfield2;
- var $sortorder2;
+ public $course;
+ public $grade_items;
+ public $groupid;
+ public $users_rs;
+ public $grades_rs;
+ public $gradestack;
+ public $sortfield1;
+ public $sortorder1;
+ public $sortfield2;
+ public $sortorder2;
/**
* Constructor
@@ -51,7 +51,7 @@ class graded_users_iterator {
* @param string $sortfield2 The second field of the users table by which the array of users will be sorted
* @param string $sortorder2 The order in which the second sorting field will be sorted (ASC or DESC)
*/
- function graded_users_iterator($course, $grade_items=null, $groupid=0, $sortfield1='lastname', $sortorder1='ASC', $sortfield2='firstname', $sortorder2='ASC') {
+ public function graded_users_iterator($course, $grade_items=null, $groupid=0, $sortfield1='lastname', $sortorder1='ASC', $sortfield2='firstname', $sortorder2='ASC') {
$this->course = $course;
$this->grade_items = $grade_items;
$this->groupid = $groupid;
@@ -67,8 +67,8 @@ class graded_users_iterator {
* Initialise the iterator
* @return boolean success
*/
- function init() {
- global $CFG;
+ public function init() {
+ global $CFG, $DB;
$this->close();
@@ -79,17 +79,15 @@ class graded_users_iterator {
return false;
}
- if (strpos($CFG->gradebookroles, ',') === false) {
- $gradebookroles = " = {$CFG->gradebookroles}";
- } else {
- $gradebookroles = " IN ({$CFG->gradebookroles})";
- }
+ list($gradebookroles_sql, $params) = $DB->get_in_or_equal(explode(',', $CFG->gradebookroles));
$relatedcontexts = get_related_contexts_string(get_context_instance(CONTEXT_COURSE, $this->course->id));
if ($this->groupid) {
- $groupsql = "INNER JOIN {$CFG->prefix}groups_members gm ON gm.userid = u.id";
- $groupwheresql = "AND gm.groupid = {$this->groupid}";
+ $groupsql = "INNER JOIN {groups_members} gm ON gm.userid = u.id";
+ $groupwheresql = "AND gm.groupid = ?";
+ // $params contents: gradebookroles
+ $params[] = $this->groupid;
} else {
$groupsql = "";
$groupwheresql = "";
@@ -114,32 +112,35 @@ class graded_users_iterator {
}
}
+ // $params contents: gradebookroles and groupid (for $groupwheresql)
$users_sql = "SELECT u.* $ofields
- FROM {$CFG->prefix}user u
- INNER JOIN {$CFG->prefix}role_assignments ra ON u.id = ra.userid
+ FROM {user} u
+ INNER JOIN {role_assignments} ra ON u.id = ra.userid
$groupsql
- WHERE ra.roleid $gradebookroles
+ WHERE ra.roleid $gradebookroles_sql;
AND ra.contextid $relatedcontexts
$groupwheresql
ORDER BY $order";
- $this->users_rs = get_recordset_sql($users_sql);
+ $this->users_rs = $DB->get_recordset_sql($users_sql, $params);
if (!empty($this->grade_items)) {
$itemids = array_keys($this->grade_items);
- $itemids = implode(',', $itemids);
+ list($itemidsql, $grades_params) = $DB->get_in_or_equal($itemids);
+ $params = array_merge($params, $grades_params);
+ // $params contents: gradebookroles, groupid (for $groupwheresql) and itemids
$grades_sql = "SELECT g.* $ofields
- FROM {$CFG->prefix}grade_grades g
- INNER JOIN {$CFG->prefix}user u ON g.userid = u.id
- INNER JOIN {$CFG->prefix}role_assignments ra ON u.id = ra.userid
+ FROM {grade_grades} g
+ INNER JOIN {user} u ON g.userid = u.id
+ INNER JOIN {role_assignments} ra ON u.id = ra.userid
$groupsql
- WHERE ra.roleid $gradebookroles
+ WHERE ra.roleid $gradebookroles_sql
AND ra.contextid $relatedcontexts
- AND g.itemid IN ($itemids)
$groupwheresql
+ AND g.itemid $itemidsql
ORDER BY $order, g.itemid ASC";
- $this->grades_rs = get_recordset_sql($grades_sql);
+ $this->grades_rs = $DB->get_recordset_sql($grades_sql, $params);
} else {
$this->grades_rs = false;
}
@@ -156,7 +157,7 @@ class graded_users_iterator {
return false; // no users present
}
- if (!$user = rs_fetch_next_record($this->users_rs)) {
+ if (!$user = $this->users_rs->next()) {
if ($current = $this->_pop()) {
// this is not good - user or grades updated between the two reads above :-(
}
@@ -213,11 +214,11 @@ class graded_users_iterator {
*/
function close() {
if ($this->users_rs) {
- rs_close($this->users_rs);
+ $this->users_rs->close();
$this->users_rs = null;
}
if ($this->grades_rs) {
- rs_close($this->grades_rs);
+ $this->grades_rs->close();
$this->grades_rs = null;
}
$this->gradestack = array();
@@ -234,12 +235,13 @@ class graded_users_iterator {
* Internal function
*/
function _pop() {
+ global $DB;
if (empty($this->gradestack)) {
if (!$this->grades_rs) {
return NULL; // no grades present
}
- if (!$grade = rs_fetch_next_record($this->grades_rs)) {
+ if (!$grade = $this->grades_rs->next()) {
return NULL; // no more grades
}
@@ -458,17 +460,17 @@ function print_grade_plugin_selector($courseid, $active_type, $active_plugin, $r
* Utility class used for return tracking when using edit and other forms in grade plugins
*/
class grade_plugin_return {
- var $type;
- var $plugin;
- var $courseid;
- var $userid;
- var $page;
+ public $type;
+ public $plugin;
+ public $courseid;
+ public $userid;
+ public $page;
/**
* Constructor
* @param array $params - associative array with return parameters, if null parameter are taken from _GET or _POST
*/
- function grade_plugin_return ($params=null) {
+ public function grade_plugin_return ($params=null) {
if (empty($params)) {
$this->type = optional_param('gpr_type', null, PARAM_SAFEDIR);
$this->plugin = optional_param('gpr_plugin', null, PARAM_SAFEDIR);
@@ -489,7 +491,7 @@ class grade_plugin_return {
* Returns return parameters as options array suitable for buttons.
* @return array options
*/
- function get_options() {
+ public function get_options() {
if (empty($this->type)) {
return array();
}
@@ -520,7 +522,7 @@ class grade_plugin_return {
* @param string $default default url when params not set
* @return string url
*/
- function get_return_url($default, $extras=null) {
+ public function get_return_url($default, $extras=null) {
global $CFG;
if (empty($this->type) or empty($this->plugin)) {
@@ -559,7 +561,7 @@ class grade_plugin_return {
* Returns string with hidden return tracking form elements.
* @return string
*/
- function get_form_fields() {
+ public function get_form_fields() {
if (empty($this->type)) {
return '';
}
@@ -588,7 +590,7 @@ class grade_plugin_return {
* @param object $mform moodle form object
* @return void
*/
- function add_mform_elements(&$mform) {
+ public function add_mform_elements(&$mform) {
if (empty($this->type)) {
return;
}
@@ -622,7 +624,7 @@ class grade_plugin_return {
* @param string $url
* @return string $url with erturn tracking params
*/
- function add_url_params($url) {
+ public function add_url_params($url) {
if (empty($this->type)) {
return $url;
}
@@ -760,14 +762,14 @@ function grade_build_nav($path, $pagename=null, $id=null) {
* General structure representing grade items in course
*/
class grade_structure {
- var $context;
+ public $context;
- var $courseid;
+ public $courseid;
/**
* 1D array of grade items only
*/
- var $items;
+ public $items;
/**
* Returns icon of element
@@ -775,7 +777,7 @@ class grade_structure {
* @param bool $spacerifnone return spacer if no icon found
* @return string icon or spacer
*/
- function get_element_icon(&$element, $spacerifnone=false) {
+ public function get_element_icon(&$element, $spacerifnone=false) {
global $CFG;
switch ($element['type']) {
@@ -832,7 +834,7 @@ class grade_structure {
* @param bool $spacerifnone return spacer if no icon found
* @return header string
*/
- function get_element_header(&$element, $withlink=false, $icon=true, $spacerifnone=false) {
+ public function get_element_header(&$element, $withlink=false, $icon=true, $spacerifnone=false) {
global $CFG;
$header = '';
@@ -874,7 +876,7 @@ class grade_structure {
* @param $grade_grade object
* @return string eid
*/
- function get_grade_eid($grade_grade) {
+ public function get_grade_eid($grade_grade) {
if (empty($grade_grade->id)) {
return 'n'.$grade_grade->itemid.'u'.$grade_grade->userid;
} else {
@@ -887,7 +889,7 @@ class grade_structure {
* @param $grade_item object
* @return string eid
*/
- function get_item_eid($grade_item) {
+ public function get_item_eid($grade_item) {
return 'i'.$grade_item->id;
}
@@ -922,7 +924,7 @@ class grade_structure {
* @param object $element
* @return string
*/
- function get_edit_icon($element, $gpr) {
+ public function get_edit_icon($element, $gpr) {
global $CFG;
if (!has_capability('moodle/grade:manage', $this->context)) {
@@ -999,7 +1001,7 @@ class grade_structure {
* @param object $element
* @return string
*/
- function get_hiding_icon($element, $gpr) {
+ public function get_hiding_icon($element, $gpr) {
global $CFG;
if (!has_capability('moodle/grade:manage', $this->context) and !has_capability('moodle/grade:hide', $this->context)) {
@@ -1038,19 +1040,19 @@ class grade_structure {
* @param object $element
* @return string
*/
- function get_locking_icon($element, $gpr) {
+ public function get_locking_icon($element, $gpr) {
global $CFG;
$strparams = $this->get_params_for_iconstr($element);
$strunlock = get_string('unlockverbose', 'grades', $strparams);
$strlock = get_string('lockverbose', 'grades', $strparams);
-
+
// Don't allow an unlocking action for a grade whose grade item is locked: just print a state icon
if ($element['type'] == 'grade' && $element['object']->grade_item->is_locked()) {
$strparamobj = new stdClass();
$strparamobj->itemname = $element['object']->grade_item->itemname;
$strnonunlockable = get_string('nonunlockableverbose', 'grades', $strparamobj);
- $action = '';
+ $action = '';
} elseif ($element['object']->is_locked()) {
$icon = 'unlock';
$tooltip = $strunlock;
@@ -1086,7 +1088,7 @@ class grade_structure {
* @param object $element
* @return string
*/
- function get_calculation_icon($element, $gpr) {
+ public function get_calculation_icon($element, $gpr) {
global $CFG;
if (!has_capability('moodle/grade:manage', $this->context)) {
return '';
@@ -1129,12 +1131,12 @@ class grade_seq extends grade_structure {
* A string of GET URL variables, namely courseid and sesskey, used in most URLs built by this class.
* @var string $commonvars
*/
- var $commonvars;
+ public $commonvars;
/**
* 1D array of elements
*/
- var $elements;
+ public $elements;
/**
* Constructor, retrieves and stores array of all grade_category and grade_item
@@ -1143,7 +1145,7 @@ class grade_seq extends grade_structure {
* @param boolean $category_grade_last category grade item is the last child
* @param array $collapsed array of collapsed categories
*/
- function grade_seq($courseid, $category_grade_last=false, $nooutcomes=false) {
+ public function grade_seq($courseid, $category_grade_last=false, $nooutcomes=false) {
global $USER, $CFG;
$this->courseid = $courseid;
@@ -1166,7 +1168,7 @@ class grade_seq extends grade_structure {
* @param array $element The seed of the recursion
* @return void
*/
- function flatten(&$element, $category_grade_last, $nooutcomes) {
+ public function flatten(&$element, $category_grade_last, $nooutcomes) {
if (empty($element['children'])) {
return array();
}
@@ -1204,7 +1206,7 @@ class grade_seq extends grade_structure {
* @param int $eid
* @return object element
*/
- function locate_element($eid) {
+ public function locate_element($eid) {
// it is a grade - construct a new object
if (strpos($eid, 'n') === 0) {
if (!preg_match('/n(\d+)u(\d+)/', $eid, $matches)) {
@@ -1261,23 +1263,23 @@ class grade_tree extends grade_structure {
* The basic representation of the tree as a hierarchical, 3-tiered array.
* @var object $top_element
*/
- var $top_element;
+ public $top_element;
/**
* A string of GET URL variables, namely courseid and sesskey, used in most URLs built by this class.
* @var string $commonvars
*/
- var $commonvars;
+ public $commonvars;
/**
* 2D array of grade items and categories
*/
- var $levels;
+ public $levels;
/**
* Grade items
*/
- var $items;
+ public $items;
/**
* Constructor, retrieves and stores a hierarchical array of all grade_category and grade_item
@@ -1287,7 +1289,7 @@ class grade_tree extends grade_structure {
* @param boolean $category_grade_last category grade item is the last child
* @param array $collapsed array of collapsed categories
*/
- function grade_tree($courseid, $fillers=true, $category_grade_last=false, $collapsed=null, $nooutcomes=false) {
+ public function grade_tree($courseid, $fillers=true, $category_grade_last=false, $collapsed=null, $nooutcomes=false) {
global $USER, $CFG;
$this->courseid = $courseid;
@@ -1331,7 +1333,7 @@ class grade_tree extends grade_structure {
* @param array $collapsed array of collapsed categories
* @return void
*/
- function category_collapse(&$element, $collapsed) {
+ public function category_collapse(&$element, $collapsed) {
if ($element['type'] != 'category') {
return;
}
@@ -1361,7 +1363,7 @@ class grade_tree extends grade_structure {
* @param array $element The seed of the recursion
* @return void
*/
- function no_outcomes(&$element) {
+ public function no_outcomes(&$element) {
if ($element['type'] != 'category') {
return;
}
@@ -1382,7 +1384,7 @@ class grade_tree extends grade_structure {
* @param array $element The seed of the recursion
* @return void
*/
- function category_grade_last(&$element) {
+ public function category_grade_last(&$element) {
if (empty($element['children'])) {
return;
}
@@ -1409,7 +1411,7 @@ class grade_tree extends grade_structure {
* @param int $depth
* @return void
*/
- function fill_levels(&$levels, &$element, $depth) {
+ public function fill_levels(&$levels, &$element, $depth) {
if (!array_key_exists($depth, $levels)) {
$levels[$depth] = array();
}
@@ -1442,7 +1444,7 @@ class grade_tree extends grade_structure {
/**
* Static recursive helper - makes full tree (all leafes are at the same level)
*/
- function inject_fillers(&$element, $depth) {
+ public function inject_fillers(&$element, $depth) {
$depth++;
if (empty($element['children'])) {
@@ -1482,7 +1484,7 @@ class grade_tree extends grade_structure {
/**
* Static recursive helper - add colspan information into categories
*/
- function inject_colspans(&$element) {
+ public function inject_colspans(&$element) {
if (empty($element['children'])) {
return 1;
}
@@ -1500,7 +1502,7 @@ class grade_tree extends grade_structure {
* @param int $eid
* @return object element
*/
- function locate_element($eid) {
+ public function locate_element($eid) {
// it is a grade - construct a new object
if (strpos($eid, 'n') === 0) {
if (!preg_match('/n(\d+)u(\d+)/', $eid, $matches)) {
@@ -1548,13 +1550,13 @@ class grade_tree extends grade_structure {
return null;
}
-
+
/**
* Returns a well-formed XML representation of the grade-tree using recursion.
* @param array $root The current element in the recursion. If null, starts at the top of the tree.
* @return string $xml
*/
- function exportToXML($root=null, $tabs="\t") {
+ public function exportToXML($root=null, $tabs="\t") {
$xml = null;
$first = false;
if (is_null($root)) {
@@ -1563,7 +1565,7 @@ class grade_tree extends grade_structure {
$xml .= "\n";
$first = true;
}
-
+
$type = 'undefined';
if (strpos($root['object']->table, 'grade_categories') !== false) {
$type = 'category';
@@ -1572,7 +1574,7 @@ class grade_tree extends grade_structure {
} elseif (strpos($root['object']->table, 'grade_outcomes') !== false) {
$type = 'outcome';
}
-
+
$xml .= "$tabs\n";
foreach ($root['object'] as $var => $value) {
if (!is_object($value) && !is_array($value) && !empty($value)) {
@@ -1587,16 +1589,16 @@ class grade_tree extends grade_structure {
}
$xml .= "$tabs\t\n";
}
-
+
$xml .= "$tabs\n";
if ($first) {
$xml .= "";
}
-
+
return $xml;
}
-
+
/**
* Returns a JSON representation of the grade-tree using recursion.
* @param array $root The current element in the recursion. If null, starts at the top of the tree.
@@ -1604,28 +1606,28 @@ class grade_tree extends grade_structure {
* @param int $switch The position (first or last) of the aggregations
* @return string $xml
*/
- function exportToJSON($root=null, $tabs="\t") {
+ public function exportToJSON($root=null, $tabs="\t") {
$json = null;
$first = false;
if (is_null($root)) {
$root = $this->top_element;
$first = true;
}
-
+
$name = '';
if (strpos($root['object']->table, 'grade_categories') !== false) {
$name = $root['object']->fullname;
if ($name == '?') {
- $name = $root['object']->get_name();
+ $name = $root['object']->get_name();
}
} elseif (strpos($root['object']->table, 'grade_items') !== false) {
$name = $root['object']->itemname;
} elseif (strpos($root['object']->table, 'grade_outcomes') !== false) {
$name = $root['object']->itemname;
}
-
+
$json .= "$tabs {\n";
$json .= "$tabs\t \"type\": \"{$root['type']}\",\n";
$json .= "$tabs\t \"name\": \"$name\",\n";
@@ -1635,9 +1637,9 @@ class grade_tree extends grade_structure {
$json .= "$tabs\t \"$var\": \"$value\",\n";
}
}
-
+
$json = substr($json, 0, strrpos($json, ','));
-
+
if (!empty($root['children'])) {
$json .= ",\n$tabs\t\"children\": [\n";
foreach ($root['children'] as $sortorder => $child) {
@@ -1645,16 +1647,32 @@ class grade_tree extends grade_structure {
}
$json = substr($json, 0, strrpos($json, ','));
$json .= "\n$tabs\t]\n";
- }
+ }
if ($first) {
$json .= "\n}";
} else {
$json .= "\n$tabs},\n";
}
-
+
return $json;
}
+
+ public function get_levels() {
+ return $this->levels;
+ }
+
+ public function get_items() {
+ return $this->items;
+ }
+
+ public function get_item($itemid) {
+ if (array_key_exists($itemid, $this->items)) {
+ return $this->items[$itemid];
+ } else {
+ return false;
+ }
+ }
}
?>
diff --git a/grade/querylib.php b/grade/querylib.php
index 2380aa86217..b035a597423 100644
--- a/grade/querylib.php
+++ b/grade/querylib.php
@@ -222,13 +222,14 @@ function grade_get_course_grade($userid, $courseid_or_ids=null) {
* @return mixed - array of grade item instances (one if $only_main_item true), false if error or not found
*/
function grade_get_grade_items_for_activity($cm, $only_main_item=false) {
- global $CFG;
+ global $CFG, $DB;
if (!isset($cm->modname)) {
- $cm = get_record_sql("SELECT cm.*, m.name, md.name as modname
- FROM {$CFG->prefix}course_modules cm,
- {$CFG->prefix}modules md,
- WHERE cm.id = {$cm->id} AND md.id = cm.module");
+ $params = array($cm->id);
+ $cm = $DB->get_record_sql("SELECT cm.*, m.name, md.name as modname
+ FROM {course_modules} cm,
+ {modules} md,
+ WHERE cm.id = ? AND md.id = cm.module", $params);
}
@@ -288,10 +289,10 @@ function grade_is_user_graded_in_activity($cm, $userid) {
* @return array $cm objects
*/
function grade_get_gradable_activities($courseid, $modulename='') {
- global $CFG;
+ global $CFG, $DB;
if (empty($modulename)) {
- if (!$modules = get_records('modules', 'visible', '1')) {
+ if (!$modules = $DB->get_records('modules', array('visible' => '1'))) {
return false;
}
$result = array();
@@ -307,18 +308,19 @@ function grade_get_gradable_activities($courseid, $modulename='') {
}
}
+ $params = array($courseid, $modulename, GRADE_TYPE_NONE, $modulename);
$sql = "SELECT cm.*, m.name, md.name as modname
- FROM {$CFG->prefix}grade_items gi, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules md, {$CFG->prefix}$modulename m
- WHERE gi.courseid = $courseid AND
+ FROM {grade_items} gi, {course_modules} cm, {modules} md, {$modulename} m
+ WHERE gi.courseid = ? AND
gi.itemtype = 'mod' AND
- gi.itemmodule = '$modulename' AND
+ gi.itemmodule = ? AND
gi.itemnumber = 0 AND
- gi.gradetype != ".GRADE_TYPE_NONE." AND
+ gi.gradetype != ? AND
gi.iteminstance = cm.instance AND
cm.instance = m.id AND
- md.name = '$modulename' AND
+ md.name = ? AND
md.id = cm.module";
- return get_records_sql($sql);
+ return $DB->get_records_sql($sql, $params);
}
-?>
\ No newline at end of file
+?>
diff --git a/grade/report/grader/ajax_callbacks.php b/grade/report/grader/ajax_callbacks.php
index affca2d8e69..60060f4922f 100644
--- a/grade/report/grader/ajax_callbacks.php
+++ b/grade/report/grader/ajax_callbacks.php
@@ -23,7 +23,7 @@
///////////////////////////////////////////////////////////////////////////
-require_once '../../../config.php';
+require_once '../../../config.php';
require_once $CFG->libdir.'/gradelib.php';
require_once $CFG->dirroot.'/grade/lib.php';
// require_once $CFG->dirroot.'/grade/report/grader/ajaxlib.php';
@@ -43,7 +43,7 @@ switch ($action) {
if (!$grade_item = grade_item::fetch(array('id'=>$itemid, 'courseid'=>$courseid))) { // we must verify course id here!
print_error('invalidgradeitmeid');
}
-
+
/**
* Code copied from grade/report/grader/lib.php line 187+
*/
@@ -83,7 +83,7 @@ switch ($action) {
$gradestr->itemname = $grade_item->get_name();
$json_object->message = get_string($errorstr, 'grades', $gradestr);
$json_object->result = "error";
-
+
}
$finalvalue = $finalgrade;
@@ -99,13 +99,13 @@ switch ($action) {
$finalvalue = $feedback;
}
-
+
if (!empty($json_object->result) && $json_object->result == 'error') {
echo json_encode($json_object);
die();
} else {
$json_object->gradevalue = $finalvalue;
-
+
if ($grade_item->update_final_grade($userid, $finalgrade, 'gradebook', $feedback, FORMAT_MOODLE)) {
$json_object->result = 'success';
$json_object->message = false;
@@ -115,10 +115,10 @@ switch ($action) {
echo json_encode();
die();
}
-
+
// Get row data
$sql = "SELECT gg.id, gi.id AS itemid, gi.scaleid AS scale, gg.userid AS userid, finalgrade, gg.overridden AS overridden "
- . "FROM {$CFG->prefix}grade_grades gg, {$CFG->prefix}grade_items gi WHERE "
+ . "FROM {grade_grades} gg, {grade_items} gi WHERE "
. "gi.courseid = $courseid AND gg.itemid = gi.id AND gg.userid = $userid";
$records = get_records_sql($sql);
$json_object->row = $records;
@@ -128,7 +128,7 @@ switch ($action) {
} else {
$json_object = new stdClass();
$json_object->result = "error";
- $json_object->message = "Missing parameter to ajax UPDATE callback: \n" .
+ $json_object->message = "Missing parameter to ajax UPDATE callback: \n" .
" userid: $userid,\n itemid: $itemid\n, type: $type\n, newvalue: $newvalue";
echo json_encode($json_object);
}
diff --git a/grade/report/grader/index.php b/grade/report/grader/index.php
index 0232337a0d8..c2bb6f028c3 100644
--- a/grade/report/grader/index.php
+++ b/grade/report/grader/index.php
@@ -42,7 +42,7 @@ $toggle = optional_param('toggle', NULL, PARAM_INT);
$toggle_type = optional_param('toggle_type', 0, PARAM_ALPHANUM);
/// basic access checks
-if (!$course = get_record('course', 'id', $courseid)) {
+if (!$course = $DB->get_record('course', array('id' => $courseid))) {
print_error('nocourseid');
}
require_login($course);
@@ -124,12 +124,12 @@ $report = new grade_report_grader($courseid, $gpr, $context, $page, $sortitemid)
// Initialise the grader report object
if (ajaxenabled() && $report->get_pref('enableajax')) {
require_once $CFG->dirroot.'/grade/report/grader/ajaxlib.php';
-
- require_js(array('yui_yahoo',
- 'yui_dom',
- 'yui_event',
- 'yui_json',
- 'yui_connection',
+
+ require_js(array('yui_yahoo',
+ 'yui_dom',
+ 'yui_event',
+ 'yui_json',
+ 'yui_connection',
'yui_dragdrop',
'yui_animation'));
@@ -219,7 +219,7 @@ echo $reporthtml;
// print submit button
if ($USER->gradeediting[$course->id] && ($report->get_pref('showquickfeedback')
- ||
+ ||
$report->get_pref('quickgrading')) && !$report->get_pref('enableajax')) {
echo '';
echo '';
diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php
index bfeaa9522e5..57ba70e2fd5 100644
--- a/grade/report/grader/lib.php
+++ b/grade/report/grader/lib.php
@@ -40,13 +40,13 @@ class grade_report_grader extends grade_report {
* The final grades.
* @var array $grades
*/
- var $grades;
+ public $grades;
/**
* Array of errors for bulk grades updating.
* @var array $gradeserror
*/
- var $gradeserror = array();
+ public $gradeserror = array();
//// SQL-RELATED
@@ -54,36 +54,42 @@ class grade_report_grader extends grade_report {
* The id of the grade_item by which this report will be sorted.
* @var int $sortitemid
*/
- var $sortitemid;
+ public $sortitemid;
/**
* Sortorder used in the SQL selections.
* @var int $sortorder
*/
- var $sortorder;
+ public $sortorder;
/**
* An SQL fragment affecting the search for users.
* @var string $userselect
*/
- var $userselect;
+ public $userselect;
+
+ /**
+ * The bound params for $userselect
+ * @var array $userselect_params
+ */
+ public $userselect_params = array();
/**
* List of collapsed categories from user preference
* @var array $collapsed
*/
- var $collapsed;
+ public $collapsed;
/**
* A count of the rows, used for css classes.
* @var int $rowcount
*/
- var $rowcount = 0;
+ public $rowcount = 0;
/**
* Capability check caching
* */
- var $canviewhidden;
+ public $canviewhidden;
/**
* Constructor. Sets local copies of user preferences and initialises grade_tree.
@@ -93,9 +99,9 @@ class grade_report_grader extends grade_report {
* @param int $page The current page being viewed (when report is paged)
* @param int $sortitemid The id of the grade_item by which to sort the table
*/
- function grade_report_grader($courseid, $gpr, $context, $page=null, $sortitemid=null) {
+ public function __construct($courseid, $gpr, $context, $page=null, $sortitemid=null) {
global $CFG;
- parent::grade_report($courseid, $gpr, $context, $page);
+ parent::__construct($courseid, $gpr, $context, $page);
$this->canviewhidden = has_capability('moodle/grade:viewhidden', get_context_instance(CONTEXT_COURSE, $this->course->id));
@@ -150,7 +156,7 @@ class grade_report_grader extends grade_report {
* @param array $data form submission (with magic quotes)
* @return array empty array if success, array of warnings if something fails.
*/
- function process_data($data) {
+ public function process_data($data) {
$warnings = array();
// always initialize all arrays
@@ -236,7 +242,7 @@ class grade_report_grader extends grade_report {
* all this should be in the new table class that we might need to use
* for displaying grades.
*/
- function setup_sortitemid() {
+ private function setup_sortitemid() {
global $SESSION;
@@ -251,7 +257,7 @@ class grade_report_grader extends grade_report {
// this is the first sort, i.e. by last name
if (!isset($SESSION->gradeuserreport->sortitemid)) {
if ($this->sortitemid == 'firstname' || $this->sortitemid == 'lastname') {
- $this->sortorder = $SESSION->gradeuserreport->sort = 'ASC';
+ $this->sortorder = $SESSION->gradeuserreport->sort = 'ASC';
} else {
$this->sortorder = $SESSION->gradeuserreport->sort = 'DESC';
}
@@ -295,18 +301,21 @@ class grade_report_grader extends grade_report {
* this is check for user roles because there could be some users with grades
* but not supposed to be displayed
*/
- function load_users() {
- global $CFG;
+ public function load_users() {
+ global $CFG, $DB;
+ $params = array();
+ list($usql, $gbr_params) = $DB->get_in_or_equal(explode(',', $this->gradebookroles));
if (is_numeric($this->sortitemid)) {
+ $params = array_merge(array($this->sortitemid), $gbr_params, $this->groupwheresql_params);
$sort = "g.finalgrade $this->sortorder";
$sql = "SELECT u.id, u.firstname, u.lastname, u.imagealt, u.picture, u.idnumber
- FROM {$CFG->prefix}grade_grades g RIGHT OUTER JOIN
- {$CFG->prefix}user u ON (u.id = g.userid AND g.itemid = $this->sortitemid)
- LEFT JOIN {$CFG->prefix}role_assignments ra ON u.id = ra.userid
+ FROM {grade_grades} g RIGHT OUTER JOIN
+ {user} u ON (u.id = g.userid AND g.itemid = ?)
+ LEFT JOIN {role_assignments} ra ON u.id = ra.userid
$this->groupsql
- WHERE ra.roleid in ($this->gradebookroles)
+ WHERE ra.roleid in $usql
$this->groupwheresql
AND ra.contextid ".get_related_contexts_string($this->context)."
ORDER BY $sort";
@@ -322,25 +331,27 @@ class grade_report_grader extends grade_report {
$sort = "u.idnumber $this->sortorder"; break;
}
+ $params = array_merge($gbr_params, $this->groupwheresql_params);
$sql = "SELECT u.id, u.firstname, u.lastname, u.imagealt, u.picture, u.idnumber
- FROM {$CFG->prefix}user u
- JOIN {$CFG->prefix}role_assignments ra ON u.id = ra.userid
+ FROM {user} u
+ JOIN {role_assignments} ra ON u.id = ra.userid
$this->groupsql
- WHERE ra.roleid in ($this->gradebookroles)
+ WHERE ra.roleid $usql
$this->groupwheresql
AND ra.contextid ".get_related_contexts_string($this->context)."
ORDER BY $sort";
}
- $this->users = get_records_sql($sql, $this->get_pref('studentsperpage') * $this->page,
- $this->get_pref('studentsperpage'));
+ $this->users = $DB->get_records_sql($sql, $params, $this->get_pref('studentsperpage') * $this->page, $this->get_pref('studentsperpage'));
if (empty($this->users)) {
$this->userselect = '';
$this->users = array();
} else {
- $this->userselect = 'AND g.userid in ('.implode(',', array_keys($this->users)).')';
+ list($usql, $params) = $DB->get_in_or_equal(array_keys($this->users));
+ $this->userselect = "AND g.userid $usql";
+ $this->userselect_params = $params;
}
return $this->users;
@@ -350,35 +361,36 @@ class grade_report_grader extends grade_report {
* we supply the userids in this query, and get all the grades
* pulls out all the grades, this does not need to worry about paging
*/
- function load_final_grades() {
- global $CFG;
+ public function load_final_grades() {
+ global $CFG, $DB;
// please note that we must fetch all grade_grades fields if we want to contruct grade_grade object from it!
+ $params = array_merge(array($this->courseid), $this->userselect_params);
$sql = "SELECT g.*
- FROM {$CFG->prefix}grade_items gi,
- {$CFG->prefix}grade_grades g
- WHERE g.itemid = gi.id AND gi.courseid = {$this->courseid} {$this->userselect}";
+ FROM {grade_items} gi,
+ {grade_grades} g
+ WHERE g.itemid = gi.id AND gi.courseid = ? {$this->userselect}";
$userids = array_keys($this->users);
- if ($grades = get_records_sql($sql)) {
+ if ($grades = $DB->get_records_sql($sql, $params)) {
foreach ($grades as $graderec) {
- if (in_array($graderec->userid, $userids) and array_key_exists($graderec->itemid, $this->gtree->items)) { // some items may not be present!!
+ if (in_array($graderec->userid, $userids) and array_key_exists($graderec->itemid, $this->gtree->get_items())) { // some items may not be present!!
$this->grades[$graderec->userid][$graderec->itemid] = new grade_grade($graderec, false);
- $this->grades[$graderec->userid][$graderec->itemid]->grade_item =& $this->gtree->items[$graderec->itemid]; // db caching
+ $this->grades[$graderec->userid][$graderec->itemid]->grade_item =& $this->gtree->get_item($graderec->itemid); // db caching
}
}
}
// prefil grades that do not exist yet
foreach ($userids as $userid) {
- foreach ($this->gtree->items as $itemid=>$unused) {
+ foreach ($this->gtree->get_items() as $itemid=>$unused) {
if (!isset($this->grades[$userid][$itemid])) {
$this->grades[$userid][$itemid] = new grade_grade();
$this->grades[$userid][$itemid]->itemid = $itemid;
$this->grades[$userid][$itemid]->userid = $userid;
- $this->grades[$userid][$itemid]->grade_item =& $this->gtree->items[$itemid]; // db caching
+ $this->grades[$userid][$itemid]->grade_item =& $this->gtree->get_item($itemid); // db caching
}
}
}
@@ -388,7 +400,7 @@ class grade_report_grader extends grade_report {
* Builds and returns a div with on/off toggles.
* @return string HTML code
*/
- function get_toggles_html() {
+ public function get_toggles_html() {
global $CFG, $USER;
$html = '
';
@@ -434,7 +446,7 @@ class grade_report_grader extends grade_report {
* @param bool $return Whether to return the HTML string rather than printing it
* @return void
*/
- function print_toggle($type, $return=false) {
+ public function print_toggle($type, $return=false) {
global $CFG;
$icons = array('eyecons' => 't/hide.gif',
@@ -488,7 +500,7 @@ class grade_report_grader extends grade_report {
* Builds and returns the HTML code for the headers.
* @return string $headerhtml
*/
- function get_headerhtml() {
+ public function get_headerhtml() {
global $CFG, $USER;
$strsortasc = $this->get_lang_string('sortasc', 'grades');
@@ -519,12 +531,12 @@ class grade_report_grader extends grade_report {
// Prepare Table Headers
$headerhtml = '';
- $numrows = count($this->gtree->levels);
+ $numrows = count($this->gtree->get_levels());
$columns_to_unset = array();
- foreach ($this->gtree->levels as $key=>$row) {
+ foreach ($this->gtree->get_levels() as $key=>$row) {
$columncount = 0;
if ($key == 0) {
// do not display course grade category
@@ -644,7 +656,7 @@ class grade_report_grader extends grade_report {
* Builds and return the HTML rows of the table (grades headed by student).
* @return string HTML
*/
- function get_studentshtml() {
+ public function get_studentshtml() {
global $CFG, $USER, $DB;
$studentshtml = '';
@@ -659,7 +671,7 @@ class grade_report_grader extends grade_report {
$scales_list = array();
$tabindices = array();
- foreach ($this->gtree->items as $item) {
+ foreach ($this->gtree->get_items() as $item) {
if (!empty($item->scaleid)) {
$scales_list[] = $item->scaleid;
}
@@ -673,7 +685,7 @@ class grade_report_grader extends grade_report {
if (!empty($scales_list)) {
$scales_array = $DB->get_records_list('scale', 'id', $scales_list);
}
-
+
$row_classes = array(' even ', ' odd ');
$row_classes = array(' even ', ' odd ');
@@ -684,7 +696,7 @@ class grade_report_grader extends grade_report {
$altered = array();
$unknown = array();
} else {
- $hiding_affected = grade_grade::get_hiding_affected($this->grades[$userid], $this->gtree->items);
+ $hiding_affected = grade_grade::get_hiding_affected($this->grades[$userid], $this->gtree->get_items());
$altered = $hiding_affected['altered'];
$unknown = $hiding_affected['unknown'];
unset($hiding_affected);
@@ -707,8 +719,8 @@ class grade_report_grader extends grade_report {
$user->idnumber.'';
}
- foreach ($this->gtree->items as $itemid=>$unused) {
- $item =& $this->gtree->items[$itemid];
+ foreach ($this->gtree->get_items() as $itemid=>$unused) {
+ $item =& $this->gtree->get_item($itemid);
$grade = $this->grades[$userid][$item->id];
// Get the decimal points preference for this item
@@ -769,7 +781,7 @@ class grade_report_grader extends grade_report {
$hidden = ' hidden ';
}
- $gradepass = ' gradefail ';
+ $gradepass = ' gradefail ';
if ($grade->is_passed($item)) {
$gradepass = ' gradepass ';
} elseif (is_null($grade->is_passed($item))) {
@@ -891,8 +903,8 @@ class grade_report_grader extends grade_report {
* @param bool $grouponly Whether to return only group averages or all averages.
* @return string HTML
*/
- function get_avghtml($grouponly=false) {
- global $CFG, $USER;
+ public function get_avghtml($grouponly=false) {
+ global $CFG, $USER, $DB;
if (!$this->canviewhidden) {
// totals might be affected by hiding, if user can not see hidden grades the aggregations might be altered
@@ -914,12 +926,14 @@ class grade_report_grader extends grade_report {
$showaverages = $this->currentgroup && $this->get_pref('showgroups');
$groupsql = $this->groupsql;
$groupwheresql = $this->groupwheresql;
+ $groupwheresql_params = $this->groupwheresql_params;
$avgcssclass = 'groupavg';
} else {
$straverage = get_string('overallaverage', 'grades');
$showaverages = $this->get_pref('showaverages');
$groupsql = "";
$groupwheresql = "";
+ $groupwheresql_params = array();
}
if ($shownumberofgrades) {
@@ -928,23 +942,26 @@ class grade_report_grader extends grade_report {
$totalcount = $this->get_numusers($grouponly);
+ list($usql, $roles_params) = $DB->get_in_or_equal(explode(',', $this->gradebookroles));
+
if ($showaverages) {
+ $params = array_merge(array($this->courseid), $roles_params, $groupwheresql_params);
// find sums of all grade items in course
$SQL = "SELECT g.itemid, SUM(g.finalgrade) AS sum
- FROM {$CFG->prefix}grade_items gi
- JOIN {$CFG->prefix}grade_grades g ON g.itemid = gi.id
- JOIN {$CFG->prefix}user u ON u.id = g.userid
- JOIN {$CFG->prefix}role_assignments ra ON ra.userid = u.id
+ FROM {grade_items} gi
+ JOIN {grade_grades} g ON g.itemid = gi.id
+ JOIN {user} u ON u.id = g.userid
+ JOIN {role_assignments} ra ON ra.userid = u.id
$groupsql
- WHERE gi.courseid = $this->courseid
- AND ra.roleid in ($this->gradebookroles)
+ WHERE gi.courseid = ?
+ AND ra.roleid $usql
AND ra.contextid ".get_related_contexts_string($this->context)."
AND g.finalgrade IS NOT NULL
$groupwheresql
GROUP BY g.itemid";
$sum_array = array();
- if ($sums = get_records_sql($SQL)) {
+ if ($sums = $DB->get_records_sql($SQL, $params)) {
foreach ($sums as $itemid => $csum) {
$sum_array[$itemid] = $csum->sum;
}
@@ -964,20 +981,21 @@ class grade_report_grader extends grade_report {
// MDL-10875 Empty grades must be evaluated as grademin, NOT always 0
// This query returns a count of ungraded grades (NULL finalgrade OR no matching record in grade_grades table)
+ $params = array_merge(array($this->courseid), $roles_params, $groupwheresql_params);
$SQL = "SELECT gi.id, COUNT(u.id) AS count
- FROM {$CFG->prefix}grade_items gi
- CROSS JOIN {$CFG->prefix}user u
- JOIN {$CFG->prefix}role_assignments ra ON ra.userid = u.id
- LEFT OUTER JOIN {$CFG->prefix}grade_grades g ON (g.itemid = gi.id AND g.userid = u.id AND g.finalgrade IS NOT NULL)
+ FROM {grade_items} gi
+ CROSS JOIN {user} u
+ JOIN {role_assignments} ra ON ra.userid = u.id
+ LEFT OUTER JOIN {grade_grades} g ON (g.itemid = gi.id AND g.userid = u.id AND g.finalgrade IS NOT NULL)
$groupsql
- WHERE gi.courseid = $this->courseid
- AND ra.roleid in ($this->gradebookroles)
+ WHERE gi.courseid = ?
+ AND ra.roleid $usql
AND ra.contextid ".get_related_contexts_string($this->context)."
AND g.id IS NULL
$groupwheresql
GROUP BY gi.id";
- $ungraded_counts = get_records_sql($SQL);
+ $ungraded_counts = $DB->get_records_sql($SQL, $params);
foreach ($this->gtree->items as $itemid=>$unused) {
$item =& $this->gtree->items[$itemid];
@@ -1049,7 +1067,7 @@ class grade_report_grader extends grade_report {
* Builds and return the HTML row of ranges for each column (i.e. range).
* @return string HTML
*/
- function get_rangehtml() {
+ public function get_rangehtml() {
global $USER;
$showuseridnumber = $this->get_pref('showuseridnumber');
@@ -1071,8 +1089,8 @@ class grade_report_grader extends grade_report {
$columncount++;
}
- foreach ($this->gtree->items as $itemid=>$unused) {
- $item =& $this->gtree->items[$itemid];
+ foreach ($this->gtree->get_items() as $itemid=>$unused) {
+ $item =& $this->gtree->get_item($itemid);
// Determine which display type to use for this average
if ($USER->gradeediting[$this->courseid]) {
@@ -1113,12 +1131,12 @@ class grade_report_grader extends grade_report {
}
return $scalehtml;
}
-
+
/**
* Builds and return the HTML row of ranges for each column (i.e. range).
* @return string HTML
*/
- function get_iconshtml() {
+ public function get_iconshtml() {
global $USER;
$iconshtml = '';
@@ -1133,10 +1151,10 @@ class grade_report_grader extends grade_report {
. '
'.$this->get_lang_string('controls','grades').'
';
$columncount = 1;
- foreach ($this->gtree->items as $itemid=>$unused) {
+ foreach ($this->gtree->get_items() as $itemid=>$unused) {
// emulate grade element
- $item =& $this->gtree->items[$itemid];
-
+ $item =& $this->gtree->get_item($itemid);
+
$eid = $this->gtree->get_item_eid($item);
$element = $this->gtree->locate_element($eid);
@@ -1155,7 +1173,7 @@ class grade_report_grader extends grade_report {
* @param object $object
* @return string HTML
*/
- function get_icons($element) {
+ protected function get_icons($element) {
global $CFG, $USER;
if (!$USER->gradeediting[$this->courseid]) {
@@ -1191,7 +1209,7 @@ class grade_report_grader extends grade_report {
* @param object $object
* @return string HTML
*/
- function get_collapsing_icon($element) {
+ protected function get_collapsing_icon($element) {
global $CFG;
$contract_expand_icon = '';
@@ -1223,7 +1241,7 @@ class grade_report_grader extends grade_report {
* @param string $action Which action to take (edit, delete etc...)
* @return
*/
- function process_action($target, $action) {
+ public function process_action($target, $action) {
// TODO: this code should be in some grade_tree static method
$targettype = substr($target, 0, 1);
$targetid = substr($target, 1);
diff --git a/grade/report/lib.php b/grade/report/lib.php
index c38fadf066c..8c189886730 100755
--- a/grade/report/lib.php
+++ b/grade/report/lib.php
@@ -34,18 +34,18 @@ require_once($CFG->libdir.'/gradelib.php');
* @abstract
* @package gradebook
*/
-class grade_report {
+abstract class grade_report {
/**
* The courseid.
* @var int $courseid
*/
- var $courseid;
+ public $courseid;
/**
* The course.
* @var object $course
*/
- var $course;
+ public $course;
/** Grade plugin return tracking object.
var $gpr;
@@ -54,49 +54,49 @@ class grade_report {
* The context.
* @var int $context
*/
- var $context;
+ public $context;
/**
* The grade_tree object.
* @var object $gtree
*/
- var $gtree;
+ public $gtree;
/**
* User preferences related to this report.
* @var array $prefs
*/
- var $prefs = array();
+ public $prefs = array();
/**
* The roles for this report.
* @var string $gradebookroles
*/
- var $gradebookroles;
+ public $gradebookroles;
/**
* base url for sorting by first/last name.
* @var string $baseurl
*/
- var $baseurl;
+ public $baseurl;
/**
* base url for paging.
* @var string $pbarurl
*/
- var $pbarurl;
+ public $pbarurl;
/**
* Current page (for paging).
* @var int $page
*/
- var $page;
+ public $page;
/**
* Array of cached language strings (using get_string() all the time takes a long time!).
* @var array $lang_strings
*/
- var $lang_strings = array();
+ public $lang_strings = array();
//// GROUP VARIABLES (including SQL)
@@ -104,25 +104,31 @@ class grade_report {
* The current group being displayed.
* @var int $currentgroup
*/
- var $currentgroup;
+ public $currentgroup;
/**
* A HTML select element used to select the current group.
* @var string $group_selector
*/
- var $group_selector;
+ public $group_selector;
/**
* An SQL fragment used to add linking information to the group tables.
* @var string $groupsql
*/
- var $groupsql;
+ protected $groupsql;
/**
* An SQL constraint to append to the queries used by this object to build the report.
* @var string $groupwheresql
*/
- var $groupwheresql;
+ protected $groupwheresql;
+
+ /**
+ * The ordered params for $groupwheresql
+ * @var array $groupwheresql_params
+ */
+ protected $groupwheresql_params = array();
/**
@@ -132,7 +138,7 @@ class grade_report {
* @param string $context
* @param int $page The current page being viewed (when report is paged)
*/
- function grade_report($courseid, $gpr, $context, $page=null) {
+ public function __construct($courseid, $gpr, $context, $page=null) {
global $CFG, $COURSE;
if (empty($CFG->gradebookroles)) {
@@ -167,7 +173,7 @@ class grade_report {
* @param int $objectid An optional itemid or categoryid to check for a more fine-grained preference
* @return mixed The value of the preference
*/
- function get_pref($pref, $objectid=null) {
+ public function get_pref($pref, $objectid=null) {
global $CFG;
$fullprefname = 'grade_report_' . $pref;
$shortprefname = 'grade_' . $pref;
@@ -180,7 +186,7 @@ class grade_report {
} elseif (isset($CFG->$fullprefname)) {
$retval = get_user_preferences($fullprefname, $CFG->$fullprefname);
} elseif (isset($CFG->$shortprefname)) {
- $retval = get_user_preferences($fullprefname, $CFG->$shortprefname);
+ $retval = get_user_preferences($fullprefname, $CFG->$shortprefname);
} else {
$retval = null;
}
@@ -215,7 +221,7 @@ class grade_report {
* @param int $itemid An optional itemid to which the preference will be assigned
* @return bool Success or failure.
*/
- function set_pref($pref, $pref_value='default', $itemid=null) {
+ public function set_pref($pref, $pref_value='default', $itemid=null) {
$fullprefname = 'grade_report_' . $pref;
if ($pref_value == 'default') {
return unset_user_preference($fullprefname.$itemid);
@@ -230,9 +236,7 @@ class grade_report {
* @param array $data
* @return mixed True or array of errors
*/
- function process_data($data) {
- // Implement in children classes
- }
+ abstract function process_data($data);
/**
* Processes a single action against a category, grade_item or grade.
@@ -240,9 +244,7 @@ class grade_report {
* @param string $action Which action to take (edit, delete etc...)
* @return
*/
- function process_action($target, $action) {
- //implement if needed
- }
+ abstract function process_action($target, $action);
/**
* First checks the cached language strings, then returns match if found, or uses get_string()
@@ -251,7 +253,7 @@ class grade_report {
* @param string $section Optional language section
* @return string
*/
- function get_lang_string($strcode, $section=null) {
+ public function get_lang_string($strcode, $section=null) {
if (empty($this->lang_strings[$strcode])) {
$this->lang_strings[$strcode] = get_string($strcode, $section);
}
@@ -263,31 +265,34 @@ class grade_report {
* @param boolean $groups include groups limit
* @return int Count of users
*/
- function get_numusers($groups=true) {
- global $CFG;
+ public function get_numusers($groups=true) {
+ global $CFG, $DB;
$groupsql = "";
$groupwheresql = "";
+ list($usql, $params) = $DB->get_in_or_equal(explode(',', $this->gradebookroles));
+
if ($groups) {
$groupsql = $this->groupsql;
$groupwheresql = $this->groupwheresql;
+ $params = array_merge($params, $this->groupwheresql_params);
}
$countsql = "SELECT COUNT(DISTINCT u.id)
- FROM {$CFG->prefix}grade_grades g RIGHT OUTER JOIN
- {$CFG->prefix}user u ON u.id = g.userid
- LEFT JOIN {$CFG->prefix}role_assignments ra ON u.id = ra.userid
+ FROM {grade_grades} g RIGHT OUTER JOIN
+ {user} u ON u.id = g.userid
+ LEFT JOIN {role_assignments} ra ON u.id = ra.userid
$groupsql
- WHERE ra.roleid in ($this->gradebookroles)
+ WHERE ra.roleid $usql
$groupwheresql
AND ra.contextid ".get_related_contexts_string($this->context);
- return count_records_sql($countsql);
+ return $DB->count_records_sql($countsql, $params);
}
/**
* Sets up this object's group variables, mainly to restrict the selection of users to display.
*/
- function setup_groups() {
+ private function setup_groups() {
global $CFG;
/// find out current groups mode
@@ -295,8 +300,9 @@ class grade_report {
$this->currentgroup = groups_get_course_group($this->course);
if ($this->currentgroup) {
- $this->groupsql = " LEFT JOIN {$CFG->prefix}groups_members gm ON gm.userid = u.id ";
- $this->groupwheresql = " AND gm.groupid = $this->currentgroup ";
+ $this->groupsql = " LEFT JOIN {groups_members} gm ON gm.userid = u.id ";
+ $this->groupwheresql = " AND gm.groupid = ? ";
+ $this->groupwheresql_params = array($this->currentgroup);
}
}
@@ -306,7 +312,7 @@ class grade_report {
* @param string $sort_link
* @param string HTML
*/
- function get_sort_arrow($direction='move', $sort_link=null) {
+ protected function get_sort_arrow($direction='move', $sort_link=null) {
$matrix = array('up' => 'asc', 'down' => 'desc', 'move' => 'desc');
$strsort = $this->get_lang_string('sort' . $matrix[$direction]);
$arrow = print_arrow($direction, $strsort, true);
diff --git a/grade/report/outcomes/index.php b/grade/report/outcomes/index.php
index aa7c2e4a55c..5601a48487d 100644
--- a/grade/report/outcomes/index.php
+++ b/grade/report/outcomes/index.php
@@ -64,7 +64,7 @@ foreach ($outcomes as $outcomeid => $outcome) {
if (is_array($report_info[$outcomeid]['items'])) {
foreach ($report_info[$outcomeid]['items'] as $itemid => $item) {
$sql = "SELECT itemid, AVG(finalgrade) AS avg, COUNT(finalgrade) AS count
- FROM {$CFG->prefix}grade_grades
+ FROM {grade_grades}
WHERE itemid = $itemid
GROUP BY itemid";
$info = get_records_sql($sql);
diff --git a/grade/report/overview/lib.php b/grade/report/overview/lib.php
index 27a3bebb88f..09c68a1a1ae 100644
--- a/grade/report/overview/lib.php
+++ b/grade/report/overview/lib.php
@@ -141,7 +141,7 @@ class grade_report_overview extends grade_report {
} else if (!is_null($finalgrade)) {
/// find the number of users with a higher grade
$sql = "SELECT COUNT(DISTINCT(userid))
- FROM {$CFG->prefix}grade_grades
+ FROM {grade_grades}
WHERE finalgrade IS NOT NULL AND finalgrade > $finalgrade
AND itemid = {$grade_item->id}";
$rank = count_records_sql($sql) + 1;
@@ -202,7 +202,7 @@ function grade_report_overview_settings_definition(&$mform) {
}
$mform->addElement('select', 'report_overview_showrank', get_string('showrank', 'grades'), $options);
- $mform->setHelpButton('report_overview_showrank', array('showrank', get_string('showrank', 'grades'), 'grade'));
+ $mform->setHelpButton('report_overview_showrank', array('showrank', get_string('showrank', 'grades'), 'grade'));
}
?>
diff --git a/grade/report/user/lib.php b/grade/report/user/lib.php
index 7ec335ec647..db2908a5b44 100644
--- a/grade/report/user/lib.php
+++ b/grade/report/user/lib.php
@@ -265,7 +265,7 @@ class grade_report_user extends grade_report {
} else {
/// find the number of users with a higher grade
$sql = "SELECT COUNT(DISTINCT(userid))
- FROM {$CFG->prefix}grade_grades
+ FROM {grade_grades}
WHERE finalgrade > {$grade_grade->finalgrade}
AND itemid = {$grade_item->id}";
$rank = count_records_sql($sql) + 1;
@@ -327,7 +327,7 @@ function grade_report_user_settings_definition(&$mform) {
}
$mform->addElement('select', 'report_user_showrank', get_string('showrank', 'grades'), $options);
- $mform->setHelpButton('report_user_showrank', array('showrank', get_string('showrank', 'grades'), 'grade'));
+ $mform->setHelpButton('report_user_showrank', array('showrank', get_string('showrank', 'grades'), 'grade'));
$options = array(-1 => get_string('default', 'grades'),
0 => get_string('hide'),
@@ -341,7 +341,7 @@ function grade_report_user_settings_definition(&$mform) {
}
$mform->addElement('select', 'report_user_showhiddenitems', get_string('showhiddenitems', 'grades'), $options);
- $mform->setHelpButton('report_user_showhiddenitems', array('showhiddenitems', get_string('showhiddenitems', 'grades'), 'grade'));
+ $mform->setHelpButton('report_user_showhiddenitems', array('showhiddenitems', get_string('showhiddenitems', 'grades'), 'grade'));
}
function grade_report_user_profilereport($course, $user) {
diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php
index 7480eab2388..a574803e652 100644
--- a/lib/dml/moodle_database.php
+++ b/lib/dml/moodle_database.php
@@ -1212,7 +1212,7 @@ abstract class moodle_database {
/**
* Returns SQL WHERE conditions
* @param array conditions - must not contain numeric indexes
- * @return array sql part and params
+ * @return array sql part and params
*/
public function where_clause(array $conditions=null) {
$allowed_types = $this->allowed_param_types();
diff --git a/lib/dml/moodle_recordset.php b/lib/dml/moodle_recordset.php
index e8c780d57e5..4c18fe532d6 100644
--- a/lib/dml/moodle_recordset.php
+++ b/lib/dml/moodle_recordset.php
@@ -1,10 +1,10 @@
close()".
*
@@ -47,4 +47,4 @@ abstract class moodle_recordset implements Iterator {
* @return void
*/
public abstract function close();
-}
\ No newline at end of file
+}
diff --git a/lib/grade/grade_object.php b/lib/grade/grade_object.php
index 3b6f2025688..3c2fe75b902 100644
--- a/lib/grade/grade_object.php
+++ b/lib/grade/grade_object.php
@@ -145,7 +145,7 @@ abstract class grade_object {
* @static final protected
* @return mixed array of object instances or false if not found
*/
- protected static function fetch_all_helper($table, $classname, $params) {
+ public static function fetch_all_helper($table, $classname, $params) {
$instance = new $classname();
$classvars = (array)$instance;
@@ -153,9 +153,6 @@ abstract class grade_object {
$wheresql = array();
- // remove incorrect params
- $params = array();
-
foreach ($params as $var=>$value) {
if (!in_array($var, $instance->required_fields) and !array_key_exists($var, $instance->optional_fields)) {
continue;