/** * 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; }); }
/** * Adds an input element to the complete form * * @param stdClass $item * @param mod_feedback_complete_form $form */ public function complete_form_element($item, $form) { if ($form->get_mode() == mod_feedback_complete_form::MODE_VIEW_RESPONSE) { $value = strval($form->get_item_value($item)); } else { $value = $this->get_current_value($item, $form->get_feedback(), $form->get_current_course_id()); } $printval = $this->get_printval($item, (object) ['value' => $value]); $class = ''; switch ($item->presentation) { case self::MODE_RESPONSETIME: $class = 'info-responsetime'; $value = $value ? self::CURRENTTIMESTAMP : ''; break; case self::MODE_COURSE: $class = 'info-course'; break; case self::MODE_CATEGORY: $class = 'info-category'; break; } $name = $this->get_display_name($item); $inputname = $item->typ . '_' . $item->id; $element = $form->add_form_element($item, ['select', $inputname, $name, array($value => $printval), array('class' => $class)], false, false); $form->set_element_default($inputname, $value); $element->freeze(); if ($form->get_mode() == mod_feedback_complete_form::MODE_COMPLETE) { $element->setPersistantFreeze(true); } }