<?php namespace App\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); } /** * @inheritdoc */ public function rules(): array { return [ 'modules' => 'present|array', 'modules.*' => ['string', Rule::in(Module::values())], ]; } /** * @inheritdoc */ public function data(): array { return [ ...parent::data(), 'meta' => [ ...parent::data()['meta'], 'modules' => Module::forSelect(), ] ]; } }