<?php
declare(strict_types=1);
namespace Hofff\Contao\Consent\Core\ContentElement;
use Contao\ContentModel;
use Contao\Database\Result;
use Contao\Model;
use Hofff\Contao\Consent\Bridge\ConsentToolManager;
use Netzmacht\Contao\Toolkit\Component\Component;
use Netzmacht\Contao\Toolkit\Component\ComponentFactory;
use Netzmacht\Contao\Toolkit\Routing\RequestScopeMatcher;
use Symfony\Component\Templating\EngineInterface;
/** @internal */
final class PrivacySettingsElementFactory implements ComponentFactory
{
/** @var EngineInterface */
private $templateEngine;
/** @var RequestScopeMatcher */
private $scopeMatcher;
/** @var ConsentToolManager */
private $consentToolManager;
public function __construct(
EngineInterface $templateEngine,
RequestScopeMatcher $scopeMatcher,
ConsentToolManager $consentToolManager
) {
$this->templateEngine = $templateEngine;
$this->scopeMatcher = $scopeMatcher;
$this->consentToolManager = $consentToolManager;
}
/** @param Model|Result $model */
public function supports($model): bool
{
if (! $model instanceof Result && ! $model instanceof ContentModel) {
return false;
}
return $model->type === 'hofff_consent_privacy_settings';
}
/** @param Model|Result $model */
public function create($model, string $column): Component
{
return new PrivacySettingsElement(
$model,
$this->templateEngine,
$this->scopeMatcher,
$this->consentToolManager,
$column
);
}
}