У меня есть системная капча в моей контактной форме, которая отлично работает сама по себе.
Следуя этому: https://github.com/concrete5/concrete5/issues/2088 — все работает нормально Но после этого: https://www.concrete5.org/documentation/developers/5.7/packages/adding-custom-code-to-packages/ — не работает. Вот мои файлы:
Пакеты / my_package / controller.php:
<?php
namespace Concrete\Package\MyPackage;
use Package;
use BlockType;
defined('C5_EXECUTE') or die(_("Access Denied."));
class Controller extends Package {
protected $pkgHandle = 'my_package';
protected $appVersionRequired = '5.7.1';
protected $pkgVersion = '0.1';
protected $pkgAutoloaderMapCoreExtensions = true;
public function getPackageDescription() {
return t('Contact Form');
}
public function getPackageName() {
return t("Contact Form");
}
public function install() {
$pkg = parent::install();
BlockType::installBlockTypeFromPackage('my_package', $pkg);
}
}
Пакеты / my_package / SRC / Бетон / Защитный код / MySecurimageController.php:
<?php
namespace Concrete\Package\MyPackage\Captcha;
use Securimage;
use Securimage_Color;
class SecurimageController extends \Concrete\Core\Captcha\SecurimageController
{
protected $securimage;
public function __construct()
{
$this->securimage = new Securimage();
$this->securimage->image_width = 237;
$this->securimage->image_height = 60;
$this->securimage->image_bg_color = new Securimage_Color('#F0F0F0');
$this->securimage->line_color = new Securimage_Color('#333333');
$this->securimage->use_multi_text = true;
$this->securimage->multi_text_color = array(
new Securimage_Color('#FF0000'),
new Securimage_Color('#0000FF'),
new Securimage_Color('#333333')
);
$this->securimage->text_color = new Securimage_Color('#FF0000');
$this->securimage->use_transparent_text = true;
$this->securimage->text_transparency_percentage = 50;
$this->securimage->image_signature = 'MY_DOMAIN';
$this->securimage->signature_color = new Securimage_Color('#333333');
$this->securimage->code_length = rand(4, 6);
$this->securimage->num_lines = rand(3, 10);
}
}
Пакеты / my_package / блоки / my_package / controller.php:
$captcha = Loader::helper('validation/captcha');
if (!$captcha->check('code')) {
$this->errors['code'] = $this->error_code;
}
Пакеты / my_package / блоки / my_package / view.php:
<?php
$captcha = Loader::helper('validation/captcha');
$captcha->display();
?>
<input type="text" id="code" name="code" value="<?php echo $code; ?>" maxlength="6" />
Что мне не хватает?
Большое спасибо.
Задача ещё не решена.
Других решений пока нет …