/** * Handle the fields. * * @param PermissionFormBuilder $builder * @param AddonCollection $addons * @param Translator $translator * @param Repository $config */ public function handle(PermissionFormBuilder $builder, AddonCollection $addons, Translator $translator, Repository $config) { /* @var UserInterface $user */ $user = $builder->getEntry(); $fields = []; $namespaces = ['streams']; /* @var Addon $addon */ foreach ($addons->withConfig('permissions') as $addon) { $namespaces[] = $addon->getNamespace(); } foreach ($namespaces as $namespace) { foreach ($config->get($namespace . '::permissions', []) as $group => $permissions) { $label = $namespace . '::permission.' . $group . '.name'; if (!$translator->has($warning = $namespace . '::permission.' . $group . '.warning')) { $warning = null; } if (!$translator->has($instructions = $namespace . '::permission.' . $group . '.instructions')) { $instructions = null; } $fields[$namespace . '::' . $group] = ['label' => $label, 'warning' => $warning, 'instructions' => $instructions, 'type' => 'anomaly.field_type.checkboxes', 'value' => function () use($user, $namespace, $group) { return array_map(function ($permission) use($user, $namespace, $group) { return str_replace($namespace . '::' . $group . '.', '', $permission); }, $user->getPermissions()); }, 'config' => ['options' => function () use($group, $permissions, $namespace) { return array_combine($permissions, array_map(function ($permission) use($namespace, $group) { return $namespace . '::permission.' . $group . '.option.' . $permission; }, $permissions)); }]]; } } $builder->setFields($fields); }
/** * Handle the command. * * @param AddonCollection $addons * @param Repository $repository */ public function handle(AddonCollection $addons, Repository $repository) { $slug = $this->stream->getSlug(); $namespace = $this->stream->getNamespace(); foreach ($addons->withConfig("streams.{$namespace}.{$slug}") as $config) { $this->stream->mergeConfig($config); } $this->stream->mergeConfig($repository->get("streams::streams.{$namespace}.{$slug}", [])); }
/** * Handle the command. * * @param SettingRepositoryInterface $settings * @param AddonCollection $addons * @param Repository $config */ public function handle(SettingRepositoryInterface $settings, AddonCollection $addons, Repository $config) { /* @var Addon $addon */ foreach ($addons->withConfig('settings') as $addon) { foreach ($config->get($addon->getNamespace('settings')) as $key => $setting) { if (isset($setting['env']) && env($setting['env']) !== null) { continue; } if (!isset($setting['bind'])) { continue; } if (!$settings->has($key = $addon->getNamespace($key))) { continue; } $config->set($setting['bind'], $settings->value($key)); } } foreach ($addons->withConfig('settings/settings') as $addon) { foreach ($config->get($addon->getNamespace('settings/settings')) as $key => $setting) { if (isset($setting['env']) && env($setting['env']) !== null) { continue; } if (!isset($setting['bind'])) { continue; } if (!$settings->has($key = $addon->getNamespace($key))) { continue; } $config->set($setting['bind'], $settings->value($key)); } } foreach ($config->get('streams::settings/settings', []) as $key => $setting) { if (isset($setting['env']) && env($setting['env']) !== null) { continue; } if (!isset($setting['bind'])) { continue; } if (!$settings->has($key = 'streams::' . $key)) { continue; } $config->set($setting['bind'], $settings->value($key)); } }
/** * Handle the command. * * @param RelationshipFieldType $fieldType * @param AddonCollection $addons * @param Repository $config * @return array */ public function handle(RelationshipFieldType $fieldType, AddonCollection $addons, Repository $config) { $definition = []; /* @var Addon $addon */ foreach ($addons->withConfig('lookup.' . $this->table->config('related')) as $addon) { $definition = $config->get($addon->getNamespace('lookup.' . $this->table->config('related'))); } $definition = $config->get($fieldType->getNamespace('lookup.' . $this->table->config('related')), $definition); return $definition; }
/** * Handle the command. * * @param MultipleFieldType $fieldType * @param AddonCollection $addons * @param Container $container * @param Repository $config * @return array */ public function handle(MultipleFieldType $fieldType, AddonCollection $addons, Container $container, Repository $config) { $definition = []; $key = 'multiple.lookup.' . get_class($container->make($this->table->config('related'))); /* @var Addon $addon */ foreach ($addons->withConfig($key) as $addon) { $definition = $config->get($addon->getNamespace($key)); } $definition = $config->get($fieldType->getNamespace($key), $definition); return $definition; }
/** * Handle the fields. * * @param PermissionFormBuilder $builder * @param AddonCollection $addons * @param Translator $translator * @param Repository $config */ public function handle(PermissionFormBuilder $builder, AddonCollection $addons, Repository $config) { $sections = []; $sections['streams']['title'] = 'streams::message.system'; foreach ($config->get('streams::permissions', []) as $group => $permissions) { $sections['streams']['fields'][] = 'streams::' . $group; } /* @var Addon $addon */ foreach ($addons->withConfig('permissions') as $addon) { $sections[$addon->getNamespace()]['title'] = $addon->getName(); $sections[$addon->getNamespace()]['description'] = $addon->getDescription(); foreach ($config->get($addon->getNamespace('permissions'), []) as $group => $permissions) { $sections[$addon->getNamespace()]['fields'][] = $addon->getNamespace($group); } } $builder->setSections($sections); }
/** * Handle the fields. * * @param PermissionFormBuilder $builder * @param AddonCollection $addons * @param Translator $translator * @param Repository $config */ public function handle(PermissionFormBuilder $builder, AddonCollection $addons, Translator $translator, Repository $config) { /* @var UserInterface $user */ $user = $builder->getEntry(); $roles = $user->getRoles(); $inherited = $roles->permissions(); $fields = []; $namespaces = array_merge(['streams'], $addons->withConfig('permissions')->namespaces()); /** * gather all the addons with a * permissions configuration file. * * @var Addon $addon */ foreach ($namespaces as $namespace) { foreach ($config->get($namespace . '::permissions', []) as $group => $permissions) { /** * Determine the general * form UI components. */ $label = $namespace . '::permission.' . $group . '.name'; if (!$translator->has($warning = $namespace . '::permission.' . $group . '.warning')) { $warning = null; } if (!$translator->has($instructions = $namespace . '::permission.' . $group . '.instructions')) { $instructions = null; } /** * Gather the available * permissions for the group. */ $available = array_combine(array_map(function ($permission) use($namespace, $group) { return $namespace . '::' . $group . '.' . $permission; }, $permissions), array_map(function ($permission) use($namespace, $group) { return $namespace . '::permission.' . $group . '.option.' . $permission; }, $permissions)); /** * Build the checkboxes field * type to handle the UI. */ $fields[$namespace . '::' . $group] = ['label' => $label, 'warning' => $warning, 'instructions' => $instructions, 'type' => 'anomaly.field_type.checkboxes', 'value' => array_merge($user->getPermissions(), $inherited), 'config' => ['disabled' => $inherited, 'options' => $available]]; } } $builder->setFields($fields); }