/phpmyfaq/src/phpMyFAQ/Helper/CaptchaHelper.php
PHP | 88 lines | 47 code | 8 blank | 33 comment | 2 complexity | 31edf784ad1455049ee92542d6d112c6 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-2.1, LGPL-3.0
- <?php
- /**
- * Helper class for the default phpMyFAQ captcha.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public License,
- * v. 2.0. If a copy of the MPL was not distributed with this file, You can
- * obtain one at http://mozilla.org/MPL/2.0/.
- *
- * @package phpMyFAQ
- * @author Thorsten Rinne <thorsten@phpmyfaq.de>
- * @copyright 2010-2021 phpMyFAQ Team
- * @license http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
- * @link https://www.phpmyfaq.de
- * @since 2010-01-11
- */
- namespace phpMyFAQ\Helper;
- use phpMyFAQ\Captcha;
- use phpMyFAQ\Configuration;
- use phpMyFAQ\Helper;
- /**
- * Class CaptchaHelper
- *
- * @package phpMyFAQ\Helper
- */
- class CaptchaHelper extends Helper
- {
- private const FORM_ID = 'captcha';
- private const FORM_BUTTON = 'captcha-button';
- /**
- * Constructor.
- *
- * @param Configuration $config
- */
- public function __construct(Configuration $config)
- {
- $this->config = $config;
- }
- /**
- * Renders the captcha check.
- *
- * @param Captcha $captcha
- * @param string $action
- * @param string $legend
- * @param bool $auth
- * @return string
- */
- public function renderCaptcha(Captcha $captcha, string $action, string $legend, $auth = false): string
- {
- $html = '';
- if (true === $this->config->get('spam.enableCaptchaCode') && is_null($auth)) {
- $html .= '<div class="form-group row">';
- $html .= sprintf('<label class="col-sm-3 col-form-label">%s</label>', $legend);
- $html .= ' <div class="col-sm-4">';
- $html .= ' <p class="form-control-static">';
- $html .= $captcha->renderCaptchaImage($action);
- $html .= ' </p>';
- $html .= ' </div>';
- $html .= ' <div class="col-sm-5">';
- $html .= ' <div class="input-group">';
- $html .= sprintf(
- '<input type="text" class="form-control" name="%s" id="%s" size="%d" autocomplete="off" required>',
- self::FORM_ID,
- self::FORM_ID,
- $captcha->captchaLength
- );
- $html .= ' <span class="input-group-btn">';
- $html .= sprintf(
- '<a class="btn btn-primary" id="%s" data-action="%s">' .
- '<i aria-hidden="true" class="fa fa-refresh"></i></a>',
- self::FORM_BUTTON,
- $action
- );
- $html .= ' </span>';
- $html .= ' </div>';
- $html .= ' </div>';
- $html .= '</div>';
- }
- return $html;
- }
- }