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;
}
}
}