. /** * A script to display a ReCaptcha for the site. * * ReCaptcha V2 is restricted by domain, so it cannot be displayed in mobile and desktop apps. * * This script will display and initialize the reCaptcha, setting some empty callbacks by default. The client can override * those Javascript callbacks (in the "window" object). * * This script won't work in mobile and desktop apps unless $CFG->allowframembedding is enabled. * * @package core_webservice * @copyright 2018 Dani Palou * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define('NO_MOODLE_COOKIES', true); require_once(__DIR__ . '/../config.php'); $lang = optional_param('lang', '', PARAM_LANG); $content = ''; // Check that reCAPTCHA is configured. if (!empty($CFG->recaptchapublickey) && !empty($CFG->recaptchaprivatekey)) { require_once($CFG->libdir . '/recaptchalib_v2.php'); $apiurl = RECAPTCHA_API_URL; $pubkey = $CFG->recaptchapublickey; $jscode = " // Create empty callbacks by default. They can be overridden by the client. var recaptchacallback = function() {}; var recaptchaexpiredcallback = function() {}; var recaptchaerrorcallback = function() {}; var recaptchaloaded = function() { grecaptcha.render('recaptcha_element', { 'sitekey' : '$pubkey', 'callback' : 'recaptchacallback', 'expired-callback' : 'recaptchaexpiredcallback', 'error-callback' : 'recaptchaerrorcallback' }); }"; $lang = recaptcha_lang($lang); $apicode = "\n\n"; $content = html_writer::script($jscode, ''); $content .= html_writer::div('', 'recaptcha_element', array('id' => 'recaptcha_element')); $content .= $apicode; } else { // To use reCAPTCHA you must have an API key. require_once($CFG->libdir . '/filelib.php'); send_header_404(); print_error('cannotusepage2'); } $output = << $content OET; echo $output;