@@ -175,12 +175,17 @@ public function definition() {
175175
176176 $ mform ->addElement ('text ' , 'grademaxgrade ' , get_string ('modgrademaxgrade ' , 'grades ' ));
177177 $ mform ->setType ('grademaxgrade ' , PARAM_INT );
178- $ mform ->addRule ('grademaxgrade ' , get_string ('grademaxgradeerror ' , 'moodleoverflow ' ), 'regex ' , '/^[0-9]+ $/ ' , 'client ' );
178+ $ mform ->addRule ('grademaxgrade ' , get_string ('grademaxgradeerror ' , 'moodleoverflow ' ), 'regex ' , '/^[1-9][ 0-9]* $/ ' , 'client ' );
179179
180180 $ mform ->addElement ('text ' , 'gradescalefactor ' , get_string ('scalefactor ' , 'moodleoverflow ' ));
181181 $ mform ->addHelpButton ('gradescalefactor ' , 'scalefactor ' , 'moodleoverflow ' );
182182 $ mform ->setType ('gradescalefactor ' , PARAM_INT );
183- $ mform ->addRule ('gradescalefactor ' , get_string ('scalefactorerror ' , 'moodleoverflow ' ), 'regex ' , '/^[0-9]+$/ ' , 'client ' );
183+ $ mform ->addRule ('gradescalefactor ' , get_string ('scalefactorerror ' , 'moodleoverflow ' ), 'regex ' , '/^[1-9][0-9]*$/ ' , 'client ' );
184+
185+ $ mform ->addElement ('text ' , 'gradepass ' , get_string ('gradepass ' , 'grades ' ));
186+ $ mform ->addHelpButton ('gradepass ' , 'gradepass ' , 'grades ' );
187+ $ mform ->setType ('gradepass ' , PARAM_INT );
188+ $ mform ->addRule ('gradepass ' , get_string ('gradepasserror ' , 'moodleoverflow ' ), 'regex ' , '/^(0|[1-9][0-9]*)$/ ' , 'client ' );
184189
185190 if ($ this ->_features ->gradecat ) {
186191 $ mform ->addElement (
@@ -299,6 +304,18 @@ public function data_postprocessing($data) {
299304 }
300305 }
301306
307+ /**
308+ * Handles data preprocessing.
309+ * @param array $defaultvalues
310+ * @return void
311+ */
312+ public function data_preprocessing (&$ defaultvalues ) {
313+ parent ::data_preprocessing ($ defaultvalues );
314+ if (isset ($ defaultvalues ['gradepass ' ])) {
315+ $ defaultvalues ['gradepass ' ] = (int )$ defaultvalues ['gradepass ' ];
316+ }
317+ }
318+
302319 /**
303320 * Validates set data in mod_form
304321 * @param array $data
@@ -309,6 +326,11 @@ public function data_postprocessing($data) {
309326 public function validation ($ data , $ files ): array {
310327 $ errors = parent ::validation ($ data , $ files );
311328
329+ // Validate the grade settings.
330+ if (isset ($ data ['gradepass ' ]) && isset ($ data ['grademaxgrade ' ]) && $ data ['gradepass ' ] > $ data ['grademaxgrade ' ]) {
331+ $ errors ['gradepass ' ] = get_string ('gradepassvalidationerror ' , 'moodleoverflow ' );
332+ }
333+
312334 // Validate that the limited answer settings.
313335 $ currenttime = time ();
314336 $ isstarttime = !empty ($ data ['la_starttime ' ]);
0 commit comments