MDL-63094 tool_policy: Fix race condition in modal display
[moodle.git] / mod / assign / upgrade.txt
blobdbcd9fd04f858cc7e560419f7042400350b226f0
1 This files describes API changes in the assign code.
3 === 3.6 ===
4 * The mod_assign_base_testcase unit test base class has been deprecated.
5   It encouraged poor unit test design and led to significant performance issues with unit tests. See MDL-55609 for
6   further information.
7 * The function can_grade() now has optional $user parameter.
9 === 3.5 ===
10 * Functions assign:get_assign_grading_summary_renderable, assign:can_view_submission, assign:count_submissions_with_status,
11   assign:count_submissions_need_grading and mod_assign_external::get_submission_status now admit an additional group parameter.
12   This parameter can be used to force those functions to retrieve data only for the given group.
14 === 3.4 ===
15 * assign::add_attempt requires that set_most_recent_team_submission() be called if attempting to use this function with a team
16   submission.
18 === 3.3.2 ===
19 * assign_refresh_events() Now takes two additional parameters to refine the update to a specific instance. This function
20   now optionally takes the module instance object or ID, and the course module object or ID. Please try to send the full
21   objects instead of the ids to save DB calls.
23 === 3.3 ===
24 * All pluginfile file serving functions now pass through the options to send_stored_file() (all assignment plugins should do
25   the same).
26 * Fixed calendar event types for overridden due dates from 'close' to 'due'.
27 * Removed calendar event type of 'open', since mod_assign only has the 'due' event type. No point in creating an override event
28 for an event type that does not exist.
30 === 3.2 ===
31 * External function mod_assign_external::get_assignments now returns additional optional fields:
32    - preventsubmissionnotingroup: Prevent submission not in group.
33    - submissionstatement and submissionstatementformat: When there is a submission statement defined.
34 * Proper checking for empty submissions
35 * Submission modification time checking - this will help students working in groups not clobber each others'
36   submissions
37 * External functions that were returning file information now return the following file fields:
38   filename, filepath, mimetype, filesize, timemodified and fileurl.
39   Those fields are now marked as VALUE_OPTIONAL for backwards compatibility.
40   Please, note that previously the filename was part of the filepath field, now they are separated.
41 * Submission and feedback plugins can now specify file areas related to their configuration data,
42   which will then be included in backup and restore; see assign_plugin::get_config_file_areas().
43 * Submission and feedback plugins must now return the specific list of configs available for external functions,
44   this can be done implementing the new assign plugin method get_config_for_external()
45 * Webservice function mod_assign_get_submissions returns a new field 'gradingstatus' from each submission.
47 === 3.1 ===
48 * The feedback plugins now need to implement the is_feedback_modified() method. The default is to return true
49   for backwards compatibiltiy.
50 * When downloading all submissions as a zip each students' files are in a separate folder, are no longer renamed
51   and the folder structure is kept intact.
53 === 3.0 ===
54 * assign_submission_status renderable now requires $usergroups in its constructor
55 * External function mod_assign_external::get_assignments now have a new optional parameter: includenotenrolledcourses.
56   Its default value is false, setting it to true will return assignments for courses a user can see even if it's not enroled.
58 === 2.9 ===
59 * External parameter now returns PARAM_RAW instead of PARAM_TEXT for webservices using feedback comments.
60 * External function mod_assign_external::get_assignments now returns additional optional fields:
61    - intro: Assignment intro.
62    - introformat: Intro format.
63    - introattachments: Intro attachments files.
65 === 2.8 ===
66 * Some DB changes were made to simplify the SQL required to query the latest attempt.
67   - The assign_submission table now has a column "latest" which is set to 1 for the latest submission attempt.
68   - There will always be a submission row if there is a grade (so the latest grade can be found by joining with the submission)
69   - There is a new submission status "new" for a submission that has never been attempted by a student (but the record exists purely
70     to mark the latest attempt number as 0). The function get_user_submission will create a record with the status set to "new"
71     by default (the previous default was "draft").
73 === 2.7 ===
75 * Added setting sendstudentnotifications to assign DB table with admin defaults. This sets the default value for the
76   "Notify students" option on the grading forms. This setting can be retrieved via webservices.
78 * Web service function mod_assign_save_grade has an additional optional parameter $advancedgradingdata which allows
79   advanced grading data to be used.
80 * A new web service function mod_assign_save_grades has been added which allows multiple grades to be processed.
81 * The event submission_updated() [mod/assign/classes/event/submission_updated.php] has been altered to now be an abstract class
82   for submission events in the submission plug-ins.
84 === 2.6.1 ===
86 * format_text() is no longer used for formating assignment content to be used in events (assign_submission_onlinetext::save()) or
87   the word count (assign_submission_onlinetext::format_for_log()) in mod/assign/submission/onlinetext/locallib.php. format_text()
88   should only be used when displaying information to the screen. It was being used incorrectly before in these areas. Plugins using
89   the event assessable_uploaded() should use file_rewrite_pluginfile_urls() to translate the text back to the desired output.
91 === 2.6 ===
92 * To see submission/grades of inactive users, user should have moodle/course:viewsuspendedusers capability.
93 * count_* functions will return only active participants.
94 * assign_submission_plugin->lock and unlock methods have an additional parameter for user flags. A user will not
95   always have a submission record when the submission is locked/unlocked.
96 * Submission and feedback plugins can now participate in webservices. The plugin must implement get_external_parameters()
97   to describe the parameters it is expecting from the mod_assign_save_grade or mod_assign_save_submission functions. The
98   plugin will then handle the webservice via it's normal save() method with the extra data supplied in the $data argument.
100 === 2.5 ===
102 * New feature - Attempt History
104     This adds settings so that a student can have build up a history of separate submission attempts and grades for the same
105     assignment.
107     Extra settings on the assign table are:
108     attemptreopenmethod - The way attempts can be reopened. One of:
109                             ASSIGN_ATTEMPT_REOPEN_METHOD_NONE - Attempts cannot be reopened (default)
110                             ASSIGN_ATTEMPT_REOPEN_METHOD_UNTIL_PASS - Attempts are reopened on grading until the gradebook
111                                                                       indicates this student has passed.
112                             ASSIGN_ATTEMPT_REOPEN_METHOD_MANUAL - Attempts are reopened on manually by the grader.
113     maxattempts - The maximum allowed number of attempts per student for this assign instance.
115     Extra settings on the submission and grade records:
116     attemptnumber - Starting from 0 until the latest attempt.
118     New table assign_user_flags holds user specific flags that were stored in the assign_grade table.  (contains assignment,
119     userid, extensionduedate, mailed and locked)
121     assign changes:
122         "get_user_grade" function has an extra optional parameter to retrieve a specific attempt number.
123         "get_user_submission" function has an extra optional parameter to retrieve a specific attempt number.
124         "get_group_submission" function has an extra optional parameter to retrieve a specific attempt number.
125         new "get_user_flags" function can retrieve the user flags for a specific user (extensionduedate, mailed and locked).
126         new "update_user_flags" function can update the user flags for a specific user (extensionduedate, mailed and locked).
128     assign_submission_plugin changes:
129         "precheck_submission" function now takes a submission record so you can determine which submission is being checked.
130         "submit_for_grading" function now takes a submission record so you can determine which submission is being submitted.
131         new function "copy_submission" can be implemented to copy submission data from one submission to a new one.
133     New renderable object "assign_attempt_history" for rendering the list of previous submissions.
134     New renderable object "assign_gradingmessage" for rendering a generic grading message.
136     assign_grading_table changes:
137         get_group_and_submission is now protected and should not be called from outside this class.
140 === Earlier changes ===
142 * Were not documented in this way. Sorry.