root/org.gnex.reCaptcha/files/lib/system/event/listener/ReCaptchaListener.class.php @ 1122

Revision 1122, 1.4 kB (checked in by Gnex, 3 years ago)
Line 
1<?php
2require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
3require_once(WCF_DIR.'lib/data/image/captcha/ReCaptcha.class.php');
4/**
5 * ReCaptcha-API
6 *
7 * @author      Tim Wittenberg
8 * @copyright   GneX
9 * @url GneX.org
10 * @license     GPL
11 */
12class ReCaptchaListener implements EventListener {
13        public $eventObj;
14       
15        /**
16         * @see EventListener::execute()
17         */
18        public function execute($eventObj, $className, $eventName) {
19    // break
20    if(!MODULE_RECAPTCHA || !RECAPTCHA_KEY_PUBLIC || !RECAPTCHA_KEY_PRIVATE || !isset($eventObj->useCaptcha) || !$eventObj->useCaptcha) {
21      return;
22    }
23   
24    // completely disable parent handler
25    $eventObj->useCaptcha = false;
26   
27    // bind
28    $this->eventObj = $eventObj;
29   
30    // call our handler, if method is implemented
31    if(method_exists($this, $eventName)) {
32      $this->$eventName();
33    }
34  }
35 
36        public function readData() {
37          ###
38        }
39 
40        public function validate() {
41          $this->eventObj->captcha = new ReCaptcha($this->eventObj->captchaID);
42    $this->eventObj->captcha->validate($_SERVER['REMOTE_ADDR'], $_REQUEST['recaptcha_challenge_field'], $_REQUEST['recaptcha_response_field']);
43        }
44 
45        public function assignVariables() {
46    $this->eventObj->captchaID = ReCaptcha::create();
47    $this->eventObj->captcha = new ReCaptcha($this->eventObj->captchaID);
48          WCF::getTPL()->assign('captcha', $this->eventObj->captcha->getCode());
49        }
50}
51?>
Note: See TracBrowser for help on using the browser.