createOption('publicKey', 'reCAPTCHA Public Key', 'text', ''); $this->createOption('privateKey', 'reCAPTCHA Private Key', 'text', ''); $this->createOption('debug', 'Debug mode ?', 'yesno', 'no'); } function init() { // include language file for this plugin $language = ereg_replace( '[\\|/]', '', getLanguageName()); if (file_exists($this->getDirectory().'language/'.$language.'.php')) @include_once($this->getDirectory().'language/'.$language.'.php'); } function _info($msg) { if ($this->getOption('debug') == 'yes') { ACTIONLOG :: add(INFO, 'ReCaptchaJP: '.$msg); } } function _warn($msg) { ACTIONLOG :: add(WARNING, 'ReCaptchaJP: '.$msg); } function event_FormExtra(&$data) { global $manager, $member; if ($member->isLoggedIn()) return; switch ($data['type']) { case 'commentform-notloggedin' : case 'membermailform-notloggedin': break; default : return; } $externalauth = array ( 'source' => $this->getName() ); $manager->notify('ExternalAuth', array ('externalauth' => &$externalauth)); if (isset($externalauth['result']) && $externalauth['result'] == true) return; $publicKey = $this->getOption('publicKey'); if( ! $publicKey ){ $this->_warn('reCAPTCHA Public Key is not set.'); echo 'reCAPTCHA Public Key is not set.'; return; } switch ($data['type']) { case 'membermailform-notloggedin' : case 'commentform-notloggedin' : echo ''; echo ""; echo _RECAPTCHAJP_header; echo recaptcha_get_html($publicKey, $this->error); break; } } function event_ValidateForm(&$data) { global $manager, $member; if ($member->isLoggedIn()) return; $externalauth = array ( 'source' => $this->getName() ); $manager->notify('ExternalAuth', array ('externalauth' => &$externalauth)); if (isset($externalauth['result']) && $externalauth['result'] == true) return; $privateKey = $this->getOption('privateKey'); if ($_POST["recaptcha_response_field"]) { $resp = recaptcha_check_answer ($privateKey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if ($resp->is_valid) { // OK } else { $data['error'] = _RECAPTCHAJP_failedMessage . '(' . $resp->error . ')'; $this->_info(_RECAPTCHAJP_failedMessage . ' (' . $resp->error . ')' ); } } else { $data['error'] = _RECAPTCHAJP_nullMessage; } } }