PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.6
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.6
1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 All 49 releases
← All changes | app/Http/Requests/FluentMetaRequest.php +41 -0 1.6.4 → 1.6.6 View file →
@@ -4,8 +4,9 @@
4 4
5 5 use FluentCart\Framework\Foundation\RequestGuard;
6 6 use FluentCart\Framework\Support\Arr;
7 7 use FluentCart\App\Services\Permission\PermissionManager;
8 +use FluentCart\App\Services\Theme\ColorPalette;
8 9
9 10 class FluentMetaRequest extends RequestGuard
10 11 {
11 12
@@ -92,8 +93,11 @@
92 93 'show_cart_icon_in_body' => 'sanitize_text_field',
93 94 'additional_address_field' => 'sanitize_text_field',
94 95 'hide_coupon_field' => 'sanitize_text_field',
95 96 'user_account_creation_mode' => 'sanitize_text_field',
97 + 'auto_login_after_account_creation' => function ($value) {
98 + return $value === 'yes' ? 'yes' : 'no';
99 + },
96 100 'force_ssl' => 'sanitize_text_field',
97 101 'checkout_page_id' => 'intval',
98 102 'custom_payment_page_id' => 'intval',
99 103 'cart_page_id' => 'intval',
@@ -139,8 +143,16 @@
139 143 'modules_settings' => 'sanitize_text_field',
140 144 'product_slug' => 'sanitize_text_field',
141 145 'min_receipt_number' => 'sanitize_text_field',
142 146 'inv_prefix' => 'sanitize_text_field',
147 + 'date_time_format_source' => function ($value) {
148 + $value = sanitize_text_field($value);
149 + return in_array($value, ['fluent_cart', 'wordpress'], true) ? $value : 'fluent_cart';
150 + },
151 + 'timezone_source' => function ($value) {
152 + $value = sanitize_text_field($value);
153 + return in_array($value, ['fluent_cart', 'wordpress'], true) ? $value : 'fluent_cart';
154 + },
143 155 'weight_unit' => function ($value) {
144 156 if (!PermissionManager::hasPermission(['store/sensitive'])) {
145 157 $stored = get_option('fluent_cart_store_settings', []);
146 158 return $stored['weight_unit'] ?? 'kg';
@@ -159,8 +171,37 @@
159 171 return in_array($value, $allowed, true) ? $value : 'cm';
160 172 },
161 173 'enable_image_zoom_in_single_product' => 'sanitize_text_field',
162 174 'enable_image_zoom_in_modal' => 'sanitize_text_field',
175 + 'appearance_source' => function ($value) {
176 + $value = sanitize_text_field($value);
177 +
178 + return in_array($value, ColorPalette::sources(), true)
179 + ? $value
180 + : ColorPalette::SOURCE_DEFAULT;
181 + },
182 + 'appearance_colors' => function ($value) {
183 + if (!is_array($value)) {
184 + return [];
185 + }
186 +
187 + // Driven off the registry rather than the submitted keys, so an
188 + // unknown property can never reach the storefront stylesheet.
189 + $colors = [];
190 +
191 + foreach (ColorPalette::globals() as $key => $definition) {
192 + $hex = sanitize_hex_color((string)Arr::get($value, $key, ''));
193 +
194 + // sanitize_hex_color() returns null for anything malformed
195 + // and '' for an empty picker; both mean "not set", which is
196 + // how a colour falls back to FluentCart's own default.
197 + if ($hex) {
198 + $colors[$key] = $hex;
199 + }
200 + }
201 +
202 + return $colors;
203 + },
163 204 'theme_setup' => function ($value) {
164 205 if (!is_array($value)) {
165 206 return [];
166 207 }