60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace Modules\Module;
 | 
						|
 | 
						|
use App\Setting\Contracts\Storeable;
 | 
						|
use App\Setting\LocalSettings;
 | 
						|
use Illuminate\Validation\Rule;
 | 
						|
use Lorisleiva\Actions\ActionRequest;
 | 
						|
 | 
						|
class ModuleSettings extends LocalSettings implements Storeable
 | 
						|
{
 | 
						|
    /** @var array<int, string> */
 | 
						|
    public array $modules;
 | 
						|
 | 
						|
    public static function group(): string
 | 
						|
    {
 | 
						|
        return 'module';
 | 
						|
    }
 | 
						|
 | 
						|
    public static function title(): string
 | 
						|
    {
 | 
						|
        return 'Module';
 | 
						|
    }
 | 
						|
 | 
						|
    public function hasModule(string $module): bool
 | 
						|
    {
 | 
						|
        return in_array($module, $this->modules);
 | 
						|
    }
 | 
						|
 | 
						|
    public function beforeSave(ActionRequest $request): void
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public function rules(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'modules' => 'present|array',
 | 
						|
            'modules.*' => ['string', Rule::in(Module::values())],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public function viewData(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'data' => [
 | 
						|
                'data' => [
 | 
						|
                    'modules' => $this->modules,
 | 
						|
                ],
 | 
						|
                'meta' => ['modules' => Module::forSelect()],
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
}
 |