@@ -232,10 +232,10 @@ public function definition() {
232
232
// Limited answer options.
233
233
$ mform ->addElement ('header ' , 'limitedanswerheading ' , get_string ('limitedanswerheading ' , 'moodleoverflow ' ));
234
234
235
+ $ answersfound = false ;
235
236
if (!empty ($ this ->current ->id )) {
236
237
237
238
$ limiteddate = $ DB ->get_record ('moodleoverflow ' , ['id ' => $ this ->current ->id ], 'la_starttime, la_endtime ' );
238
-
239
239
// Check if limitedanswermode was already set up and place a warning in case the starttime has already expired ...
240
240
// ... or the endtime has already expired.
241
241
@@ -247,23 +247,32 @@ public function definition() {
247
247
AND discuss.moodleoverflow = ' . $ this ->current ->id . '; ' ;
248
248
$ answerpostscount = $ DB ->get_records_sql ($ sql );
249
249
$ answerpostscount = $ answerpostscount [array_key_first ($ answerpostscount )]->answerposts ;
250
-
251
- if ($ answerpostscount > 0 ) {
250
+ $ answersfound = $ answerpostscount > 0 ;
251
+ if ($ answersfound ) {
252
252
$ warningstring = get_string ('limitedanswerwarning_answers ' , 'moodleoverflow ' );
253
253
$ warningstring .= '<br> ' . get_string ('limitedanswerwarning_conclusion ' , 'moodleoverflow ' );
254
254
$ htmlwarning = html_writer::div ($ warningstring , 'alert alert-warning ' , ['role ' => 'alert ' ]);
255
255
$ mform ->addElement ('html ' , $ htmlwarning );
256
256
}
257
257
}
258
258
259
- // Limited answer settings.
259
+ // Limited answer setting elements..
260
+ $ mform ->addElement ('hidden ' , 'la_answersfound ' , $ answersfound );
261
+ $ mform ->setType ('la_answersfound ' , PARAM_BOOL );
260
262
$ mform ->addElement ('date_time_selector ' , 'la_starttime ' , get_string ('la_starttime ' , 'moodleoverflow ' ),
261
263
['optional ' => true ]);
264
+ //$mform->setType('la_starttime', PARAM_INT);
262
265
$ mform ->addHelpButton ('la_starttime ' , 'la_starttime ' , 'moodleoverflow ' );
266
+ $ mform ->disabledIf ('la_starttime ' , 'la_answersfound ' , 'eq ' , true );
267
+
263
268
$ mform ->addElement ('date_time_selector ' , 'la_endtime ' , get_string ('la_endtime ' , 'moodleoverflow ' ),
264
269
['optional ' => true ]);
270
+ //$mform->setType('la_endtime', PARAM_INT);
265
271
$ mform ->addHelpButton ('la_endtime ' , 'la_endtime ' , 'moodleoverflow ' );
266
272
273
+ $ mform ->addElement ('hidden ' , 'la_error ' );
274
+ $ mform ->setType ('la_error ' , PARAM_TEXT );
275
+
267
276
// Add standard elements, common to all modules.
268
277
$ this ->standard_coursemodule_elements ();
269
278
@@ -284,4 +293,32 @@ public function data_postprocessing($data) {
284
293
$ data ->coursewidereputation = false ;
285
294
}
286
295
}
296
+
297
+ public function validation ($ data , $ files ) {
298
+ $ errors = parent ::validation ($ data , $ files );
299
+
300
+ // Validate that the limited answer settings.
301
+ $ currenttime = time ();
302
+ $ isstarttime = !empty ($ data ['la_starttime ' ]);
303
+ $ isendtime = !empty ($ data ['la_endtime ' ]);
304
+
305
+ if ($ isstarttime && $ data ['la_starttime ' ] < $ currenttime ) {
306
+ $ errors ['la_starttime ' ] = get_string ('la_starttime_ruleerror ' , 'moodleoverflow ' );
307
+ }
308
+ if ($ isendtime ) {
309
+ if ($ data ['la_endtime ' ] < $ currenttime ) {
310
+ $ errors ['la_endtime ' ] = get_string ('la_endtime_ruleerror ' , 'moodleoverflow ' );
311
+ }
312
+
313
+ if ($ isstarttime && $ data ['la_endtime ' ] <= $ data ['la_starttime ' ]) {
314
+ if (isset ($ errors ['la_endtime ' ])) {
315
+ $ errors ['la_endtime ' ] .= '<br> ' . get_string ('la_sequence_error ' , 'moodleoverflow ' );
316
+ } else {
317
+ $ errors ['la_endtime ' ] = get_string ('la_sequence_error ' , 'moodleoverflow ' );
318
+ }
319
+ }
320
+ }
321
+
322
+ return $ errors ;
323
+ }
287
324
}
0 commit comments