JezK
Edit File: Captcha.php
<?php namespace GeminiLabs\SiteReviews\Modules; use GeminiLabs\SiteReviews\Helper; use GeminiLabs\SiteReviews\Modules\Html\Builder; class Captcha { public function actions(): array { return glsr()->filterArray('captcha/actions', [ 'submit-review', ]); } public function config(): array { if (!$this->isEnabled()) { return []; } $integration = (string) glsr_get_option('forms.captcha.integration'); $className = Helper::buildClassName([$integration, 'validator'], 'Modules\Validator'); if (!class_exists($className)) { return []; } return glsr($className)->config(); } public function container(): string { if (!$this->isEnabled()) { return ''; } return glsr(Builder::class)->div([ 'class' => 'glsr-captcha-holder', ]); } public function token(): string { $config = $this->config(); return (string) Helper::filterInput($config['token_field'] ?? ''); } public function isEnabled(string $service = ''): bool { $integration = glsr_get_option('forms.captcha.integration'); $usage = glsr_get_option('forms.captcha.usage'); $isEnabled = 'all' === $usage || ('guest' === $usage && !is_user_logged_in()); if (!empty($service)) { return $integration === $service && $isEnabled; } return !empty($integration) && $isEnabled; } public function position(): string { $integration = glsr_get_option('forms.captcha.integration'); if (str_starts_with($integration, 'recaptcha')) { return glsr_get_option('settings.forms.captcha.badge', 'bottomleft', 'string'); } return glsr_get_option('settings.forms.captcha.placement', 'below', 'string'); } }