*/ public static function items(): array { $value = json_decode((string) Setting::where('key', self::SETTING_KEY)->value('value'), true); return is_array($value) ? $value : []; } /** * @return array */ public static function rules(): array { return [ 'items' => 'present|array|max:6', 'items.*' => 'array', 'items.*.title' => 'required|string|max:40', 'items.*.icon' => ['nullable', 'string', 'max:100', 'regex:' . ClientMenu::ICON_PATTERN], 'items.*.href' => ['required', 'string', 'max:255', 'regex:' . ClientMenu::HREF_PATTERN], 'items.*.disabled' => 'sometimes|boolean', ]; } /** * @param array> $items */ public static function save(array $items): array { $normalized = array_map(ClientMenu::normalizeLink(...), array_values($items)); Setting::updateOrCreate(['key' => self::SETTING_KEY], ['value' => json_encode($normalized, JSON_UNESCAPED_UNICODE)]); return $normalized; } }