summaryrefslogtreecommitdiff
path: root/extensions/ConfirmEdit/HTMLCaptchaField.php
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/ConfirmEdit/HTMLCaptchaField.php')
-rw-r--r--extensions/ConfirmEdit/HTMLCaptchaField.php81
1 files changed, 81 insertions, 0 deletions
diff --git a/extensions/ConfirmEdit/HTMLCaptchaField.php b/extensions/ConfirmEdit/HTMLCaptchaField.php
new file mode 100644
index 00000000..c069ce9e
--- /dev/null
+++ b/extensions/ConfirmEdit/HTMLCaptchaField.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * HTMLFormField for inserting Captchas into a form.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @class
+ */
+class HTMLCaptchaField extends HTMLFormField {
+ /**
+ * @var Captcha
+ */
+ private $captcha;
+
+ public $prefix = '';
+
+ /**
+ * @var Bool|Array
+ */
+ private $validationResult;
+
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ // For differentiating the type of form, mainly
+ if ( isset( $params['prefix'] ) ) {
+ $this->prefix = $params['prefix'];
+ }
+ }
+
+ /**
+ * Get the captcha body. Don't include any of the surrounding table cells/rows
+ *
+ * @param $value String
+ * @return String
+ */
+ public function getInputHTML( $value ) {
+ # TODO
+ }
+
+ public function validate( $data, $alldata ) {
+ // We sent back the exists status of the captcha before. If it *doesn't* exist
+ // we actually want to validate this as true, because we don't want an angry red
+ // error message, just for the user to put the captcha in again
+ if ( $data === false ) {
+ return true;
+ }
+ }
+
+ /**
+ * @param $request WebRequest
+ * @return void
+ */
+ public function loadDataFromRequest( $request ) {
+ $this->captcha = Captcha::factory();
+ $this->captcha->loadFromRequest( $request, $this );
+ if ( !$this->captcha->exists() ) {
+ // The captcha doesn't exist; probably because it's already been used and
+ // then deleted for security. Load the field up with a new captcha which
+ // will be shown to the user when the validation of said new object fails
+ $this->captcha = Captcha::newRandom();
+ }
+
+ // This will be useful as the difference between "the captcha doesn't exist" and
+ // "you answered the captcha wrongly"
+ return $this->captcha->exists();
+ }
+}