Commit graph

89 commits

Author SHA1 Message Date
nicolasconnault
ec4560cc58 MDL-9137 Removed hidden field from grade_categories and added deleted field to grade_items. Also added 2 images in pix/i 2007-06-01 04:46:24 +00:00
nicolasconnault
5fad506139 MDL-9629 Category edit page now implements delete, show/hide, lock/unlock, moveup/movedown and move actions. The edit icon is also shown but not yet implemented. 2007-06-01 04:02:37 +00:00
nicolasconnault
88e794d6c8 MDL-9628 Move work on the category edit page 2007-05-31 08:57:05 +00:00
nicolasconnault
0fc7f62445 MDL-9506 MDL-9137 MDL-9629
Added a number of small getters and setters to grade_item and grade_category, to hide the structural differences between the two, and provide a common interface for cases when we are not sure whether an $object is of one type or another.
The grade_tree::renumber() method now adds complete objects to the need_update array, because both grade_category and grade_item need to update their parent field when moved to a different parent. Amazingly, these important changes worked straight away (after 1 hour of coding without testing anything), and all the unit tests passed!
2007-05-31 03:15:43 +00:00
nicolasconnault
c91ed4be0d MDL-9506 Category and Item now set their own courseid if not set explicitly, and if they have enough information from
other sources. category::set_as_parent has a new constraint: cannot set over children from different courses.
Applied recursion to grade_tree::renumber(), but still some fine-tuning to do, since only grade_items are getting updated in DB.
2007-05-28 08:00:19 +00:00
nicolasconnault
526e1a8a25 MDL-9506 Corrected a number of small errors in unit tests and classes. 2007-05-28 01:26:58 +00:00
nicolasconnault
8ae28b4959 MDL-9506 WOrking on grade_tree edit tree 2007-05-25 07:02:04 +00:00
nicolasconnault
2186f72cb1 MDL-9629 Beginning the edit category page. Also added dmllib::sql_max($field) and fixed a few bugs. Grade_item should now extrapolate its sortorder upon insertion if not set, by looking up the last sortorder in the table, and incrementing by 1. 2007-05-24 08:50:01 +00:00
nicolasconnault
5e2274737c MDL-9506 Added grademax extrapolation from scale info for grade_item, in insert() and update() methods. Corrected a few other minor bugs. 2007-05-24 03:32:20 +00:00
nicolasconnault
a15428a2f6 MDL-9889 Fixed a couple of bugs that were only detected by PHP5. Nothing major at all. 2007-05-24 02:08:20 +00:00
nicolasconnault
ab53054fd1 MDL-9506 Removed the debugging message for the fetch() methods. Added droplow and keephigh rules to grade_category::aggregate_grades(). The only question now is what to do when the droplow or keephigh field is larger than the number of grades for a given user/item combination. At the moment it just gives that value 0. 2007-05-21 05:54:12 +00:00
nicolasconnault
03f01edded MDL-9506 New grade_category::set_as_parent($children) method (non-static). Crucial method for adding categories over children. 4 constraints have been set up, and successfully tested in unit tests. However, the method fails when it comes to updating the children's parent fields. The test data may be missing some required fields. 2007-05-18 08:05:53 +00:00
nicolasconnault
a39cac258d MDL-9506 Elements of the array returned by grade_category::get_children are now indexed by sortorder, to work more easily with grade_tree methods.
New get_sortorder method for grade_category and grade_item. This is used when the type of an object is unknown, and could be either one. Because categories have a "virtual" sortorder (through their grade_item), they can transparently return one as well.
Unit tests fail for grade_tree at present because of faulty implementation which is being fixed. The $depth attribute has been completely removed, as well as a number of switch statements, in favour of an $index variable which is exploded and used to build strings of array keys for eval statements (unset and array_splice). Can't wait to get all this working :-)
2007-05-17 09:04:52 +00:00
nicolasconnault
dda0c7e666 MDL-9506 Added some unit tests, found some errors, and realised they came from incorrect setup unit test data, which I corrected (grade finals for item 3 were set to 2-digit ints although item 3 was a scale of 1-7. 2007-05-14 08:18:03 +00:00
nicolasconnault
096858ffcf MDL-9506 Finally cracked the category aggregation. However, more thorough unit tests need to be written, with exact expectations instead of ranges, as currently used. All unit tests pass. 2007-05-14 04:14:22 +00:00
nicolasconnault
2df712352d MDL-9506 Almost completed category aggregation, including generation of raw and final grades held by these categories. Only a few small glitches remain, that cause these grades not to be generated properly. This is the last critical element of the gradebook API, so I'm looking forward to finishing it :-) 2007-05-11 08:46:34 +00:00
nicolasconnault
77d2540eea MDL-9506 Finished implementing the propagation of needsupdate flag up the hierarchy when a lower element justifies it. All unit tests pass. The next task is to implement the generation of raw grades and final grades based on this needsupdate setting. 2007-05-11 03:29:00 +00:00
moodler
b55997c112 Removed set_timecreated and just tidied up some time-related things 2007-05-11 02:11:30 +00:00
nicolasconnault
cb64c6b257 MDL-9506 small fix 2007-05-10 08:58:00 +00:00
nicolasconnault
8f4a626d5c MDL-9506
grade_grades_raw
    added grade_item object
    added load_grade_item()
    added call to grade_item->flag_for_update() when object is inserted, deleted or updated
grade_grades_final
    added grade_item object
    added load_grade_item()
grade_grades_text
    added grade_item object
    added load_grade_item()
grade_item
    added qualifies_for_update()
    added call to grade_category->flag_for_update() when object is inserted, deleted or updated (only when qualifies_for_update() is true)

However since I have made this last set of changes, the unit tests are performing extremely slow, and several of them fail. I suspect that there is a serious performance issue involved in using objects too heavily, instead of performing more SQL queries, especially when updates are concerned. Often a complete object is SELECTed before it is amended in an object form then UPDATEd.

In the next iteration I will look at this seriously, and put together some tests with thousands of users and many grade_items, to see how well the API responds.
2007-05-10 08:08:43 +00:00
nicolasconnault
8c8462437d MDL-9506
grade_category:
    new parent_category object
    new load_parent_category() method
    new flag_for_update() recursive method
grade_item:
    new category object
    changed get_category() to load_category() and updated testgradeitem
    added missing idnumber field
    new flag_for_update() recursive method
2007-05-10 02:34:01 +00:00
nicolasconnault
6527197b4e MDL-9506 Unit test tables are now created and emptied using XMLDB. raw.gradescale and final.gradescale have been removed in favour of a single gradevalue. Scale value is no longer rounded until moment of display. A number of other changes which you can look at by browsing the diff :-) 2007-05-09 07:50:28 +00:00
nicolasconnault
2c72af1f08 MDL-9506 Stuck on grade_category->generate_grades. I cannot figure out how to recursively generate raw grades for each category's associated grade_item based on that category's children categories and items. Heaps of other changes with this commit, including a new grade_object::update_from_db() method, which uses the state of the record in DB to update the current object with a matching id (useful when you insert an incomplete object in the DB and want to get the default values as set up in the DB). 2007-05-08 08:01:55 +00:00
nicolasconnault
0aa32279b7 MDL-9506 Issue 1: adjusting a gradeitem's value would result in a grade_final object with gradevalue assigned, even when a gradescale should have been assigned. Issue 2: double grade_final entries when calling grade_item->load_final() after grade_item->generate_final(). Issue 3: Calling grade_item->update_final_grade() without first calling grade_item->generate_final() would result in fatal error. generate_final() is now called if the raw and final arrays' sizes don't match. 2007-05-08 02:20:26 +00:00
nicolasconnault
712d500777 MDL-9506 Removed implicit loading of associated objects from constructors (grade_item and grade_grades_raw) to avoid very large numbers of sql queries when only little data is required. The load_scale() method, for example, needs to be called explicitly. 2007-05-07 02:04:06 +00:00
nicolasconnault
2b4f19a9ce MDL-9506 Fixed some small issues. 2007-05-04 09:04:40 +00:00
nicolasconnault
4d0263c6e2 MDL-9506 See previous revision. This adds same functionality but in relation to the hidden field. 2007-05-03 08:08:38 +00:00
nicolasconnault
fae51e127b MDL-9506 Added grade_item::toggle_locking and unit tests. Affects all final grades if reqested. 2007-05-03 08:02:51 +00:00
nicolasconnault
27f95e9b47 MDL-9506 Upgraded grade_item::adjust_grade with Darlene's more elegant formula. Completed grade_category::get_children($depth, $arraytype). Added 4 constants to help that method. Added and passed all unit tests (111 now). 2007-05-03 07:10:22 +00:00
nicolasconnault
7c8a963f7b MDL-9506 Finished all unit test stubs, another batch to write soon. One one test fails because I haven't implemented recursive category hierarchy output yet, and not sure if it's needed. A grade_category already returns its immediate children, and that may be enough. 2007-05-02 07:20:13 +00:00
nicolasconnault
d5bdb228a5 MDL-9506 Finished grade_item::adjust_grade, which now also adjusts scale grades correctly. Added grade_scale object to wrap around the current non-normalized scale DB table. When/if we upgrade to grade_scales and grade_scale_items DB tables, changing the grade_scale class will be easy. 2007-05-01 05:45:54 +00:00
nicolasconnault
d8676dc32e MDL-9506 Implemented rescaling and grade adjustment formulas in grade_item::adjust_grade(). Also wrote unit tests. 2007-05-01 03:18:55 +00:00
nicolasconnault
b3f111607f MDL-9506 Lots more unit tests, and work on grade_item::update method and associated functionality. 3 unit tests currently fail, so more work needed. 2007-04-30 09:09:32 +00:00
nicolasconnault
869807d8e4 MLD-9506 Corrected update_final_grades() in grade_item, which was updating the grade_raw table
instead of grade_final. Made a few other adjustments.
2007-04-30 05:25:19 +00:00
nicolasconnault
e7e3f50fc2 MDL-9506 Removed redundant portion of code. 2007-04-30 05:00:17 +00:00
nicolasconnault
a8995b34df MDL-9506 Added grade_grades_raw as a proper object used by grade_item. Also added a global function in gradelib for updating grade_grades_raw objects. 2007-04-30 04:49:25 +00:00
nicolasconnault
f440c2d1b1 MDL-9506 Implemented get_raw and get_final, plus added method_exists() checks for each unit test. 2007-04-30 02:05:51 +00:00
nicolasconnault
3058964f85 MDL-9506 Number of important changes, restored unit test stability, on to next changes... 2007-04-27 07:28:41 +00:00
nicolasconnault
a56cb85c63 MDL-9506 Renamed lib/gradebook to lib/grade (bug MDL-9506) 2007-04-27 04:13:00 +00:00
Renamed from lib/gradebook/grade_item.php (Browse further)