diff --git a/README.md b/README.md index e3e4e4f..179f985 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,20 @@ class FormsServiceProvider extends CoreServiceProvider public const EXTENSION_FORM_BUILDER = 'extension.form_builder'; + public const FEATURE_ALLOW_SOMETHING = 'feature.form_allow_something'; + protected $repositories = [ FormsRepositoryInterface::class => FormsRepository::class ]; + protected $features = [ + self::FEATURE_ALLOW_SOMETHING => [ + 'translation_key', + true // boolean true if the feature has settings + ], + self::FEATURE_ALLOW_SOMETHING => 'translation_key' + ]; + protected $events = [ FormWasSubmittedEvent::class => SendFormSubmissionEmailListener::class ]; diff --git a/src/Provider/CoreServiceProvider.php b/src/Provider/CoreServiceProvider.php index 9889946..e18c0fa 100644 --- a/src/Provider/CoreServiceProvider.php +++ b/src/Provider/CoreServiceProvider.php @@ -57,6 +57,11 @@ class CoreServiceProvider extends ServiceProvider */ protected $commands = []; + /** + * @var array + */ + protected $features = []; + /** * @return void */ @@ -91,6 +96,9 @@ public function boot() // Extensions $this->registerExtensions($this->extensions); + // Features + $this->registerFeatures($this->features); + // Permissions $this->registerPermissions($this->permissions); } @@ -163,6 +171,21 @@ protected function registerExtensions(array $extensions): void } } + /** + * @param array $features + */ + protected function registerFeatures(array $features): void + { + foreach ($features as $key => $translation) { + if (\is_array($translation)) { + ExtensionRegistrar::addFeature($key, $translation[0], $translation[1]); + continue; + } + + ExtensionRegistrar::addFeature($key, $translation); + } + } + /** * @param array $permissions */