From 5c75a0a3b4151702c7d1e0b35631eb09adfbfee3 Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Tue, 3 Jun 2008 16:10:57 +0000 Subject: [PATCH] MDL-14967 DB upgrades. All done. Just bug fixing now ;) --- grade/edit/letter/edit.php | 2 +- grade/edit/outcome/course.php | 2 +- grade/edit/outcome/index.php | 2 +- grade/edit/settings/index.php | 2 +- grade/edit/tree/calculation.php | 4 +- grade/edit/tree/category.php | 2 +- grade/edit/tree/category_form.php | 10 ++-- grade/edit/tree/grade.php | 6 +-- grade/edit/tree/grade_form.php | 8 +-- grade/edit/tree/index.php | 4 +- grade/edit/tree/item.php | 2 +- grade/edit/tree/item_form.php | 6 +-- grade/edit/tree/outcomeitem.php | 7 +-- grade/export/grade_export_form.php | 20 ++++---- grade/export/key.php | 12 ++--- grade/export/keymanager.php | 3 +- grade/export/lib.php | 67 ++++++++++++++------------ grade/export/ods/grade_export_ods.php | 2 +- grade/export/ods/index.php | 2 +- grade/export/txt/grade_export_txt.php | 14 +++--- grade/export/txt/index.php | 2 +- grade/export/xls/grade_export_xls.php | 4 +- grade/export/xls/index.php | 2 +- grade/export/xml/grade_export_xml.php | 12 ++--- grade/export/xml/index.php | 2 +- grade/import/csv/index.php | 26 +++++----- grade/import/key.php | 12 ++--- grade/import/keymanager.php | 3 +- grade/import/lib.php | 42 ++++++++-------- grade/import/xml/grade_import_form.php | 7 ++- grade/import/xml/index.php | 2 +- grade/import/xml/lib.php | 6 +-- grade/lib.php | 17 +++++-- grade/report/grader/ajax_callbacks.php | 6 +-- grade/report/grader/index.php | 2 +- grade/report/grader/lib.php | 3 +- grade/report/grader/preferences.php | 4 +- grade/report/index.php | 2 +- grade/report/lib.php | 4 +- grade/report/outcomes/index.php | 8 +-- grade/report/overview/index.php | 2 +- grade/report/overview/lib.php | 32 ++++++------ grade/report/user/index.php | 18 +++---- grade/report/user/lib.php | 32 ++++++------ grade/report/user/styles.php | 12 ++--- 45 files changed, 235 insertions(+), 204 deletions(-) diff --git a/grade/edit/letter/edit.php b/grade/edit/letter/edit.php index 5f9eac8e59..587ebe053e 100644 --- a/grade/edit/letter/edit.php +++ b/grade/edit/letter/edit.php @@ -80,7 +80,7 @@ $mform->set_data($data); if ($mform->is_cancelled()) { redirect($returnurl); -} else if ($data = $mform->get_data()) { +} else if ($data = $mform->get_data(false)) { if (!$admin and empty($data->override)) { $DB->delete_records('grade_letters', array('contextid' => $context->id)); redirect($returnurl); diff --git a/grade/edit/outcome/course.php b/grade/edit/outcome/course.php index e0870f3504..2c5173d25d 100644 --- a/grade/edit/outcome/course.php +++ b/grade/edit/outcome/course.php @@ -105,7 +105,7 @@ foreach ($standardoutcomes as $oid=>$outcome) { /// form processing -if ($data = data_submitted()) { +if ($data = data_submitted(false)) { require_capability('moodle/grade:manageoutcomes', $context); if (!empty($data->add) && !empty($data->addoutcomes)) { /// add all selected to course list diff --git a/grade/edit/outcome/index.php b/grade/edit/outcome/index.php index 3ce3632ac6..550cb16e00 100644 --- a/grade/edit/outcome/index.php +++ b/grade/edit/outcome/index.php @@ -56,7 +56,7 @@ $gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'outcome', 'cours require_once('import_outcomes_form.php'); $upload_form = new import_outcomes_form(); -if ($upload_form_data = $upload_form->get_data()) { +if ($upload_form_data = $upload_form->get_data(false)) { require_once('import.php'); exit(); } diff --git a/grade/edit/settings/index.php b/grade/edit/settings/index.php index c11c3c467c..f3532d0c1f 100644 --- a/grade/edit/settings/index.php +++ b/grade/edit/settings/index.php @@ -56,7 +56,7 @@ $mform->set_data($settings); if ($mform->is_cancelled()) { redirect($returnurl); -} else if ($data = $mform->get_data()) { +} else if ($data = $mform->get_data(false)) { $data = (array)$data; $general = array('displaytype', 'decimalpoints', 'aggregationposition'); foreach ($data as $key=>$value) { diff --git a/grade/edit/tree/calculation.php b/grade/edit/tree/calculation.php index 92366fa8c6..02ed33b6d7 100644 --- a/grade/edit/tree/calculation.php +++ b/grade/edit/tree/calculation.php @@ -33,7 +33,7 @@ $id = required_param('id', PARAM_INT); $section = optional_param('section', 'calculation', PARAM_ALPHA); $idnumbers = optional_param('idnumbers', null, PARAM_RAW); -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -51,7 +51,7 @@ if (!$grade_item = grade_item::fetch(array('id'=>$id, 'courseid'=>$course->id))) // activity items and items without grade can not have calculation if ($grade_item->is_external_item() or ($grade_item->gradetype != GRADE_TYPE_VALUE and $grade_item->gradetype != GRADE_TYPE_SCALE)) { - redirect($returnurl, get_string('errornocalculationallowed', 'grades')); + redirect($returnurl, get_string('errornocalculationallowed', 'grades')); } $mform = new edit_calculation_form(null, array('gpr'=>$gpr, 'itemid' => $grade_item->id)); diff --git a/grade/edit/tree/category.php b/grade/edit/tree/category.php index 4ababb02d9..d958317516 100644 --- a/grade/edit/tree/category.php +++ b/grade/edit/tree/category.php @@ -31,7 +31,7 @@ require_once 'category_form.php'; $courseid = required_param('courseid', PARAM_INT); $id = optional_param('id', 0, PARAM_INT); -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } diff --git a/grade/edit/tree/category_form.php b/grade/edit/tree/category_form.php index 7789be6141..2342ef7d1c 100644 --- a/grade/edit/tree/category_form.php +++ b/grade/edit/tree/category_form.php @@ -234,7 +234,7 @@ class edit_category_form extends moodleform { $mform->setHelpButton('aggregationcoef', array('aggregationcoef', get_string('aggregationcoef', 'grades'), 'grade'), true); } } - + } if ($grade_item->is_calculated()) { @@ -258,7 +258,7 @@ class edit_category_form extends moodleform { $mform->removeElement('aggregatesubcats'); } } - + // If it is a course category, remove the "required" rule from the "fullname" element if ($grade_category->is_course_category()) { unset($mform->_rules['fullname']); @@ -268,8 +268,8 @@ class edit_category_form extends moodleform { // If it is a course category and its fullname is ?, show an empty field if ($grade_category->is_course_category() && $mform->getElementValue('fullname') == '?') { - $mform->setDefault('fullname', ''); - } + $mform->setDefault('fullname', ''); + } } // no parent header for course category @@ -277,7 +277,7 @@ class edit_category_form extends moodleform { $mform->removeElement('headerparent'); } - } + } } ?> diff --git a/grade/edit/tree/grade.php b/grade/edit/tree/grade.php index 777ea98921..1e0e328b59 100644 --- a/grade/edit/tree/grade.php +++ b/grade/edit/tree/grade.php @@ -33,7 +33,7 @@ $id = optional_param('id', 0, PARAM_INT); $itemid = optional_param('itemid', 0, PARAM_INT); $userid = optional_param('userid', 0, PARAM_INT); -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -49,7 +49,7 @@ $returnurl = $gpr->get_return_url($CFG->wwwroot.'/grade/report.php?id='.$course- // security checks! if (!empty($id)) { - if (!$grade = get_record('grade_grades', 'id', $id)) { + if (!$grade = $DB->get_record('grade_grades', array('id' => $id))) { print_error('invalidgroupid'); } @@ -92,7 +92,7 @@ if (groups_get_course_groupmode($COURSE) == SEPARATEGROUPS and !has_capability(' $mform = new edit_grade_form(null, array('grade_item'=>$grade_item, 'gpr'=>$gpr)); -if ($grade = get_record('grade_grades', 'itemid', $grade_item->id, 'userid', $userid)) { +if ($grade = $DB->get_record('grade_grades', array('itemid' => $grade_item->id, 'userid' => $userid))) { // always clean existing feedback - grading should not have XSS risk if (can_use_html_editor()) { diff --git a/grade/edit/tree/grade_form.php b/grade/edit/tree/grade_form.php index 0d89d75d06..4726ccc3c1 100755 --- a/grade/edit/tree/grade_form.php +++ b/grade/edit/tree/grade_form.php @@ -28,7 +28,7 @@ require_once $CFG->libdir.'/formslib.php'; class edit_grade_form extends moodleform { function definition() { - global $CFG, $COURSE; + global $CFG, $COURSE, $DB; $mform =& $this->_form; @@ -60,7 +60,7 @@ class edit_grade_form extends moodleform { } $i = 1; - if ($scale = get_record('scale', 'id', $grade_item->scaleid)) { + if ($scale = $DB->get_record('scale', array('id' => $grade_item->scaleid))) { foreach (split(",", $scale->scale) as $option) { $scaleopt[$i] = $option; $i++; @@ -124,7 +124,7 @@ class edit_grade_form extends moodleform { } function definition_after_data() { - global $CFG, $COURSE; + global $CFG, $COURSE, $DB; $context = get_context_instance(CONTEXT_COURSE, $COURSE->id); @@ -133,7 +133,7 @@ class edit_grade_form extends moodleform { // fill in user name if user still exists $userid = $mform->getElementValue('userid'); - if ($user = get_record('user', 'id', $userid)) { + if ($user = $DB->get_record('user', array('id' => $userid))) { $username = ''.fullname($user).''; $user_el =& $mform->getElement('user'); $user_el->setValue($username); diff --git a/grade/edit/tree/index.php b/grade/edit/tree/index.php index a9a196ba1f..f3997f4c3e 100644 --- a/grade/edit/tree/index.php +++ b/grade/edit/tree/index.php @@ -34,7 +34,7 @@ $eid = optional_param('eid', 0, PARAM_ALPHANUM); /// Make sure they can even access this course -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -258,7 +258,7 @@ function element_deletable($element) { } $grade_item = $element['object']; - + if ($grade_item->itemtype != 'mod' or $grade_item->is_outcome_item() or $grade_item->gradetype == GRADE_TYPE_NONE) { return true; } diff --git a/grade/edit/tree/item.php b/grade/edit/tree/item.php index ce1bbc7aa6..9109eb5cab 100644 --- a/grade/edit/tree/item.php +++ b/grade/edit/tree/item.php @@ -31,7 +31,7 @@ require_once 'item_form.php'; $courseid = required_param('courseid', PARAM_INT); $id = optional_param('id', 0, PARAM_INT); -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } diff --git a/grade/edit/tree/item_form.php b/grade/edit/tree/item_form.php index 03da5e7252..8b203e1f12 100644 --- a/grade/edit/tree/item_form.php +++ b/grade/edit/tree/item_form.php @@ -26,10 +26,10 @@ require_once $CFG->libdir.'/formslib.php'; class edit_item_form extends moodleform { - var $displayoptions; + private $displayoptions; function definition() { - global $COURSE, $CFG; + global $COURSE, $CFG, $DB; $mform =& $this->_form; @@ -57,7 +57,7 @@ class edit_item_form extends moodleform { //$mform->disabledIf('calculation', 'gradetype', 'eq', GRADE_TYPE_NONE); $options = array(0=>get_string('usenoscale', 'grades')); - if ($scales = get_records('scale')) { + if ($scales = $DB->get_records('scale')) { foreach ($scales as $scale) { $options[$scale->id] = format_string($scale->name); } diff --git a/grade/edit/tree/outcomeitem.php b/grade/edit/tree/outcomeitem.php index 8a05a21cfd..9190b5a16a 100644 --- a/grade/edit/tree/outcomeitem.php +++ b/grade/edit/tree/outcomeitem.php @@ -31,7 +31,7 @@ require_once 'outcomeitem_form.php'; $courseid = required_param('courseid', PARAM_INT); $id = optional_param('id', 0, PARAM_INT); -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -139,9 +139,10 @@ if ($data = $mform->get_data(false)) { $grade_item->itemnumber = 0; } else { - $module = get_record_sql("SELECT cm.*, m.name as modname + $params = array($data->cmid); + $module = $DB->get_record_sql("SELECT cm.*, m.name as modname FROM {modules} m, {course_modules} cm - WHERE cm.id = {$data->cmid} AND cm.module = m.id "); + WHERE cm.id = ? AND cm.module = m.id ", $params); $grade_item->itemtype = 'mod'; $grade_item->itemmodule = $module->modname; $grade_item->iteminstance = $module->instance; diff --git a/grade/export/grade_export_form.php b/grade/export/grade_export_form.php index 1ab8da7999..20a2c92a30 100755 --- a/grade/export/grade_export_form.php +++ b/grade/export/grade_export_form.php @@ -27,7 +27,7 @@ require_once $CFG->libdir.'/formslib.php'; class grade_export_form extends moodleform { function definition() { - global $CFG, $COURSE, $USER; + global $CFG, $COURSE, $USER, $DB; $mform =& $this->_form; if (isset($this->_customdata)) { // hardcoding plugin names here is hacky @@ -42,8 +42,8 @@ class grade_export_form extends moodleform { $mform->setDefault('export_feedback', 0); $options = array('10'=>10, '20'=>20, '100'=>100, '1000'=>1000, '100000'=>100000); - $mform->addElement('select', 'previewrows', get_string('previewrows', 'grades'), $options); - + $mform->addElement('select', 'previewrows', get_string('previewrows', 'grades'), $options); + if (!empty($features['updategradesonly'])) { $mform->addElement('advcheckbox', 'updatedgradesonly', get_string('updatedgradesonly', 'grades')); } @@ -53,7 +53,7 @@ class grade_export_form extends moodleform { $options = array(GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'), GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'), GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')); - + /* foreach ($options as $key=>$option) { if ($key == $default_gradedisplaytype) { @@ -62,9 +62,9 @@ class grade_export_form extends moodleform { } } */ - $mform->addElement('select', 'display', get_string('gradeexportdisplaytype', 'grades'), $options); + $mform->addElement('select', 'display', get_string('gradeexportdisplaytype', 'grades'), $options); $mform->setDefault('display', $CFG->grade_export_displaytype); - + //$default_gradedecimals = $CFG->grade_export_decimalpoints; $options = array(0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5); $mform->addElement('select', 'decimals', get_string('gradeexportdecimalpoints', 'grades'), $options); @@ -87,7 +87,9 @@ class grade_export_form extends moodleform { if (!empty($CFG->gradepublishing) and !empty($features['publishing'])) { $mform->addElement('header', 'publishing', get_string('publishing', 'grades')); $options = array(get_string('nopublish', 'grades'), get_string('createnewkey', 'userkey')); - if ($keys = get_records_select('user_private_key', "script='grade/export' AND instance={$COURSE->id} AND userid={$USER->id}")) { + $keys = $DB->get_records_select('user_private_key', "script='grade/export' AND instance=? AND userid=?", + array($COURSE->id, $USER->id)); + if ($keys) { foreach ($keys as $key) { $options[$key->value] = $key->value; // TODO: add more details - ip restriction, valid until ?? } @@ -110,7 +112,7 @@ class grade_export_form extends moodleform { } $mform->addElement('header', 'gradeitems', get_string('gradeitemsinc', 'grades')); - + $switch = grade_get_setting($COURSE->id, 'aggregationposition', $CFG->grade_aggregationposition); // Grab the grade_seq for this course @@ -128,7 +130,7 @@ class grade_export_form extends moodleform { $needs_multiselect = true; } } - + if ($needs_multiselect) { $this->add_checkbox_controller(1, null, null, 1); // 1st argument is group name, 2nd is link text, 3rd is attributes and 4th is original value } diff --git a/grade/export/key.php b/grade/export/key.php index a01141ca9f..589fdedad0 100644 --- a/grade/export/key.php +++ b/grade/export/key.php @@ -33,7 +33,7 @@ $delete = optional_param('delete', 0, PARAM_BOOL); $confirm = optional_param('confirm', 0, PARAM_BOOL); if ($id) { - if (!$key = get_record('user_private_key', 'id', $id)) { + if (!$key = $DB->get_record('user_private_key', array('id' => $id))) { print_error('invalidgroupid'); } if (empty($courseid)) { @@ -43,12 +43,12 @@ if ($id) { print_error('invalidcourseid'); } - if (!$course = get_record('course', 'id', $courseid)) { + if (!$course = $DB->get_record('course', array('id'=>$id))) { print_error('invalidcourseid'); } } else { - if (!$course = get_record('course', 'id', $courseid)) { + if (!$course = $DB->get_record('course', array('id'=>$id))) { print_error('invalidcourseid'); } $key = new object(); @@ -77,7 +77,7 @@ if ($id and $delete) { die; } else if (confirm_sesskey()){ - delete_records('user_private_key', 'id', $id); + $DB->delete_records('user_private_key', array('id' => $id)); redirect('keymanager.php?id='.$course->id); } } @@ -89,14 +89,14 @@ $editform->set_data($key); if ($editform->is_cancelled()) { redirect($returnurl); -} elseif ($data = $editform->get_data()) { +} elseif ($data = $editform->get_data(false)) { if ($data->id) { $record = new object(); $record->id = $data->id; $record->iprestriction = $data->iprestriction; $record->validuntil = $data->validuntil; - update_record('user_private_key', $record); + $DB->update_record('user_private_key', $record); } else { create_user_key('grade/export', $USER->id, $course->id, $data->iprestriction, $data->validuntil); } diff --git a/grade/export/keymanager.php b/grade/export/keymanager.php index 2df23d41a4..b8af5d771d 100644 --- a/grade/export/keymanager.php +++ b/grade/export/keymanager.php @@ -47,7 +47,8 @@ $stredit = get_string('edit'); $strdelete = get_string('delete'); $data = array(); -if ($keys = get_records_select('user_private_key', "script='grade/export' AND instance={$course->id} AND userid={$USER->id}")) { +$keys = $DB->get_records_select('user_private_key', "script='grade/export' AND instance=? AND userid=?", array($course->id, $USER->id)); +if ($keys) { foreach($keys as $key) { $line = array(); $line[0] = format_string($key->value); diff --git a/grade/export/lib.php b/grade/export/lib.php index f48fa6c06a..c1cc30f51a 100755 --- a/grade/export/lib.php +++ b/grade/export/lib.php @@ -30,25 +30,26 @@ require_once($CFG->dirroot.'/grade/export/grade_export_form.php'); /** * Base export class */ -class grade_export { +abstract class grade_export { - var $plugin; // plgin name - must be filled in subclasses! + public $plugin; // plgin name - must be filled in subclasses! - var $grade_items; // list of all course grade items - var $groupid; // groupid, 0 means all groups - var $course; // course object - var $columns; // array of grade_items selected for export + public $grade_items; // list of all course grade items + public $groupid; // groupid, 0 means all groups + public $course; // course object + public $columns; // array of grade_items selected for export - var $previewrows; // number of rows in preview - var $export_letters; // export letters - var $export_feedback; // export feedback - var $userkey; // export using private user key + public $previewrows; // number of rows in preview + public $export_letters; // export letters + public $export_feedback; // export feedback + public $userkey; // export using private user key - var $updatedgradesonly; // only export updated grades - var $displaytype; // display type (e.g. real, percentages, letter) for exports - var $decimalpoints; // number of decimal points for exports + public $updatedgradesonly; // only export updated grades + public $displaytype; // display type (e.g. real, percentages, letter) for exports + public $decimalpoints; // number of decimal points for exports /** * Constructor should set up all the private variables ready to be pulled + * @access public * @param object $course * @param int $groupid id of selected group, 0 means all * @param string $itemlist comma separated list of item ids, empty means all @@ -56,7 +57,7 @@ class grade_export { * @param boolean $export_letters * @note Exporting as letters will lead to data loss if that exported set it re-imported. */ - function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $updatedgradesonly = false, $displaytype = GRADE_DISPLAY_TYPE_REAL, $decimalpoints = 2) { + public function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $updatedgradesonly = false, $displaytype = GRADE_DISPLAY_TYPE_REAL, $decimalpoints = 2) { $this->course = $course; $this->groupid = $groupid; $this->grade_items = grade_item::fetch_all(array('courseid'=>$this->course->id)); @@ -131,7 +132,7 @@ class grade_export { * Update exported field in grade_grades table * @return boolean */ - function track_exports() { + public function track_exports() { global $CFG; /// Whether this plugin is entitled to update export time @@ -151,7 +152,7 @@ class grade_export { * @param $object $grade instance of grade_grade class * @return string */ - function format_grade($grade) { + public function format_grade($grade) { return grade_format_gradevalue($grade->finalgrade, $this->grade_items[$grade->itemid], false, $this->displaytype, $this->decimalpoints); } @@ -161,7 +162,7 @@ class grade_export { * @param boolena $feedback feedback colum * &return string */ - function format_column_name($grade_item, $feedback=false) { + public function format_column_name($grade_item, $feedback=false) { if ($grade_item->itemtype == 'mod') { $name = get_string('modulename', $grade_item->itemmodule).': '.$grade_item->get_name(); } else { @@ -180,19 +181,19 @@ class grade_export { * @param object $feedback object with properties feedback and feedbackformat * @return string */ - function format_feedback($feedback) { + public function format_feedback($feedback) { return strip_tags(format_text($feedback->feedback, $feedback->feedbackformat)); } /** * Implemented by child class */ - function print_grades() { } + public abstract function print_grades(); /** * Prints preview of exported grades on screen as a feedback mechanism */ - function display_preview() { + public function display_preview() { print_heading(get_string('previewrows', 'grades')); @@ -270,7 +271,7 @@ class grade_export { * Returns array of parameters used by dump.php and export.php. * @return array */ - function get_export_params() { + public function get_export_params() { $itemids = array_keys($this->columns); $params = array('id' =>$this->course->id, @@ -290,7 +291,7 @@ class grade_export { * or prints the URL for the published data. * @return void */ - function print_continue() { + public function print_continue() { global $CFG; $params = $this->get_export_params(); @@ -324,24 +325,26 @@ class grade_export { * It does internal buffering to speedup the db operations. */ class grade_export_update_buffer { - var $update_list; - var $export_time; + public $update_list; + public $export_time; /** * Constructor - creates the buffer and initialises the time stamp */ - function grade_export_update_buffer() { + public function grade_export_update_buffer() { $this->update_list = array(); $this->export_time = time(); } - function flush($buffersize) { - global $CFG; + public function flush($buffersize) { + global $CFG, $DB; if (count($this->update_list) > $buffersize) { - $list = implode(',', $this->update_list); - $sql = "UPDATE {grade_grades} SET exported = {$this->export_time} WHERE id IN ($list)"; - execute_sql($sql, false); + list($usql, $params) = $DB->get_in_or_equal($this->update_list); + $params = array_merge(array($this->export_time), $params); + + $sql = "UPDATE {grade_grades} SET exported = ? WHERE id $usql"; + $DB->execute_sql($sql, $params, false); $this->update_list = array(); } } @@ -351,7 +354,7 @@ class grade_export_update_buffer { * @param object $grade_grade * @return string $status (unknow, new, regrade, nochange) */ - function track($grade_grade) { + public function track($grade_grade) { if (empty($grade_grade->exported) or empty($grade_grade->timemodified)) { if (is_null($grade_grade->finalgrade)) { @@ -382,7 +385,7 @@ class grade_export_update_buffer { /** * Flush and close the buffer. */ - function close() { + public function close() { $this->flush(0); } } diff --git a/grade/export/ods/grade_export_ods.php b/grade/export/ods/grade_export_ods.php index 2fd11f7632..30502fd3b0 100755 --- a/grade/export/ods/grade_export_ods.php +++ b/grade/export/ods/grade_export_ods.php @@ -26,7 +26,7 @@ require_once($CFG->dirroot.'/grade/export/lib.php'); class grade_export_ods extends grade_export { - var $plugin = 'ods'; + public $plugin = 'ods'; /** * To be implemented by child classes diff --git a/grade/export/ods/index.php b/grade/export/ods/index.php index faf484ac4a..3916448626 100755 --- a/grade/export/ods/index.php +++ b/grade/export/ods/index.php @@ -54,7 +54,7 @@ if (!empty($CFG->gradepublishing)) { $mform = new grade_export_form(null, array('publishing' => true)); // process post information -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { $export = new grade_export_ods($course, groups_get_course_group($course), '', false, false, $data->display, $data->decimals); // print the grades on screen for feedbacks diff --git a/grade/export/txt/grade_export_txt.php b/grade/export/txt/grade_export_txt.php index 29dcdcc4e0..c38e1f28e2 100755 --- a/grade/export/txt/grade_export_txt.php +++ b/grade/export/txt/grade_export_txt.php @@ -26,29 +26,29 @@ require_once($CFG->dirroot.'/grade/export/lib.php'); class grade_export_txt extends grade_export { - var $plugin = 'txt'; + public $plugin = 'txt'; - var $separator; // default separator + public $separator; // default separator - function grade_export_txt($course, $groupid=0, $itemlist='', $export_feedback=false, $updatedgradesonly = false, $displaytype = GRADE_DISPLAY_TYPE_REAL, $decimalpoints = 2, $separator='comma') { + public function grade_export_txt($course, $groupid=0, $itemlist='', $export_feedback=false, $updatedgradesonly = false, $displaytype = GRADE_DISPLAY_TYPE_REAL, $decimalpoints = 2, $separator='comma') { $this->grade_export($course, $groupid, $itemlist, $export_feedback, $updatedgradesonly, $displaytype, $decimalpoints); $this->separator = $separator; } - function process_form($formdata) { - parent::process_form($formdata); + public function __construct($formdata) { + parent::__construct($formdata); if (isset($formdata->separator)) { $this->separator = $formdata->separator; } } - function get_export_params() { + public function get_export_params() { $params = parent::get_export_params(); $params['separator'] = $this->separator; return $params; } - function print_grades() { + public function print_grades() { global $CFG; $export_tracking = $this->track_exports(); diff --git a/grade/export/txt/index.php b/grade/export/txt/index.php index ea78755adc..665b953502 100755 --- a/grade/export/txt/index.php +++ b/grade/export/txt/index.php @@ -54,7 +54,7 @@ if (!empty($CFG->gradepublishing)) { $mform = new grade_export_form(null, array('includeseparator'=>true, 'publishing' => true)); // process post information -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { $export = new grade_export_txt($course, groups_get_course_group($course), '', false, false, $data->display, $data->decimals); // print the grades on screen for feedback diff --git a/grade/export/xls/grade_export_xls.php b/grade/export/xls/grade_export_xls.php index 2f473d3e75..22d62a0cae 100755 --- a/grade/export/xls/grade_export_xls.php +++ b/grade/export/xls/grade_export_xls.php @@ -27,12 +27,12 @@ require_once($CFG->dirroot.'/grade/export/lib.php'); class grade_export_xls extends grade_export { - var $plugin = 'xls'; + public $plugin = 'xls'; /** * To be implemented by child classes */ - function print_grades() { + public function print_grades() { global $CFG; require_once($CFG->dirroot.'/lib/excellib.class.php'); diff --git a/grade/export/xls/index.php b/grade/export/xls/index.php index b2d6eaf916..e187f534ef 100755 --- a/grade/export/xls/index.php +++ b/grade/export/xls/index.php @@ -54,7 +54,7 @@ if (!empty($CFG->gradepublishing)) { $mform = new grade_export_form(null, array('publishing' => true)); // process post information -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { $export = new grade_export_xls($course, groups_get_course_group($course), '', false, false, $data->display, $data->decimals); // print the grades on screen for feedbacks diff --git a/grade/export/xml/grade_export_xml.php b/grade/export/xml/grade_export_xml.php index e2552bac46..4e64f164f6 100755 --- a/grade/export/xml/grade_export_xml.php +++ b/grade/export/xml/grade_export_xml.php @@ -27,16 +27,16 @@ require_once($CFG->dirroot.'/grade/export/lib.php'); class grade_export_xml extends grade_export { - var $plugin = 'xml'; - var $updatedgradesonly = false; // default to export ALL grades - + public $plugin = 'xml'; + public $updatedgradesonly = false; // default to export ALL grades + /** * To be implemented by child classes * @param boolean $feedback * @param boolean $publish Whether to output directly, or send as a file * @return string */ - function print_grades($feedback = false) { + public function print_grades($feedback = false) { global $CFG; require_once($CFG->libdir.'/filelib.php'); @@ -75,12 +75,12 @@ class grade_export_xml extends grade_export { $grade_item = $this->grade_items[$itemid]; $grade->grade_item =& $grade_item; $gradestr = $this->format_grade($grade); // no formating for now - + // MDL-11669, skip exported grades or bad grades (if setting says so) if ($export_tracking) { $status = $geub->track($grade); if ($this->updatedgradesonly && ($status == 'nochange' || $status == 'unknown')) { - continue; + continue; } } diff --git a/grade/export/xml/index.php b/grade/export/xml/index.php index 8b8dae34a2..6b9fff641f 100755 --- a/grade/export/xml/index.php +++ b/grade/export/xml/index.php @@ -54,7 +54,7 @@ if (!empty($CFG->gradepublishing)) { $mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing'=>true, 'updategradesonly'=>true)); // process post information -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { $export = new grade_export_xml($course, groups_get_course_group($course), '', false, $data->updatedgradesonly, $data->display, $data->decimals); // print the grades on screen for feedbacks diff --git a/grade/import/csv/index.php b/grade/import/csv/index.php index c5008632de..c4ea5c502d 100755 --- a/grade/import/csv/index.php +++ b/grade/import/csv/index.php @@ -89,7 +89,7 @@ if ($importcode = optional_param('importcode', '', PARAM_FILE)) { $mform2 = new grade_import_mapping_form(null, array('gradeitems'=>$gradeitems, 'header'=>$header)); // if import form is submitted -if ($formdata = $mform->get_data()) { +if ($formdata = $mform->get_data(false)) { // Large files are likely to take their time and memory. Let PHP know // that we'll take longer, and that the process should be recycled soon @@ -151,10 +151,10 @@ if ($formdata = $mform->get_data()) { $mform2->set_data(array('importcode'=>$importcode, 'id'=>$id)); $mform2->display(); -//} else if (($formdata = data_submitted()) && !empty($formdata->map)) { +//} else if (($formdata = data_submitted(false)) && !empty($formdata->map)) { // else if grade import mapping form is submitted -} else if ($formdata = $mform2->get_data()) { +} else if ($formdata = $mform2->get_data(false)) { $importcode = clean_param($formdata->importcode, PARAM_FILE); $filename = $CFG->dataroot.'/temp/gradeimport/cvs/'.$USER->id.'/'.$importcode; @@ -255,7 +255,7 @@ if ($formdata = $mform->get_data()) { switch ($t0) { case 'userid': // - if (!$user = get_record('user','id', addslashes($value))) { + if (!$user = $DB->get_record('user', array('id' => $value))) { // user not found, abort whold import import_cleanup($importcode); notify("user mapping error, could not find user with id \"$value\""); @@ -265,7 +265,7 @@ if ($formdata = $mform->get_data()) { $studentid = $value; break; case 'useridnumber': - if (!$user = get_record('user', 'idnumber', addslashes($value))) { + if (!$user = $DB->get_record('user', array('idnumber' => $value))) { // user not found, abort whold import import_cleanup($importcode); notify("user mapping error, could not find user with idnumber \"$value\""); @@ -275,7 +275,7 @@ if ($formdata = $mform->get_data()) { $studentid = $user->id; break; case 'useremail': - if (!$user = get_record('user', 'email', addslashes($value))) { + if (!$user = $DB->get_record('user', array('email' => $value))) { import_cleanup($importcode); notify("user mapping error, could not find user with email address \"$value\""); $status = false; @@ -284,7 +284,7 @@ if ($formdata = $mform->get_data()) { $studentid = $user->id; break; case 'username': - if (!$user = get_record('user', 'username', addslashes($value))) { + if (!$user = $DB->get_record('user', array('username' => $value))) { import_cleanup($importcode); notify("user mapping error, could not find user with username \"$value\""); $status = false; @@ -303,7 +303,7 @@ if ($formdata = $mform->get_data()) { $newgradeitem->importer = $USER->id; // failed to insert into new grade item buffer - if (!$newgradeitems[$key] = insert_record('grade_import_newitem', addslashes_recursive($newgradeitem))) { + if (!$newgradeitems[$key] = $DB->insert_record('grade_import_newitem', $newgradeitem)) { $status = false; import_cleanup($importcode); notify(get_string('importfailed', 'grades')); @@ -413,7 +413,7 @@ if ($formdata = $mform->get_data()) { $newgrade->importcode = $importcode; $newgrade->userid = $studentid; $newgrade->importer = $USER->id; - if (!insert_record('grade_import_values', addslashes_recursive($newgrade))) { + if (!$DB->insert_record('grade_import_values', $newgrade)) { // could not insert into temporary table $status = false; import_cleanup($importcode); @@ -428,17 +428,17 @@ if ($formdata = $mform->get_data()) { foreach ($newfeedbacks as $newfeedback) { $sql = "SELECT * FROM {grade_import_values} - WHERE importcode=$importcode AND userid=$studentid AND itemid=$newfeedback->itemid AND importer={$USER->id}"; - if ($feedback = get_record_sql($sql)) { + WHERE importcode=? AND userid=? AND itemid=? AND importer=?"; + if ($feedback = $DB->get_record_sql($sql, array($importcode, $studentid, $newfeedback->itemid, $USER->id))) { $newfeedback->id = $feedback->id; - update_record('grade_import_values', addslashes_recursive($newfeedback)); + $DB->update_record('grade_import_values', $newfeedback); } else { // the grade item for this is not updated $newfeedback->importcode = $importcode; $newfeedback->userid = $studentid; $newfeedback->importer = $USER->id; - insert_record('grade_import_values', addslashes_recursive($newfeedback)); + $DB->insert_record('grade_import_values', $newfeedback); } } } diff --git a/grade/import/key.php b/grade/import/key.php index ef35bd0279..73c78d4fd9 100644 --- a/grade/import/key.php +++ b/grade/import/key.php @@ -33,7 +33,7 @@ $delete = optional_param('delete', 0, PARAM_BOOL); $confirm = optional_param('confirm', 0, PARAM_BOOL); if ($id) { - if (!$key = get_record('user_private_key', 'id', $id)) { + if (!$key = $DB->get_record('user_private_key', array('id' => $id))) { print_error('invalidgroupid'); } if (empty($courseid)) { @@ -43,12 +43,12 @@ if ($id) { print_error('invalidcourseid'); } - if (!$course = get_record('course', 'id', $courseid)) { + if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('invalidcourseid'); } } else { - if (!$course = get_record('course', 'id', $courseid)) { + if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('invalidcourseid'); } $key = new object(); @@ -77,7 +77,7 @@ if ($id and $delete) { die; } else if (confirm_sesskey()){ - delete_records('user_private_key', 'id', $id); + $DB->delete_records('user_private_key', array('id' => $id)); redirect('keymanager.php?id='.$course->id); } } @@ -89,14 +89,14 @@ $editform->set_data($key); if ($editform->is_cancelled()) { redirect($returnurl); -} elseif ($data = $editform->get_data()) { +} elseif ($data = $editform->get_data(false)) { if ($data->id) { $record = new object(); $record->id = $data->id; $record->iprestriction = $data->iprestriction; $record->validuntil = $data->validuntil; - update_record('user_private_key', $record); + $DB->update_record('user_private_key', $record); } else { create_user_key('grade/import', $USER->id, $course->id, $data->iprestriction, $data->validuntil); } diff --git a/grade/import/keymanager.php b/grade/import/keymanager.php index e5220a6eec..0a23b94555 100644 --- a/grade/import/keymanager.php +++ b/grade/import/keymanager.php @@ -47,7 +47,8 @@ $stredit = get_string('edit'); $strdelete = get_string('delete'); $data = array(); -if ($keys = get_records_select('user_private_key', "script='grade/import' AND instance={$course->id} AND userid={$USER->id}")) { +$params = array($course->id, $USER->id); +if ($keys = $DB->get_records_select('user_private_key', "script='grade/import' AND instance=? AND userid=?"), $params) { foreach($keys as $key) { $line = array(); $line[0] = format_string($key->value); diff --git a/grade/import/lib.php b/grade/import/lib.php index 261a532ef5..2df76c6c97 100755 --- a/grade/import/lib.php +++ b/grade/import/lib.php @@ -30,10 +30,10 @@ require_once($CFG->libdir.'/gradelib.php'); * @return int importcode */ function get_new_importcode() { - global $USER; + global $USER, $DB; $importcode = time(); - while (get_record('grade_import_values', 'importcode', $importcode, 'importer', $USER->id)) { + while ($DB->get_record('grade_import_values', array('importcode' => $importcode, 'importer' => $USER->id))) { $importcode--; } @@ -51,16 +51,16 @@ function get_new_importcode() { * @return bool success */ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verbose=true) { - global $CFG, $USER; + global $CFG, $USER, $DB; $commitstart = time(); // start time in case we need to roll back $newitemids = array(); // array to hold new grade_item ids from grade_import_newitem table, mapping array /// first select distinct new grade_items with this batch - - if ($newitems = get_records_sql("SELECT * - FROM {grade_import_newitem} - WHERE importcode = $importcode AND importer={$USER->id}")) { + $params = array($importcode, $USER->id); + if ($newitems = $DB->get_records_sql("SELECT * + FROM {grade_import_newitem} + WHERE importcode = ? AND importer=?", $params)) { // instances of the new grade_items created, cached // in case grade_update fails, so that we can remove them @@ -69,7 +69,7 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb foreach ($newitems as $newitem) { // get all grades with this item - if ($grades = get_records('grade_import_values', 'newgradeitem', $newitem->id)) { + if ($grades = $DB->get_records('grade_import_values', array('newgradeitem' => $newitem->id))) { /// create a new grade item for this - must use false as second param! /// TODO: we need some bounds here too $gradeitem = new grade_item(array('courseid'=>$courseid, 'itemtype'=>'manual', 'itemname'=>$newitem->itemname), false); @@ -97,9 +97,10 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb /// then find all existing items - if ($gradeitems = get_records_sql("SELECT DISTINCT (itemid) - FROM {grade_import_values} - WHERE importcode = $importcode AND importer={$USER->id} AND itemid > 0")) { + if ($gradeitems = $DB->get_records_sql("SELECT DISTINCT (itemid) + FROM {grade_import_values} + WHERE importcode = ? AND importer=? AND itemid > 0", + array($importcode, $USER->id))) { $modifieditems = array(); @@ -111,7 +112,7 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb return false; } // get all grades with this item - if ($grades = get_records('grade_import_values', 'itemid', $itemid)) { + if ($grades = $DB->get_records('grade_import_values', array('itemid' => $itemid))) { // make the grades array for update_grade foreach ($grades as $grade) { @@ -168,9 +169,11 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb * @return mixed and array of user objects, or false if none. */ function get_unenrolled_users_in_import($importcode, $courseid) { - global $CFG; + global $CFG, $DB; $relatedctxcondition = get_related_contexts_string(get_context_instance(CONTEXT_COURSE, $courseid)); + list($usql, $params) = $DB->get_in_or_equal(explode(',', $CFG->gradebookroles)); + $sql = "SELECT giv.id, u.firstname, u.lastname, u.idnumber AS useridnumber, COALESCE(gi.idnumber, gin.itemname) AS gradeidnumber FROM @@ -179,13 +182,14 @@ function get_unenrolled_users_in_import($importcode, $courseid) { 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.roleid $usql AND ra.contextid $relatedctxcondition) - WHERE giv.importcode = $importcode + WHERE giv.importcode = ? AND ra.id IS NULL ORDER BY gradeidnumber, u.lastname, u.firstname"; + $params[] = $importcode; - return get_records_sql($sql); + return $DB->get_records_sql($sql, $params); } /** @@ -194,11 +198,11 @@ function get_unenrolled_users_in_import($importcode, $courseid) { * @param string importcode - import batch identifier */ function import_cleanup($importcode) { - global $USER; + global $USER, $DB; // remove entries from buffer table - delete_records('grade_import_values', 'importcode', $importcode, 'importer', $USER->id); - delete_records('grade_import_newitem', 'importcode', $importcode, 'importer', $USER->id); + $DB->delete_records('grade_import_values', array('importcode' => $importcode, 'importer' => $USER->id)); + $DB->delete_records('grade_import_newitem', array('importcode' => $importcode, 'importer' => $USER->id)); } ?> diff --git a/grade/import/xml/grade_import_form.php b/grade/import/xml/grade_import_form.php index d1ba647598..fdea7709d5 100644 --- a/grade/import/xml/grade_import_form.php +++ b/grade/import/xml/grade_import_form.php @@ -26,7 +26,7 @@ require_once $CFG->libdir.'/formslib.php'; class grade_import_form extends moodleform { function definition () { - global $COURSE, $USER, $CFG; + global $COURSE, $USER, $CFG, $DB; $mform =& $this->_form; @@ -51,7 +51,10 @@ class grade_import_form extends moodleform { if (!empty($CFG->gradepublishing)) { $mform->addElement('header', 'publishing', get_string('publishing', 'grades')); $options = array(get_string('nopublish', 'grades'), get_string('createnewkey', 'userkey')); - if ($keys = get_records_select('user_private_key', "script='grade/import' AND instance={$COURSE->id} AND userid={$USER->id}")) { + $keys = $DB->get_records_select('user_private_key', + "script='grade/import' AND instance=? AND userid=?", + array($COURSE->id, $USER->id)); + if ($keys) { foreach ($keys as $key) { $options[$key->value] = $key->value; // TODO: add more details - ip restriction, valid until ?? } diff --git a/grade/import/xml/index.php b/grade/import/xml/index.php index 662deca097..31a71c3baa 100755 --- a/grade/import/xml/index.php +++ b/grade/import/xml/index.php @@ -49,7 +49,7 @@ if (!empty($CFG->gradepublishing)) { $mform = new grade_import_form(); -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { // Large files are likely to take their time and memory. Let PHP know // that we'll take longer, and that the process should be recycled soon // to free up memory. diff --git a/grade/import/xml/lib.php b/grade/import/xml/lib.php index 7bf60f6106..3cbce136ad 100644 --- a/grade/import/xml/lib.php +++ b/grade/import/xml/lib.php @@ -29,7 +29,7 @@ require_once $CFG->dirroot.'/grade/lib.php'; require_once $CFG->dirroot.'/grade/import/lib.php'; function import_xml_grades($text, $course, &$error) { - global $USER; + global $USER, $DB; $importcode = get_new_importcode(); @@ -65,7 +65,7 @@ function import_xml_grades($text, $course, &$error) { // check if user exist and convert idnumber to user id $useridnumber = $result['#']['student'][0]['#']; - if (!$user = get_record('user', 'idnumber', addslashes($useridnumber))) { + if (!$user = $DB->get_record('user', array('idnumber' =>$useridnumber))) { // no user found, abort $status = false; $error = get_string('errincorrectuseridnumber', 'gradeimport_xml', $useridnumber); @@ -110,7 +110,7 @@ function import_xml_grades($text, $course, &$error) { } // insert this grade into a temp table - if (!insert_record('grade_import_values', addslashes_recursive($newgrade))) { + if (!$DB->insert_record('grade_import_values', $newgrade)) { $status = false; // could not insert into temp table $error = get_string('importfailed', 'grades'); diff --git a/grade/lib.php b/grade/lib.php index acf3188d3f..21234a3588 100644 --- a/grade/lib.php +++ b/grade/lib.php @@ -117,7 +117,7 @@ class graded_users_iterator { FROM {user} u INNER JOIN {role_assignments} ra ON u.id = ra.userid $groupsql - WHERE ra.roleid $gradebookroles_sql; + WHERE ra.roleid $gradebookroles_sql AND ra.contextid $relatedcontexts $groupwheresql ORDER BY $order"; @@ -157,12 +157,15 @@ class graded_users_iterator { return false; // no users present } - if (!$user = $this->users_rs->next()) { + if (!$this->users_rs->valid()) { if ($current = $this->_pop()) { // this is not good - user or grades updated between the two reads above :-( } return false; // no more users + } else { + $user = $this->users_rs->current(); + $this->users_rs->next(); } // find grades of this user @@ -172,6 +175,10 @@ class graded_users_iterator { break; // no more grades } + if (empty($current->userid)) { + break; + } + if ($current->userid != $user->id) { // grade of the next user, we have all for this user $this->_push($current); @@ -241,11 +248,11 @@ class graded_users_iterator { return NULL; // no grades present } - if (!$grade = $this->grades_rs->next()) { + if ($this->grades_rs->next()) { return NULL; // no more grades } - return $grade; + return $this->grades_rs->current(); } else { return array_pop($this->gradestack); } @@ -279,6 +286,8 @@ function print_graded_users_selector($course, $actionpage, $userid=null, $return $menu[0] = get_string('allusers', 'grades'); } + $nextuser = $gui->next_user(); + while ($userdata = $gui->next_user()) { $user = $userdata->user; $menu[$user->id] = fullname($user); diff --git a/grade/report/grader/ajax_callbacks.php b/grade/report/grader/ajax_callbacks.php index 60060f4922..9a03484d62 100644 --- a/grade/report/grader/ajax_callbacks.php +++ b/grade/report/grader/ajax_callbacks.php @@ -77,7 +77,7 @@ switch ($action) { } if ($errorstr) { - $user = get_record('user', 'id', $userid, '', '', '', '', 'id, firstname, lastname'); + $user = $DB->get_record('user', array('id' => $userid), 'id, firstname, lastname'); $gradestr = new object(); $gradestr->username = fullname($user); $gradestr->itemname = $grade_item->get_name(); @@ -119,8 +119,8 @@ switch ($action) { // 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 {grade_grades} gg, {grade_items} gi WHERE " - . "gi.courseid = $courseid AND gg.itemid = gi.id AND gg.userid = $userid"; - $records = get_records_sql($sql); + . "gi.courseid = ? AND gg.itemid = gi.id AND gg.userid = ?"; + $records = $DB->get_records_sql($sql, array($courseid, $userid)); $json_object->row = $records; echo json_encode($json_object); die(); diff --git a/grade/report/grader/index.php b/grade/report/grader/index.php index c2bb6f028c..64ff7f53d1 100644 --- a/grade/report/grader/index.php +++ b/grade/report/grader/index.php @@ -149,7 +149,7 @@ if (ajaxenabled() && $report->get_pref('enableajax')) { } /// processing posted grades & feedback here -if ($data = data_submitted() and confirm_sesskey() and has_capability('moodle/grade:edit', $context)) { +if ($data = data_submitted(false) and confirm_sesskey() and has_capability('moodle/grade:edit', $context)) { $warnings = $report->process_data($data); } else { $warnings = array(); diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index 57ba70e2fd..b6dcebfc0d 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -157,6 +157,7 @@ class grade_report_grader extends grade_report { * @return array empty array if success, array of warnings if something fails. */ public function process_data($data) { + global $DB; $warnings = array(); // always initialize all arrays @@ -213,7 +214,7 @@ class grade_report_grader extends grade_report { $errorstr = 'morethanmax'; } if ($errorstr) { - $user = get_record('user', 'id', $userid, '', '', '', '', 'id, firstname, lastname'); + $user = $DB->get_record('user', array('id' => $userid), 'id, firstname, lastname'); $gradestr = new object(); $gradestr->username = fullname($user); $gradestr->itemname = $grade_item->get_name(); diff --git a/grade/report/grader/preferences.php b/grade/report/grader/preferences.php index 532f151794..b2568d7662 100644 --- a/grade/report/grader/preferences.php +++ b/grade/report/grader/preferences.php @@ -31,7 +31,7 @@ $courseid = required_param('id', PARAM_INT); /// Make sure they can even access this course -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -49,7 +49,7 @@ if ($mform->is_cancelled()){ } // If data submitted, then process and store. -if ($data = $mform->get_data()) { +if ($data = $mform->get_data(false)) { foreach ($data as $preference => $value) { if (substr($preference, 0, 6) !== 'grade_') { continue; diff --git a/grade/report/index.php b/grade/report/index.php index 1d316e5afc..3be9490795 100644 --- a/grade/report/index.php +++ b/grade/report/index.php @@ -27,7 +27,7 @@ require '../../config.php'; $courseid = required_param('id', PARAM_INT); /// 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); diff --git a/grade/report/lib.php b/grade/report/lib.php index 8c18988673..bcde05db5c 100755 --- a/grade/report/lib.php +++ b/grade/report/lib.php @@ -139,7 +139,7 @@ abstract class grade_report { * @param int $page The current page being viewed (when report is paged) */ public function __construct($courseid, $gpr, $context, $page=null) { - global $CFG, $COURSE; + global $CFG, $COURSE, $DB; if (empty($CFG->gradebookroles)) { error ('no roles defined in admin->appearance->graderoles'); @@ -150,7 +150,7 @@ abstract class grade_report { if ($this->courseid == $COURSE->id) { $this->course = $COURSE; } else { - $this->course = get_record('course', 'id', $this->courseid); + $this->course = $DB->get_record('course', array('id' => $this->courseid)); } $this->gpr = $gpr; diff --git a/grade/report/outcomes/index.php b/grade/report/outcomes/index.php index 5601a48487..87d12629d6 100644 --- a/grade/report/outcomes/index.php +++ b/grade/report/outcomes/index.php @@ -29,7 +29,7 @@ require_once $CFG->dirroot.'/grade/lib.php'; $courseid = required_param('id', PARAM_INT); // course id -if (!$course = get_record('course', 'id', $courseid)) { +if (!$course = $DB->get_record('course', array('id' => $courseid))) { print_error('nocourseid'); } @@ -57,7 +57,7 @@ $outcomes = grade_outcome::fetch_all_available($courseid); // Get grade_items that use each outcome foreach ($outcomes as $outcomeid => $outcome) { - $report_info[$outcomeid]['items'] = get_records_select('grade_items', "outcomeid = $outcomeid AND courseid = $courseid"); + $report_info[$outcomeid]['items'] = $DB->get_records_select('grade_items', "outcomeid = ? AND courseid = ?", array($outcomeid, $courseid)); $report_info[$outcomeid]['outcome'] = $outcome; // Get average grades for each item @@ -65,9 +65,9 @@ foreach ($outcomes as $outcomeid => $outcome) { foreach ($report_info[$outcomeid]['items'] as $itemid => $item) { $sql = "SELECT itemid, AVG(finalgrade) AS avg, COUNT(finalgrade) AS count FROM {grade_grades} - WHERE itemid = $itemid + WHERE itemid = ? GROUP BY itemid"; - $info = get_records_sql($sql); + $info = $DB->get_records_sql($sql, array($itemid)); if (!$info) { unset($report_info[$outcomeid]['items'][$itemid]); diff --git a/grade/report/overview/index.php b/grade/report/overview/index.php index 0dfa1a0330..83570ca2be 100644 --- a/grade/report/overview/index.php +++ b/grade/report/overview/index.php @@ -31,7 +31,7 @@ $courseid = optional_param('id', $COURSE->id, PARAM_INT); $userid = optional_param('userid', $USER->id, PARAM_INT); /// 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); diff --git a/grade/report/overview/lib.php b/grade/report/overview/lib.php index 09c68a1a1a..c76832dfa8 100644 --- a/grade/report/overview/lib.php +++ b/grade/report/overview/lib.php @@ -41,18 +41,18 @@ class grade_report_overview extends grade_report { * The user. * @var object $user */ - var $user; + public $user; /** * A flexitable to hold the data. * @var object $table */ - var $table; + public $table; /** * show student ranks */ - var $showrank; + public $showrank; /** * Constructor. Sets local copies of user preferences and initialises grade_tree. @@ -60,14 +60,14 @@ class grade_report_overview extends grade_report { * @param object $gpr grade plugin return tracking object * @param string $context */ - function grade_report_overview($userid, $gpr, $context) { - global $CFG, $COURSE; - parent::grade_report($COURSE->id, $gpr, $context); + public function __construct($userid, $gpr, $context) { + global $CFG, $COURSE, $DB; + parent::__construct($COURSE->id, $gpr, $context); $this->showrank = grade_get_setting($this->courseid, 'report_overview_showrank', !empty($CFG->grade_report_overview_showrank)); // get the user (for full name) - $this->user = get_record('user', 'id', $userid); + $this->user = $DB->get_record('user', array('id' => $userid)); // base url for sorting by first/last name $this->baseurl = $CFG->wwwroot.'/grade/overview/index.php?id='.$userid; @@ -79,7 +79,7 @@ class grade_report_overview extends grade_report { /** * Prepares the headers and attributes of the flexitable. */ - function setup_table() { + public function setup_table() { /* * Table has 3 columns *| course | final grade | rank (optional) | @@ -109,7 +109,7 @@ class grade_report_overview extends grade_report { $this->table->setup(); } - function fill_table() { + public function fill_table() { global $CFG; // MDL-11679, only show 'mycourses' instead of all courses @@ -140,11 +140,12 @@ class grade_report_overview extends grade_report { } else if (!is_null($finalgrade)) { /// find the number of users with a higher grade + $params = array($finalgrade, $grade_item->id); $sql = "SELECT COUNT(DISTINCT(userid)) FROM {grade_grades} - WHERE finalgrade IS NOT NULL AND finalgrade > $finalgrade - AND itemid = {$grade_item->id}"; - $rank = count_records_sql($sql) + 1; + WHERE finalgrade IS NOT NULL AND finalgrade > ? + AND itemid = ?"; + $rank = $DB->count_records_sql($sql, $params) + 1; $data[] = "$rank/$numusers"; @@ -168,7 +169,7 @@ class grade_report_overview extends grade_report { * @param bool $return Whether or not to return the data instead of printing it directly. * @return string */ - function print_table($return=false) { + public function print_table($return=false) { ob_start(); $this->table->print_html(); $html = ob_get_clean(); @@ -184,7 +185,10 @@ class grade_report_overview extends grade_report { * @var array $data * @return bool Success or Failure (array of errors). */ - function process_data($data) { + public function process_data($data) { + } + + public function process_action($target, $action) { } } diff --git a/grade/report/user/index.php b/grade/report/user/index.php index bd37f05dc6..137ddbfec5 100644 --- a/grade/report/user/index.php +++ b/grade/report/user/index.php @@ -31,7 +31,7 @@ $courseid = required_param('id'); $userid = optional_param('userid', $USER->id, PARAM_INT); /// 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); @@ -115,18 +115,18 @@ if ($access) { print_heading(get_string('modulename', 'gradereport_user'). ' - '.fullname($report->user)); if ($report->fill_table()) { echo $report->print_table(true); - } + } } - } else { //Students will see just their own report + } else { //Students will see just their own report - // Create a report instance - $report = new grade_report_user($courseid, $gpr, $context, $userid); + // Create a report instance + $report = new grade_report_user($courseid, $gpr, $context, $userid); - // print the page - print_heading(get_string('modulename', 'gradereport_user'). ' - '.fullname($report->user)); + // print the page + print_heading(get_string('modulename', 'gradereport_user'). ' - '.fullname($report->user)); - if ($report->fill_table()) { - echo $report->print_table(true); + if ($report->fill_table()) { + echo $report->print_table(true); } } diff --git a/grade/report/user/lib.php b/grade/report/user/lib.php index db2908a5b4..4a2b0413c8 100644 --- a/grade/report/user/lib.php +++ b/grade/report/user/lib.php @@ -41,28 +41,28 @@ class grade_report_user extends grade_report { * The user. * @var object $user */ - var $user; + public $user; /** * A flexitable to hold the data. * @var object $table */ - var $table; + public $table; /** * Flat structure similar to grade tree */ - var $gseq; + public $gseq; /** * show student ranks */ - var $showrank; + public $showrank; /** * Show hidden items even when user does not have required cap */ - var $showhiddenitems; + public $showhiddenitems; /** * Constructor. Sets local copies of user preferences and initialises grade_tree. @@ -71,9 +71,9 @@ class grade_report_user extends grade_report { * @param string $context * @param int $userid The id of the user */ - function grade_report_user($courseid, $gpr, $context, $userid) { - global $CFG; - parent::grade_report($courseid, $gpr, $context); + public function __construct($courseid, $gpr, $context, $userid) { + global $CFG, $DB; + parent::__construct($courseid, $gpr, $context); $this->showrank = grade_get_setting($this->courseid, 'report_user_showrank', $CFG->grade_report_user_showrank); $this->showhiddenitems = grade_get_setting($this->courseid, 'report_user_showhiddenitems', $CFG->grade_report_user_showhiddenitems); @@ -84,7 +84,7 @@ class grade_report_user extends grade_report { $this->gseq = new grade_seq($this->courseid, $switch); // get the user (for full name) - $this->user = get_record('user', 'id', $userid); + $this->user = $DB->get_record('user', array('id' => $userid)); // base url for sorting by first/last name $this->baseurl = $CFG->wwwroot.'/grade/report?id='.$courseid.'&userid='.$userid; @@ -97,7 +97,7 @@ class grade_report_user extends grade_report { /** * Prepares the headers and attributes of the flexitable. */ - function setup_table() { + public function setup_table() { global $CFG; /* * Table has 5-6 columns @@ -124,8 +124,7 @@ class grade_report_user extends grade_report { $this->table->define_baseurl($this->baseurl); $this->table->set_attribute('cellspacing', '0'); - $this->table->set_attribute('id', 'user-grade'); - $this->table->set_attribute('class', 'boxaligncenter generaltable'); + $this->table->set_attribute('class', 'user-grades boxaligncenter generaltable'); // not sure tables should be sortable or not, because if we allow it then sorted results distort grade category structure and sortorder $this->table->set_control_variables(array( @@ -140,7 +139,7 @@ class grade_report_user extends grade_report { $this->table->setup(); } - function fill_table() { + public function fill_table() { global $CFG; $numusers = $this->get_numusers(false); // total course users $items =& $this->gseq->items; @@ -293,7 +292,7 @@ class grade_report_user extends grade_report { * @param bool $return Whether or not to return the data instead of printing it directly. * @return string */ - function print_table($return=false) { + public function print_table($return=false) { ob_start(); $this->table->print_html(); $html = ob_get_clean(); @@ -309,7 +308,10 @@ class grade_report_user extends grade_report { * @var array $data * @return bool Success or Failure (array of errors). */ - function process_data($data) { + public function process_data($data) { + } + + public function process_action($target, $action) { } } diff --git a/grade/report/user/styles.php b/grade/report/user/styles.php index 6a0b7cd319..9dd3d174f5 100644 --- a/grade/report/user/styles.php +++ b/grade/report/user/styles.php @@ -1,14 +1,14 @@ -.grade-report-user table#user-grade .datesubmitted { +.grade-report-user table.user-grades .datesubmitted { font-size: 0.7em; } -.grade-report-user table#user-grade .courseitem, -.grade-report-user table#user-grade .categoryitem { +.grade-report-user table.user-grades .courseitem, +.grade-report-user table.user-grades .categoryitem { font-weight: bold; } -.grade-report-user table#user-grade td.cell { +.grade-report-user table.user-grades td.cell { padding-left: 5px; padding-right: 5px; } @@ -19,7 +19,7 @@ } /* this must be last if we want to override other category and course item colors */ -.grade-report-user table#user-grade .hidden, -.grade-report-user table#user-grade .hidden a { +.grade-report-user table.user-grades .hidden, +.grade-report-user table.user-grades .hidden a { color:#aaaaaa; } -- 2.39.5