. */ namespace SP\Core; use SP\Domain\Config\Ports\ConfigDataInterface; use SP\Domain\Config\Services\ConfigFile; use SP\Domain\Core\Bootstrap\ModuleInterface; use SP\Domain\Core\Context\Context; use SP\Domain\Core\Events\EventDispatcherInterface; /** * Class ModuleBase */ abstract class ModuleBase implements ModuleInterface { protected ConfigFile $config; protected ConfigDataInterface $configData; protected Context $context; private EventDispatcherInterface $eventDispatcher; /** * Module constructor. * * @param Application $application * @param ProvidersHelper $providersHelper */ public function __construct(Application $application, private readonly ProvidersHelper $providersHelper) { $this->config = $application->getConfig(); $this->configData = $this->config->getConfigData(); $this->context = $application->getContext(); $this->eventDispatcher = $application->getEventDispatcher(); } /** * Initializes event handlers */ protected function initEventHandlers(bool $partialInit = false): void { if (DEBUG || $this->configData->isDebug() || !$this->configData->isInstalled()) { $this->eventDispatcher->attach($this->providersHelper->getFileLogHandler()); } if ($partialInit || !$this->configData->isInstalled()) { return; } if ($this->configData->isLogEnabled()) { $this->eventDispatcher->attach($this->providersHelper->getDatabaseLogHandler()); } if ($this->configData->isMailEnabled()) { $this->eventDispatcher->attach($this->providersHelper->getMailHandler()); } if ($this->configData->isSyslogEnabled()) { $this->eventDispatcher->attach($this->providersHelper->getSyslogHandler()); } if ($this->configData->isSyslogRemoteEnabled()) { $this->eventDispatcher->attach($this->providersHelper->getRemoteSyslogHandler()); } $this->eventDispatcher->attach($this->providersHelper->getAclHandler()); $this->eventDispatcher->attach($this->providersHelper->getNotificationHandler()); } protected function checkUpgradeNeeded(): bool { return false; } }