MDL-64010 badges: Validate URL form fields.
authorAdrian Greeve <abgreeve@gmail.com>
Fri, 16 Nov 2018 02:23:00 +0000 (10:23 +0800)
committerAdrian Greeve <abgreeve@gmail.com>
Fri, 16 Nov 2018 02:28:09 +0000 (10:28 +0800)
badges/competency_form.php
badges/edit_form.php
badges/endorsement_form.php

index 7150eb9..64557fa 100644 (file)
@@ -76,4 +76,19 @@ class competency_alignment_form extends moodleform {
             }
         }
     }
+
+    /**
+     * Validate the data from the form.
+     *
+     * @param  array $data form data
+     * @param  array $files form files
+     * @return array An array of error messages.
+     */
+    public function validation($data, $files) {
+        $errors = parent::validation($data, $files);
+        if (!empty($data['targeturl']) && !preg_match('@^https?://.+@', $data['targeturl'])) {
+            $errors['targeturl'] = get_string('invalidurl', 'badges');
+        }
+        return $errors;
+    }
 }
\ No newline at end of file
index c21bf5a..4343985 100644 (file)
@@ -211,6 +211,10 @@ class edit_details_form extends moodleform {
             $errors['name'] = get_string('error:duplicatename', 'badges');
         }
 
+        if ($data['imageauthorurl'] && !preg_match('@^https?://.+@', $data['imageauthorurl'])) {
+            $errors['imageauthorurl'] = get_string('invalidurl', 'badges');
+        }
+
         return $errors;
     }
 }
index f4bc231..532420d 100644 (file)
@@ -86,6 +86,12 @@ class endorsement_form extends moodleform {
         if ($data['issueremail'] && !validate_email($data['issueremail'])) {
             $errors['issueremail'] = get_string('invalidemail');
         }
+        if ($data['issuerurl'] && !preg_match('@^https?://.+@', $data['issuerurl'])) {
+            $errors['issuerurl'] = get_string('invalidurl', 'badges');
+        }
+        if ($data['claimid'] && !preg_match('@^https?://.+@', $data['claimid'])) {
+            $errors['claimid'] = get_string('invalidurl', 'badges');
+        }
         return $errors;
     }
 }
\ No newline at end of file