22 Commits

Author SHA1 Message Date
nicolasconnault
8ff4550af2 MDL-9506 Refactored some of the category methods into grade_tree, same for unit tests. 2007-05-17 02:22:32 +00:00
nicolasconnault
c78b0cc59a MDL-9506 Reorganised unit tests a bit, added some stubs and tests for grade_category, and corrected missing grade_finals for orphan grade_items and categories. 2007-05-16 03:17:46 +00:00
nicolasconnault
0dfe77317a MDL-9506 grade_category::display_grades() and grade_category::get_tree() correctly built the headers for a HTML table of grades, with two layers of categories and one layer of grade_items. Empty filler cells are used when a 1st or 2nd level category doesn't exist for a grade_item. 2007-05-16 02:47:56 +00:00
nicolasconnault
5e16f809f8 MDL-9506 Experimental development of numbering and displaying of category and items tree/table. Messy work :-) 2007-05-15 09:59:53 +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
nicolasconnault
1d4b666828 MDL-9506 Fixed a bug with the fetch method. This method should not be called statically when setting an internal object. For example, when the grade_category is calling its load_parent_category, it should not call grade_category::fetch, but new grade_category. Otherwise, the method assigns the new variables to the calling object. 2007-05-11 02:43:46 +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
f151b07393 MDL-9506 Added category's associated grade_item object, and changed unit tests database data so that it creates its own test tables. 2007-05-07 07:33:11 +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
ce385eb4e3 MDL-9506 Implemented category path and depth, and wrote unit tests for them. 2007-05-01 08:56:37 +00:00
nicolasconnault
e5c674f1e1 MDL-9506 Added raw and final grade objects, plus more work in unit tests. 2007-04-27 08:12:16 +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