diff --git a/src/CreateStorageSymlinksAction.php b/src/Actions/CreateStorageSymlinksAction.php similarity index 84% rename from src/CreateStorageSymlinksAction.php rename to src/Actions/CreateStorageSymlinksAction.php index d1214588..3500c264 100644 --- a/src/CreateStorageSymlinksAction.php +++ b/src/Actions/CreateStorageSymlinksAction.php @@ -2,9 +2,8 @@ declare(strict_types=1); -namespace Stancl\Tenancy; +namespace Stancl\Tenancy\Actions; -use Closure; use Exception; use Stancl\Tenancy\Concerns\DealsWithTenantSymlinks; use Stancl\Tenancy\Database\Models\Tenant; @@ -15,19 +14,19 @@ class CreateStorageSymlinksAction { use DealsWithTenantSymlinks; - public static function handle($tenants, bool $relativeLink = false, bool $force = false, Closure|null $afterLinkCreation = null) + public static function handle($tenants, bool $relativeLink = false, bool $force = false): void { $tenants = $tenants instanceof Tenant ? collect([$tenants]) : $tenants; /** @var Tenant $tenant */ foreach ($tenants as $tenant) { foreach (static::possibleTenantSymlinks($tenant) as $publicPath => $storagePath) { - static::createLink($publicPath, $storagePath, $tenant, $relativeLink, $force, $afterLinkCreation); + static::createLink($publicPath, $storagePath, $tenant, $relativeLink, $force); } } } - protected static function createLink(string $publicPath, string $storagePath, Tenant $tenant, bool $relativeLink, bool $force, Closure|null $afterLinkCreation) + protected static function createLink(string $publicPath, string $storagePath, Tenant $tenant, bool $relativeLink, bool $force): void { event(new CreatingStorageSymlink($tenant)); @@ -50,9 +49,5 @@ class CreateStorageSymlinksAction } event((new StorageSymlinkCreated($tenant))); - - if ($afterLinkCreation) { - $afterLinkCreation($publicPath, $storagePath); - } } } diff --git a/src/RemoveStorageSymlinksAction.php b/src/Actions/RemoveStorageSymlinksAction.php similarity index 72% rename from src/RemoveStorageSymlinksAction.php rename to src/Actions/RemoveStorageSymlinksAction.php index e7a9908e..3c1eb227 100644 --- a/src/RemoveStorageSymlinksAction.php +++ b/src/Actions/RemoveStorageSymlinksAction.php @@ -2,9 +2,8 @@ declare(strict_types=1); -namespace Stancl\Tenancy; +namespace Stancl\Tenancy\Actions; -use Closure; use Stancl\Tenancy\Concerns\DealsWithTenantSymlinks; use Stancl\Tenancy\Database\Models\Tenant; use Stancl\Tenancy\Events\RemovingStorageSymlink; @@ -14,19 +13,19 @@ class RemoveStorageSymlinksAction { use DealsWithTenantSymlinks; - public static function handle($tenants, Closure|null $afterLinkRemoval = null) + public static function handle($tenants): void { $tenants = $tenants instanceof Tenant ? collect([$tenants]) : $tenants; /** @var Tenant $tenant */ foreach ($tenants as $tenant) { foreach (static::possibleTenantSymlinks($tenant) as $publicPath => $storagePath) { - static::removeLink($publicPath, $tenant, $afterLinkRemoval); + static::removeLink($publicPath, $tenant); } } } - protected static function removeLink(string $publicPath, Tenant $tenant, Closure|null $afterLinkRemoval) + protected static function removeLink(string $publicPath, Tenant $tenant): void { if (static::symlinkExists($publicPath)) { event(new RemovingStorageSymlink($tenant)); @@ -34,10 +33,6 @@ class RemoveStorageSymlinksAction app()->make('files')->delete($publicPath); event(new StorageSymlinkRemoved($tenant)); - - if ($afterLinkRemoval) { - $afterLinkRemoval($publicPath); - } } } } diff --git a/src/Commands/Link.php b/src/Commands/Link.php index 17f2f1a5..a04b21f8 100644 --- a/src/Commands/Link.php +++ b/src/Commands/Link.php @@ -8,8 +8,8 @@ use Exception; use Illuminate\Console\Command; use Illuminate\Support\LazyCollection; use Stancl\Tenancy\Concerns\HasATenantsOption; -use Stancl\Tenancy\CreateStorageSymlinksAction; -use Stancl\Tenancy\RemoveStorageSymlinksAction; +use Stancl\Tenancy\Actions\CreateStorageSymlinksAction; +use Stancl\Tenancy\Actions\RemoveStorageSymlinksAction; class Link extends Command { @@ -55,31 +55,19 @@ class Link extends Command } } - /** - * @param LazyCollection $tenants - * @return void - */ - protected function removeLinks($tenants) + protected function removeLinks(LazyCollection $tenants): void { - RemoveStorageSymlinksAction::handle( - $tenants, - afterLinkRemoval: fn ($publicPath) => $this->info("The [$publicPath] link has been removed.") - ); + RemoveStorageSymlinksAction::handle($tenants); $this->info('The links have been removed.'); } - /** - * @param LazyCollection $tenants - * @return void - */ - protected function createLinks($tenants) + protected function createLinks(LazyCollection $tenants): void { CreateStorageSymlinksAction::handle( $tenants, $this->option('relative') ?? false, $this->option('force') ?? false, - afterLinkCreation: fn ($publicPath, $storagePath) => $this->info("The [$publicPath] link has been connected to [$storagePath].") ); $this->info('The links have been created.'); diff --git a/src/Concerns/DealsWithTenantSymlinks.php b/src/Concerns/DealsWithTenantSymlinks.php index 1ed62f85..f5536445 100644 --- a/src/Concerns/DealsWithTenantSymlinks.php +++ b/src/Concerns/DealsWithTenantSymlinks.php @@ -11,6 +11,7 @@ trait DealsWithTenantSymlinks { /** * Get all possible tenant symlinks, existing or not (array of ['public path' => 'storage path']). + * This is used for creating all possible tenant symlinks and removing all existing tenant symlinks. * * @return array */ @@ -19,20 +20,17 @@ trait DealsWithTenantSymlinks $diskUrls = config('tenancy.filesystem.url_override'); $disks = config('tenancy.filesystem.root_override'); $suffixBase = config('tenancy.filesystem.suffix_base'); - $symlinks = []; + $symlinks = collect(); $tenantKey = $tenant->getTenantKey(); foreach ($diskUrls as $disk => $publicPath) { $storagePath = str_replace('%storage_path%', $suffixBase . $tenantKey, $disks[$disk]); - $storagePath = storage_path($storagePath); - $publicPath = str_replace('%tenant_id%', $tenantKey, $publicPath); - $publicPath = public_path($publicPath); - $symlinks[] = [$publicPath => $storagePath]; + $symlinks->push([public_path($publicPath) => storage_path($storagePath)]); } - return collect($symlinks)->mapWithKeys(fn ($item) => $item); + return $symlinks->mapWithKeys(fn ($item) => $item); } /** diff --git a/src/Jobs/CreateStorageSymlinks.php b/src/Jobs/CreateStorageSymlinks.php index a2fcb45a..b749b5b9 100644 --- a/src/Jobs/CreateStorageSymlinks.php +++ b/src/Jobs/CreateStorageSymlinks.php @@ -10,7 +10,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Stancl\Tenancy\Contracts\Tenant; -use Stancl\Tenancy\CreateStorageSymlinksAction; +use Stancl\Tenancy\Actions\CreateStorageSymlinksAction; class CreateStorageSymlinks implements ShouldQueue { diff --git a/src/Jobs/RemoveStorageSymlinks.php b/src/Jobs/RemoveStorageSymlinks.php index 79ff8335..6303e4e9 100644 --- a/src/Jobs/RemoveStorageSymlinks.php +++ b/src/Jobs/RemoveStorageSymlinks.php @@ -10,7 +10,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Stancl\Tenancy\Contracts\Tenant; -use Stancl\Tenancy\RemoveStorageSymlinksAction; +use Stancl\Tenancy\Actions\RemoveStorageSymlinksAction; class RemoveStorageSymlinks implements ShouldQueue {