From db3cb85d0992dd49ca2fdf33ea35c0cad60e312f Mon Sep 17 00:00:00 2001
From: Luke Shumaker <LukeShu@sbcglobal.net>
Date: Thu, 22 Sep 2011 23:26:59 -0400
Subject: Implement ReCaptcha entirely as a plugin, remove all of the ugliness
 from my old implementation.

---
 src/plugins/ReCaptcha.class.php | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

(limited to 'src/plugins')

diff --git a/src/plugins/ReCaptcha.class.php b/src/plugins/ReCaptcha.class.php
index c25147f..165493b 100644
--- a/src/plugins/ReCaptcha.class.php
+++ b/src/plugins/ReCaptcha.class.php
@@ -1,4 +1,6 @@
 <?php
+// We only include the recaptchalib.php file when we use it because we don't
+// want it polluting the global namespace thing.
 
 class ReCaptcha extends Plugin {
 	protected $config = array('public_key'=>'',
@@ -11,4 +13,35 @@ class ReCaptcha extends Plugin {
 		             'private_key'=>'text');
 	}
 	public function init() {}
+
+	private $resp = null;
+	private function getResp() {
+		if ($this->resp===null) {
+			require_once('recaptchalib.php');
+			@$response = $_POST['recaptcha_response_field'];
+			@$challenge = $_POST['recaptcha_challenge_field'];
+			$this->resp = recaptcha_check_answer($this->config['private_key'],
+			                                     $_SERVER['REMOTE_ADDR'],
+			                                     $challenge,
+			                                     $response);
+		}
+		return $this->resp;
+	}
+
+	private function getError() {
+		if ($_POST["recaptcha_response_field"] && !$this->antispam_verify()) {
+			return $this->getResp()->error;
+		} else {
+			return false;
+		}
+	}
+
+	public function antispam_verify() {
+		return $this->getResp()->is_valid;
+	}
+	
+	public function antispam_html() {
+		require_once('recaptchalib.php');
+		return recaptcha_get_html($this->config['public_key'], $this->getError());
+	}
 }
-- 
cgit v1.2.3-2-g168b