From 4fff17160366124a536c3df27d8c94ec825c725a Mon Sep 17 00:00:00 2001 From: digital-brew Date: Thu, 31 Oct 2024 20:38:22 +0000 Subject: [PATCH 1/2] Update makeInstance method to work recursively on all blocks. --- src/Providers/BlockServiceProvider.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Providers/BlockServiceProvider.php b/src/Providers/BlockServiceProvider.php index 26e5e27..36e3a97 100644 --- a/src/Providers/BlockServiceProvider.php +++ b/src/Providers/BlockServiceProvider.php @@ -5,6 +5,8 @@ namespace Yarovikov\Gutengood\Providers; use Illuminate\Support\ServiceProvider; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; use WP_Block_Type_Registry; class BlockServiceProvider extends ServiceProvider @@ -46,9 +48,13 @@ public function boot(): void public function makeInstances(): void { $this->blocks = collect(); - collect(glob($this->app->basePath('app/' . $this->folder . '/*.php')))->map( - function (string $file): void { - $src = $this->formatFile($this->folder, $file); + + $directory = $this->app->basePath('app/' . $this->folder); + $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)); + + foreach ($iterator as $file) { + if ($file->isFile() && $file->getExtension() === 'php') { + $src = $this->formatFile($this->folder, $file->getPathname()); $this->app->bind("block.$src->handle", function () use ($src) { return new $src->class(); @@ -56,14 +62,14 @@ function (string $file): void { $this->blocks->push("block.$src->handle"); } - ); + } } public function formatFile(string $class, string $file): object { return (object) [ 'handle' => substr(strtolower(basename(preg_replace('/[A-Z]/', '-$0', $file), '.php')), 1), - 'class' => '\\App\\' . str_replace('/', '\\', $class) . '\\' . basename($file, '.php'), + 'class' => '\\App\\' . str_replace('/', '\\', str_replace('.php', '', str_replace('/app/', '',strstr($file, '/app/')))), ]; } From 7ad78803221d01622bc6bc3b840c6a96381dfef3 Mon Sep 17 00:00:00 2001 From: digital-brew Date: Sat, 2 Nov 2024 08:47:48 +0000 Subject: [PATCH 2/2] Update formatFile method. --- src/Providers/BlockServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Providers/BlockServiceProvider.php b/src/Providers/BlockServiceProvider.php index 36e3a97..58ff7d5 100644 --- a/src/Providers/BlockServiceProvider.php +++ b/src/Providers/BlockServiceProvider.php @@ -69,7 +69,7 @@ public function formatFile(string $class, string $file): object { return (object) [ 'handle' => substr(strtolower(basename(preg_replace('/[A-Z]/', '-$0', $file), '.php')), 1), - 'class' => '\\App\\' . str_replace('/', '\\', str_replace('.php', '', str_replace('/app/', '',strstr($file, '/app/')))), + 'class' => '\\App\\' . str_replace('/', '\\', str_replace('.php', '', str_replace('/app/', '',strstr($file, '/app/Editor/')))), ]; }