HEX
Server: nginx/1.28.3
System: Linux lightweb-s1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User: drdrivek-71 (1047)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/eslinced-103/brise-edu.or.kr/app/Commands/ResourceListCommand.php
<?php

namespace App\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Str;
use Laravel\Nova\Actions\ActionResource;
use Laravel\Nova\Resource;
use Symfony\Component\Finder\Finder;

class ResourceListCommand extends Command
{

    protected $name = "amuz-cms:resource-list";

    protected $description = "Get list of active resources";

    public function handle()
    {
        $packagesDirectory = config('amuz.package_path');

        if(!is_dir($packagesDirectory)) return;

        $resources = [];

        $OS_Separator = PHP_OS === 'Linux' ? '/' : '\\';

        foreach( new \DirectoryIterator($packagesDirectory) as $dir )
        {
            if(!$dir->isDot()){
                $namespace =  config('amuz.package_path') . "\\$dir";

                foreach ((new Finder)->in($dir->getRealPath())->path('Resources')->files() as $resource) {
                    $resource = str_replace(
                        '.php',
                        '',
                        $namespace."\\Resources\\".Str::afterLast($resource, $OS_Separator)
                    );

                    if (is_subclass_of($resource, Resource::class) &&
                        ! (new \ReflectionClass($resource))->isAbstract() &&
                        ! (is_subclass_of($resource, ActionResource::class))) {
                        $resources[] = [
                            'Namespace' => $namespace,
                            'Resource' => last(explode("\\", $resource)),
                        ];
                    }
                }
            }

        }

        $this->table(['Namespace', 'Resource'], (array) $resources);
    }
}