public function get_name(): retourne le nom du Captcha.
public function is_available(): permet de réaliser des tests afin de déterminer si le Captcha est disponible, utile s'il utilise une librairie distante par exemple. Mettre
true
s'il n'y a pas besoin de faire de test de disponibilité.
public function is_valid(): permet de vérifier la validité du Captcha.
public function display(): permet d'afficher le Captcha.
<?php /** * @copyright © 2005-2022 PHPBoost * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0 * @author Prénom NOM <pseudonyme@site.ext> * @version PHPBoost 6.0 - last update: 2022 11 18 * @since PHPBoost 6.0 - 2022 11 18 * @contributor Prénom NOM <pseudonyme@site.ext> */ class QuestionCaptcha extends Captcha { private static $questions; public static function __static() { self::$questions = QuestionCaptchaConfig::load()->get_questions(); } public function get_name() { return 'QuestionCaptcha'; } public function is_available() { return true; } public function is_valid() { if (!$this->is_available() || AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) { return true; } $answer = AppContext::get_request()->get_value($this->get_html_id(), ''); $question_id = AppContext::get_request()->get_int($this->get_html_id() . '_question_id', 0); if (!empty($question_id)) { $question = new QuestionCaptchaQuestion(); $question->set_properties(self::$questions[$question_id]); return in_array(trim(strtolower($answer)), $question->get_formated_answers()); } return false; } public function display() { $question_id = array_rand(self::$questions); //Question aléatoire $question = new QuestionCaptchaQuestion(); $question->set_properties(self::$questions[$question_id]); $tpl = new FileTemplate('QuestionCaptcha/QuestionCaptcha.tpl'); $tpl->put_all(array( 'QUESTION_ID' => $question_id, 'QUESTION' => $question->get_label(), 'HTML_ID' => $this->get_html_id() )); return $tpl->render(); } } ?>
captcha()qui va retourner la classe principale de votre module.
<?php /** * @copyright © 2005-2022 PHPBoost * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0 * @author Prénom NOM <pseudonyme@site.ext> * @version PHPBoost 6.0 - last update: 2022 11 18 * @since PHPBoost 6.0 - 2022 11 18 * @contributor Prénom NOM <pseudonyme@site.ext> */ class QuestionCaptchaExtensionPointProvider extends ExtensionPointProvider { public function __construct() { parent::__construct('QuestionCaptcha'); } public function captcha() { return new QuestionCaptcha(); } public function css_files() { $module_css_files = new ModuleCssFiles(); $module_css_files->adding_running_module_displayed_file('QuestionCaptcha.css'); return $module_css_files; } public function url_mappings() { return new UrlMappings(array(new DispatcherUrlMapping('/QuestionCaptcha/index.php'))); } } ?>