Issue Details (XML | Word | Printable)

Key: MDL-16431
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Petr Skoda
Reporter: Kenneth Newquist
Votes: 5
Watchers: 5
Operations

Add/Edit UI Mockup to this issue
If you were logged in you would be able to see more operations.
Moodle

Custom scales displaying instead of site-wide scales when creating "Grade Items" in 1.9

Created: 10/Sep/08 04:01 AM   Updated: 03/Jun/09 05:08 PM
Component/s: Gradebook
Affects Version/s: 1.9.2
Fix Version/s: 1.9.5

Environment: Moodle 1.9.2

Participants: Kenneth Newquist, Paul Grzesina, Petr Skoda, Sam Hemelryk and Steven Breiner
Security Level: None
QA Assignee: Sam Hemelryk
Resolved date: 10/May/09
Affected Branches: MOODLE_19_STABLE
Fixed Branches: MOODLE_19_STABLE


 Description  « Hide
By default, individual course scales should not be accessible to other users on the site unless they've been designated a site-wide "standard" scale, which is something only admins can do.

However, we've discovered that if you create a Grade Item (via Grades > Choose an Action > Categories & Items > Add Grade Item) and click on the "Scale" drop down menu, you see all the custom scales available on the site.

The steps to recreate are:

1) Create a custom scale for Course A as Teacher A
2) Assign that scale to a grade item in Course A.
3) Create a grade item in Course B as Teacher B
4) Add a grade item, and look at the scale menu; if the bug is there, then you'll be able to see the custom scale that should have been limited to to just Course A.

In looking through the code, I discovered the problem lies on line 60:

if ($scales = get_records('scale')) {

This query returns *every* scale in Moodle, both custom and site-wide, rather than just those for the course.



 All   Comments   Change History   Version Control      Sort Order: Ascending order - Click to sort in descending order
Steven Breiner added a comment - 28/Oct/08 10:21 PM
True enough... and potentially very confusing for instructors, since there can be many scales with the same name, and which can be edited only by the instructor who created them (or an admin logged in as the instructor). To compound the issue, the scale's values are not visible anywhere (that I can find) except in the drop-downs in an instructor's view of the gradebook (then only after selecting the scale) and in the creator's scales-editing area - additionally there is no simple way to identify who the creator is.

So faculty can select scales blindly (i.e., without being able to see what they contain), perhaps choosing different scales by the same name (since there is no indication of what the scale contains), and can't amend them for their own courses. This is pretty sloppy and has a significant potential for causing erroneous grade calculations applied to student scores. (Granted, instructors should actually know how a scale works before using it - but alas, this bug promotes a bad practice).


Steven Breiner added a comment - 16/Nov/08 03:38 AM
Just realized... this is a duplicate of Bug MDL-15926 (http://tracker.moodle.org/browse/MDL-15926).

Paul Grzesina added a comment - 14/Jan/09 07:04 AM
MDL-15926 seems to be a bit different as it is about forums not the grade book. The following patch to grade/edit/tree/item_form.php did what I wanted for the gradebook. I don't know if this problem shows up elsewhere. The modification will show the standard scales as well as custom scales for the course. (Don't mind the revision numbers, they are for local changes only. In this case 486 is essentially 1.9.0.)

— item_form.php (revision 486)
+++ item_form.php (working copy)
@@ -57,11 +57,16 @@
//$mform->disabledIf('calculation', 'gradetype', 'eq', GRADE_TYPE_NONE);

$options = array(0=>get_string('usenoscale', 'grades'));

  • if ($scales = get_records('scale')) {
    + if ($scales = get_records('scale', 'courseid', 0))
    Unknown macro: { foreach ($scales as $scale) { $options[$scale->id] = format_string($scale->name); } }

    + if ($scales = get_records('scale', 'courseid', $COURSE->id))
    Unknown macro: {+ foreach ($scales as $scale) { + $options[$scale->id] = format_string($scale->name); + }+ }

    $mform->addElement('select', 'scaleid', get_string('scale'), $options);
    $mform->setHelpButton('scaleid', array('scaleid', get_string('scaleid', 'grades'), 'grade'), true);
    $mform->disabledIf('scaleid', 'gradetype', 'noteq', GRADE_TYPE_SCALE);

Petr Skoda added a comment - 10/May/09 04:29 AM
fixed a few days ago, thanks for the report

Sam Hemelryk added a comment - 03/Jun/09 05:08 PM
Tested and confirmed fixed. Thanks