add EventManager and Subscription
This commit is contained in:
@@ -53,3 +53,22 @@ Events::on('pre_system', static function (): void {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* --------------------------------------------------------------------
|
||||
* Module Events Registration
|
||||
* --------------------------------------------------------------------
|
||||
* Здесь можно регистрировать события модулей с проверкой подписок.
|
||||
* Для подписки на события с проверкой статуса модуля используйте:
|
||||
*
|
||||
* $em = service('eventManager');
|
||||
* $em->forModule('crm')->moduleOn('user.created', function($user) {
|
||||
* // Этот код выполнится только если модуль CRM активен
|
||||
* });
|
||||
*
|
||||
* Для системных событий без проверки:
|
||||
*
|
||||
* $em->systemOn('db.query', function($query) {
|
||||
* // Этот код выполнится всегда
|
||||
* });
|
||||
*/
|
||||
|
||||
@@ -87,4 +87,40 @@ class Services extends BaseService
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Сервис для управления подписками на модули
|
||||
*
|
||||
* Предоставляет методы для проверки активности модулей,
|
||||
* управления пробными периодами и проверки доступа к функциональности.
|
||||
*
|
||||
* @param bool $getShared
|
||||
* @return \App\Services\ModuleSubscriptionService
|
||||
*/
|
||||
public static function moduleSubscription(bool $getShared = true)
|
||||
{
|
||||
if ($getShared) {
|
||||
return static::getSharedInstance('moduleSubscription');
|
||||
}
|
||||
|
||||
return new ModuleSubscriptionService();
|
||||
}
|
||||
|
||||
/**
|
||||
* Сервис для управления событиями с проверкой подписок на модули
|
||||
*
|
||||
* Предоставляет методы для подписки на события с проверкой
|
||||
* статуса подписки на модуль (moduleOn) и без проверки (systemOn).
|
||||
*
|
||||
* @param bool $getShared
|
||||
* @return \App\Services\EventManager
|
||||
*/
|
||||
public static function eventManager(bool $getShared = true)
|
||||
{
|
||||
if ($getShared) {
|
||||
return static::getSharedInstance('eventManager');
|
||||
}
|
||||
|
||||
return new EventManager();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user