From 82237bd7f3151a21bc9363671418f14c98f1d1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Tue, 13 Aug 2019 23:36:14 +0200 Subject: [PATCH] Add TenantManagerEvents --- src/Traits/BootstrapsTenancy.php | 10 +++++ src/Traits/TenantManagerEvents.php | 70 ++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/Traits/TenantManagerEvents.php diff --git a/src/Traits/BootstrapsTenancy.php b/src/Traits/BootstrapsTenancy.php index 5f2b74d3..e5be25ac 100644 --- a/src/Traits/BootstrapsTenancy.php +++ b/src/Traits/BootstrapsTenancy.php @@ -9,6 +9,8 @@ use Stancl\Tenancy\Exceptions\PhpRedisNotInstalledException; trait BootstrapsTenancy { + use TenantManagerEvents; + public $originalSettings = []; /** * Was tenancy initialized/bootstrapped? @@ -19,6 +21,10 @@ trait BootstrapsTenancy public function bootstrap() { + array_map(function ($listener) { + $listener($this); + }, $this->listeners['boostrapping']); + $this->initialized = true; $this->switchDatabaseConnection(); @@ -27,6 +33,10 @@ trait BootstrapsTenancy } $this->tagCache(); $this->suffixFilesystemRootPaths(); + + array_map(function ($listener) { + $listener($this); + }, $this->listeners['boostrapped']); } public function end() diff --git a/src/Traits/TenantManagerEvents.php b/src/Traits/TenantManagerEvents.php new file mode 100644 index 00000000..cc9f9e7c --- /dev/null +++ b/src/Traits/TenantManagerEvents.php @@ -0,0 +1,70 @@ + [], + 'boostrapped' => [], + 'ending' => [], + 'ended' => [], + ]; + + /** + * Register a listener that will be executed before tenancy is bootstrapped. + * + * @param callable $callback + * @return self + */ + public function bootstrapping(callable $callback) + { + $this->listeners['bootstrapping'][] = $callback; + + return $this; + } + + /** + * Register a listener that will be executed after tenancy is bootstrapped. + * + * @param callable $callback + * @return self + */ + public function boostrapped(callable $callback) + { + $this->listeners['bootstrapped'][] = $callback; + + return $this; + } + + /** + * Register a listener that will be executed before tenancy is ended. + * + * @param callable $callback + * @return self + */ + public function ending(callable $callback) + { + $this->listeners['ending'][] = $callback; + + return $this; + } + + /** + * Register a listener that will be executed after tenancy is ended. + * + * @param callable $callback + * @return self + */ + public function ended(callable $callback) + { + $this->listeners['ended'][] = $callback; + + return $this; + } +} \ No newline at end of file