Spaces:
No application file
No application file
| namespace Mautic\ConfigBundle\Mapper\Helper; | |
| class RestrictionHelper | |
| { | |
| /** | |
| * Ensure that the array has string indexes for congruency with a nested array similar to ['db_host', 'monitored_email' => ['EmailBundle_bounces'];. | |
| */ | |
| public static function prepareRestrictions(array $restrictedParameters): array | |
| { | |
| $prepared = []; | |
| foreach ($restrictedParameters as $key => $value) { | |
| $newKey = (is_numeric($key)) ? $value : $key; | |
| $prepared[$newKey] = (is_array($value)) ? self::prepareRestrictions($value) : $value; | |
| } | |
| return $prepared; | |
| } | |
| /** | |
| * Remove fields that are restricted. | |
| */ | |
| public static function applyRestrictions(array $configParameters, array $restrictedParameters, $restrictedParentKey = null): array | |
| { | |
| if ($restrictedParentKey) { | |
| if (!isset($restrictedParameters[$restrictedParentKey])) { | |
| // No restrictions | |
| return $configParameters; | |
| } | |
| $restrictedParameters = $restrictedParameters[$restrictedParentKey]; | |
| } | |
| foreach ($configParameters as $key => $value) { | |
| // The entire form type is restricted | |
| if (isset($restrictedParameters[$key]) && !is_array($restrictedParameters[$key])) { | |
| unset($configParameters[$key]); | |
| continue; | |
| } | |
| // A sub type of the form type is restricted | |
| if (is_array($value)) { | |
| $configParameters[$key] = self::applyRestrictions($value, $restrictedParameters, $key); | |
| continue; | |
| } | |
| // Otherwise no restrictions are in place | |
| } | |
| return $configParameters; | |
| } | |
| } | |