. */ namespace SP\Core; use SP\Core\Context\ContextInterface; use SP\Core\Events\EventDispatcher; use SP\Domain\Config\In\ConfigDataInterface; use SP\Domain\Config\Services\ConfigFileService; /** * Class ModuleBase * * @package SP\Core */ abstract class ModuleBase { protected ConfigFileService $config; protected ConfigDataInterface $configData; protected ContextInterface $context; private EventDispatcher $eventDispatcher; private ProvidersHelper $providersHelper; /** * Module constructor. * * @param \SP\Core\Application $application * @param \SP\Core\ProvidersHelper $providersHelper */ public function __construct(Application $application, ProvidersHelper $providersHelper) { $this->config = $application->getConfig(); $this->configData = $this->config->getConfigData(); $this->context = $application->getContext(); $this->eventDispatcher = $application->getEventDispatcher(); $this->providersHelper = $providersHelper; } abstract public function initialize(string $controller): void; /** * Initializes event handlers */ protected function initEventHandlers(bool $partialInit = false): void { if (DEBUG || $this->configData->isDebug()) { $this->eventDispatcher->attach($this->providersHelper->getFileLogHandler()); } if ($partialInit) { 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()); } }