PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.5
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.5
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 trunk All 48 releases
← All changes | app/Http/Requests/FluentMetaRequest.php +45 -0 1.6.1 → 1.6.5 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',
@@ -129,8 +133,12 @@
129 133 $value = sanitize_text_field($value);
130 134 return in_array($value, ['yes', 'no'], true) ? $value : 'no';
131 135 },
132 136 'order_mode' => 'sanitize_text_field',
137 + 'subscription_mode_guard' => function ($value) {
138 + $value = sanitize_text_field($value);
139 + return in_array($value, ['yes', 'no'], true) ? $value : 'yes';
140 + },
133 141 'variation_view' => 'sanitize_text_field',
134 142 'variation_columns' => 'sanitize_text_field',
135 143 'modules_settings' => 'sanitize_text_field',
136 144 'product_slug' => 'sanitize_text_field',
@@ -135,8 +143,16 @@
135 143 'modules_settings' => 'sanitize_text_field',
136 144 'product_slug' => 'sanitize_text_field',
137 145 'min_receipt_number' => 'sanitize_text_field',
138 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 + },
139 155 'weight_unit' => function ($value) {
140 156 if (!PermissionManager::hasPermission(['store/sensitive'])) {
141 157 $stored = get_option('fluent_cart_store_settings', []);
142 158 return $stored['weight_unit'] ?? 'kg';
@@ -155,8 +171,37 @@
155 171 return in_array($value, $allowed, true) ? $value : 'cm';
156 172 },
157 173 'enable_image_zoom_in_single_product' => 'sanitize_text_field',
158 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 + },
159 204 'theme_setup' => function ($value) {
160 205 if (!is_array($value)) {
161 206 return [];
162 207 }