PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.7.0
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.7.0
1.7.0 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 All 50 releases
← All changes | app/Http/Requests/FluentMetaRequest.php +71 -0 1.3.26 → 1.7.0 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
@@ -19,8 +20,10 @@
19 20 $rulesMap = [
20 21 'store_setup' => [
21 22 'store_name' => 'required|sanitizeText|maxLength:200',
22 23 'store_country' => 'required|sanitizeText|maxLength:200',
24 + 'seller_vat_id' => 'nullable|sanitizeText|maxLength:50',
25 + 'seller_tax_id' => 'nullable|sanitizeText|maxLength:50',
23 26 ]
24 27 ];
25 28
26 29 $rules = Arr::get($rulesMap, $this->get('settings_name'), []);
@@ -59,8 +62,12 @@
59 62 'meta_key' => 'sanitize_text_field',
60 63 'type' => 'sanitize_text_field',
61 64 'default' => 'sanitize_text_field',
62 65 'store_name' => 'sanitize_text_field',
66 + 'company_name' => 'sanitize_text_field',
67 + 'legal_registration_id' => 'sanitize_text_field',
68 + 'seller_vat_id' => 'sanitize_text_field',
69 + 'seller_tax_id' => 'sanitize_text_field',
63 70 'store_logo' => function ($value) {
64 71 if (!is_array($value)) {
65 72 return '';
66 73 }
@@ -86,13 +93,20 @@
86 93 'show_cart_icon_in_body' => 'sanitize_text_field',
87 94 'additional_address_field' => 'sanitize_text_field',
88 95 'hide_coupon_field' => 'sanitize_text_field',
89 96 'user_account_creation_mode' => 'sanitize_text_field',
97 + 'require_customer_email_verification' => function ($value) {
98 + return $value === 'no' ? 'no' : 'yes';
99 + },
100 + 'auto_login_after_account_creation' => function ($value) {
101 + return $value === 'yes' ? 'yes' : 'no';
102 + },
90 103 'force_ssl' => 'sanitize_text_field',
91 104 'checkout_page_id' => 'intval',
92 105 'custom_payment_page_id' => 'intval',
93 106 'cart_page_id' => 'intval',
94 107 'receipt_page_id' => 'intval',
108 + 'order_review_page_id' => 'intval',
95 109 'shop_page_id' => 'intval',
96 110 'customer_profile_page_id' => 'intval',
97 111 'customer_profile_page_slug' => 'sanitize_text_field',
98 112 'registration_page_id' => 'intval',
@@ -108,10 +122,30 @@
108 122 'store_state' => 'sanitize_text_field',
109 123 'template_settings_checkout_page_mode' => 'sanitize_text_field',
110 124 'show_relevant_product_in_single_page' => 'sanitize_text_field',
111 125 'show_relevant_product_in_modal' => 'sanitize_text_field',
126 + 'show_reviews_in_single_page' => 'sanitize_text_field',
127 + 'show_rating_in_shop' => 'sanitize_text_field',
128 + 'show_rating_in_relevant' => 'sanitize_text_field',
112 129 'enable_early_payment_for_installment' => 'sanitize_text_field',
130 + 'subscription_management_mode' => function ($value) {
131 + $value = sanitize_text_field($value);
132 + $allowed = ['gateway_managed', 'store_managed'];
133 + return in_array($value, $allowed, true) ? $value : 'gateway_managed';
134 + },
135 + 'subscription_system_charge' => function ($value) {
136 + $value = sanitize_text_field($value);
137 + return in_array($value, ['yes', 'no'], true) ? $value : 'no';
138 + },
139 + 'subscription_manual_fallback' => function ($value) {
140 + $value = sanitize_text_field($value);
141 + return in_array($value, ['yes', 'no'], true) ? $value : 'no';
142 + },
113 143 'order_mode' => 'sanitize_text_field',
144 + 'subscription_mode_guard' => function ($value) {
145 + $value = sanitize_text_field($value);
146 + return in_array($value, ['yes', 'no'], true) ? $value : 'yes';
147 + },
114 148 'variation_view' => 'sanitize_text_field',
115 149 'variation_columns' => 'sanitize_text_field',
116 150 'modules_settings' => 'sanitize_text_field',
117 151 'product_slug' => 'sanitize_text_field',
@@ -116,8 +150,16 @@
116 150 'modules_settings' => 'sanitize_text_field',
117 151 'product_slug' => 'sanitize_text_field',
118 152 'min_receipt_number' => 'sanitize_text_field',
119 153 'inv_prefix' => 'sanitize_text_field',
154 + 'date_time_format_source' => function ($value) {
155 + $value = sanitize_text_field($value);
156 + return in_array($value, ['fluent_cart', 'wordpress'], true) ? $value : 'fluent_cart';
157 + },
158 + 'timezone_source' => function ($value) {
159 + $value = sanitize_text_field($value);
160 + return in_array($value, ['fluent_cart', 'wordpress'], true) ? $value : 'fluent_cart';
161 + },
120 162 'weight_unit' => function ($value) {
121 163 if (!PermissionManager::hasPermission(['store/sensitive'])) {
122 164 $stored = get_option('fluent_cart_store_settings', []);
123 165 return $stored['weight_unit'] ?? 'kg';
@@ -136,8 +178,37 @@
136 178 return in_array($value, $allowed, true) ? $value : 'cm';
137 179 },
138 180 'enable_image_zoom_in_single_product' => 'sanitize_text_field',
139 181 'enable_image_zoom_in_modal' => 'sanitize_text_field',
182 + 'appearance_source' => function ($value) {
183 + $value = sanitize_text_field($value);
184 +
185 + return in_array($value, ColorPalette::sources(), true)
186 + ? $value
187 + : ColorPalette::SOURCE_DEFAULT;
188 + },
189 + 'appearance_colors' => function ($value) {
190 + if (!is_array($value)) {
191 + return [];
192 + }
193 +
194 + // Driven off the registry rather than the submitted keys, so an
195 + // unknown property can never reach the storefront stylesheet.
196 + $colors = [];
197 +
198 + foreach (ColorPalette::globals() as $key => $definition) {
199 + $hex = sanitize_hex_color((string)Arr::get($value, $key, ''));
200 +
201 + // sanitize_hex_color() returns null for anything malformed
202 + // and '' for an empty picker; both mean "not set", which is
203 + // how a colour falls back to FluentCart's own default.
204 + if ($hex) {
205 + $colors[$key] = $hex;
206 + }
207 + }
208 +
209 + return $colors;
210 + },
140 211 'theme_setup' => function ($value) {
141 212 if (!is_array($value)) {
142 213 return [];
143 214 }