@@ -243,6 +243,46 @@ public function set_data($default_values) {
243
243
parent ::set_data ($ default_values );
244
244
}
245
245
246
+ /**
247
+ * This function is public static so that it can be called from outside of this plugin by another plugin.
248
+ * The other plugin wants a more limited version of this form but cannot inherit from it.
249
+ * This covers only the fields that the other plugin is interested in. Rest are covered in validation().
250
+ * @param array $data
251
+ * @param array $files
252
+ * @return array
253
+ *@see self::add_availability_fields() which adds the related form fields.
254
+ */
255
+ public static function validate_availability_section_data (array $ data , array $ files ): array {
256
+ $ errors = [];
257
+ if ($ data ['startdate ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['startdate ' ] > $ data ['deadline ' ]) {
258
+ $ errors ['startdate ' ] = get_string ('must_be_before_dealdine ' , 'mod_coursework ' );
259
+ }
260
+ if (isset ($ data ['initialmarkingdeadline ' ]) && $ data ['initialmarkingdeadline ' ] != 0 && !empty ($ data ['deadline ' ])) {
261
+ if ($ data ['initialmarkingdeadline ' ] < $ data ['deadline ' ]) {
262
+ $ errors ['initialmarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
263
+ }
264
+ if ($ data ['deadline ' ] && $ data ['initialmarkingdeadline ' ] < $ data ['deadline ' ]) {
265
+ $ errors ['initialmarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
266
+ }
267
+ }
268
+
269
+ if (isset ($ data ['agreedgrademarkingdeadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] != 0 ) {
270
+ if (!empty ($ data ['deadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] < $ data ['deadline ' ]) {
271
+ $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
272
+ }
273
+ if ($ data ['agreedgrademarkingdeadline ' ] < $ data ['initialmarkingdeadline ' ]) {
274
+ $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_initial_grade_dealdine ' , 'mod_coursework ' );
275
+ }
276
+ if (!empty ($ data ['deadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] < $ data ['deadline ' ]) {
277
+ $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
278
+ }
279
+ if ($ data ['agreedgrademarkingdeadline ' ] < $ data ['initialmarkingdeadline ' ]) {
280
+ $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_initial_grade_dealdine ' , 'mod_coursework ' );
281
+ }
282
+ }
283
+ return $ errors ;
284
+ }
285
+
246
286
/**
247
287
* We can't do this with $mform->addRule() because the compare function works with the raw form values, which is
248
288
* an array of date components. Here, Moodle's internals have processed those values into a Unix timestamp, so the
@@ -254,50 +294,19 @@ public function set_data($default_values) {
254
294
*/
255
295
public function validation ($ data , $ files ) {
256
296
257
- $ errors = array ();
258
-
259
- if ($ data ['startdate ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['startdate ' ] > $ data ['deadline ' ]){
260
- $ errors ['startdate ' ] = get_string ('must_be_before_dealdine ' , 'mod_coursework ' );
261
- }
297
+ $ errors = self ::validate_availability_section_data ($ data , $ files );
262
298
263
299
if ($ data ['individualfeedback ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['individualfeedback ' ] < $ data ['deadline ' ]) {
264
300
$ errors ['individualfeedback ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
265
301
}
266
-
267
302
if ($ data ['generalfeedback ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['generalfeedback ' ] < $ data ['deadline ' ]) {
268
303
$ errors ['generalfeedback ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
269
304
}
270
-
271
- if (isset ($ data ['initialmarkingdeadline ' ]) && $ data ['initialmarkingdeadline ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['initialmarkingdeadline ' ] < $ data ['deadline ' ]){
272
- $ errors ['initialmarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
273
- }
274
-
275
- if (isset ($ data ['agreedgrademarkingdeadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] < $ data ['deadline ' ]){
276
- $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
277
- }
278
-
279
- if (isset ($ data ['agreedgrademarkingdeadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] != 0 && $ data ['agreedgrademarkingdeadline ' ] < $ data ['initialmarkingdeadline ' ] ){
280
- $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_initial_grade_dealdine ' , 'mod_coursework ' );
281
- }
282
-
283
- if (isset ($ data ['initialmarkingdeadline ' ]) && $ data ['initialmarkingdeadline ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['deadline ' ] && $ data ['initialmarkingdeadline ' ] < $ data ['deadline ' ]){
284
- $ errors ['initialmarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
285
- }
286
-
287
- if (isset ($ data ['agreedgrademarkingdeadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] != 0 && !empty ($ data ['deadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] < $ data ['deadline ' ]){
288
- $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_dealdine ' , 'mod_coursework ' );
289
- }
290
-
291
- if (isset ($ data ['agreedgrademarkingdeadline ' ]) && $ data ['agreedgrademarkingdeadline ' ] != 0 && $ data ['agreedgrademarkingdeadline ' ] < $ data ['initialmarkingdeadline ' ] ){
292
- $ errors ['agreedgrademarkingdeadline ' ] = get_string ('must_be_after_initial_grade_dealdine ' , 'mod_coursework ' );
293
- }
294
-
295
305
if (isset ($ data ['relativeagreedmarkingdeadline ' ]) && $ data ['relativeagreedmarkingdeadline ' ] != 0 && $ data ['relativeagreedmarkingdeadline ' ] < $ data ['relativeinitialmarkingdeadline ' ] ) {
296
306
$ errors ['relativeagreedmarkingdeadline ' ] = get_string ('must_be_after_or_equal_to_relative_initial_grade_dealdine ' , 'mod_coursework ' );
297
307
298
308
}
299
309
300
-
301
310
$ courseworkid = self ::get_coursework_id ();
302
311
if ($ courseworkid ) {
303
312
$ coursework = mod_coursework \models \coursework::find ($ courseworkid );
0 commit comments