Exemple #1
0
 /**
  * Adds an input element to the complete form
  *
  * @param stdClass $item
  * @param mod_feedback_complete_form $form
  */
 public function complete_form_element($item, $form)
 {
     $name = $this->get_display_name($item);
     $inputname = $item->typ . '_' . $item->id;
     if ($form->get_mode() != mod_feedback_complete_form::MODE_COMPLETE) {
         $form->add_form_element($item, ['static', $inputname, $name], false, false);
     } else {
         $form->add_form_element($item, ['recaptcha', $inputname, $name], false, false);
     }
     // Add recaptcha validation to the form.
     $form->add_validation_rule(function ($values, $files) use($item, $form) {
         $elementname = $item->typ . '_' . $item->id;
         $recaptchaelement = $form->get_form_element($elementname);
         if (empty($values['recaptcha_response_field'])) {
             return array($elementname => get_string('required'));
         } else {
             if (!empty($values['recaptcha_challenge_field'])) {
                 $challengefield = $values['recaptcha_challenge_field'];
                 $responsefield = $values['recaptcha_response_field'];
                 if (true !== ($result = $recaptchaelement->verify($challengefield, $responsefield))) {
                     return array($elementname => $result);
                 }
             } else {
                 return array($elementname => get_string('missingrecaptchachallengefield'));
             }
         }
         return true;
     });
 }