<?php
declare(strict_types=1);
namespace Hofff\Contao\Consent\Core\ContentElement;
use Contao\BackendTemplate;
use Contao\Database\Result;
use Contao\Model;
use Hofff\Contao\Consent\Bridge\ConsentToolManager;
use Hofff\Contao\Consent\Core\ConsentBridge\HofffConsentTool;
use Hofff\Contao\Consent\Core\Tag\Root;
use Netzmacht\Contao\Toolkit\Component\ContentElement\AbstractContentElement;
use Netzmacht\Contao\Toolkit\Routing\RequestScopeMatcher;
use Patchwork\Utf8;
use Symfony\Component\Templating\EngineInterface as TemplateEngine;
/** @internal */
final class PrivacySettingsElement extends AbstractContentElement
{
/** @var string */
protected $templateName = 'ce_hofff_consent_privacy_settings';
/** @var RequestScopeMatcher */
private $scopeMatcher;
/** @var ConsentToolManager */
private $consentToolManager;
/** @var Root|null */
private $rootTag;
/** @param Model|Result $model */
public function __construct(
$model,
TemplateEngine $templateEngine,
RequestScopeMatcher $scopeMatcher,
ConsentToolManager $consentToolManager,
string $column = 'main'
) {
parent::__construct($model, $templateEngine, $column);
$this->scopeMatcher = $scopeMatcher;
$this->consentToolManager = $consentToolManager;
}
public function generate(): string
{
if ($this->scopeMatcher->isBackendRequest()) {
$template = new BackendTemplate('be_wildcard');
$template->wildcard = '### '
. Utf8::strtoupper($GLOBALS['TL_LANG']['CTE']['hofff_consent_privacy_settings'][0])
. ' ###';
$template->title = $this->get('headline');
$template->id = $this->get('id');
return $template->parse();
}
$consentTool = $this->consentToolManager->activeConsentTool();
if (! $consentTool instanceof HofffConsentTool) {
return '';
}
$this->rootTag = $consentTool->rootTag();
return parent::generate();
}
/** {@inheritDoc} */
protected function prepareTemplateData(array $data): array
{
$data = parent::prepareTemplateData($data);
$data['tag'] = $this->rootTag;
return $data;
}
}