PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.4
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.4
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 1.2.0 All 47 releases
fluent-cart / app / Http / Requests / SchedulingSettingsRequest.php

SchedulingSettingsRequest.php in FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler 1.6.4, at app/Http/Requests/SchedulingSettingsRequest.php

108 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentCart\App\Http\Requests;
4
5 use FluentCart\Framework\Foundation\RequestGuard;
6
7 class SchedulingSettingsRequest extends RequestGuard
8 {
9 public function beforeValidation(): array
10 {
11 $intFields = [
12 'yearly_renewal_reminder_days',
13 'trial_end_reminder_days',
14 'monthly_renewal_reminder_days',
15 'quarterly_renewal_reminder_days',
16 'half_yearly_renewal_reminder_days',
17 ];
18
19 $data = [];
20
21 foreach ($intFields as $field) {
22 $value = $this->request->get($field);
23
24 if ($value !== null && $value !== '' && ctype_digit(trim((string) $value))) {
25 $data[$field] = (int) trim((string) $value);
26 }
27 }
28
29 return $data;
30 }
31
32 public function rules(): array
33 {
34 $rules = [
35 'reminders_enabled' => 'nullable|sanitizeText',
36 'yearly_renewal_reminders_enabled' => 'nullable|sanitizeText',
37 'yearly_renewal_reminder_days' => 'nullable',
38 'trial_end_reminders_enabled' => 'nullable|sanitizeText',
39 'trial_end_reminder_days' => 'nullable',
40 'monthly_renewal_reminders_enabled' => 'nullable|sanitizeText',
41 'monthly_renewal_reminder_days' => 'nullable',
42 'quarterly_renewal_reminders_enabled' => 'nullable|sanitizeText',
43 'quarterly_renewal_reminder_days' => 'nullable',
44 'half_yearly_renewal_reminders_enabled' => 'nullable|sanitizeText',
45 'half_yearly_renewal_reminder_days' => 'nullable',
46 'renewal_reminders_enabled' => 'nullable|sanitizeText',
47 'renewal_reminder_overdue_days' => 'nullable|sanitizeText',
48 ];
49
50 // Only validate days fields when their corresponding toggle is enabled
51 $conditionalRules = [
52 'yearly_renewal_reminders_enabled' => ['yearly_renewal_reminder_days' => 'integer|min:7|max:90'],
53 'trial_end_reminders_enabled' => ['trial_end_reminder_days' => 'integer|min:1|max:14'],
54 'monthly_renewal_reminders_enabled' => ['monthly_renewal_reminder_days' => 'integer|min:3|max:28'],
55 'quarterly_renewal_reminders_enabled' => ['quarterly_renewal_reminder_days' => 'integer|min:7|max:60'],
56 'half_yearly_renewal_reminders_enabled' => ['half_yearly_renewal_reminder_days' => 'integer|min:7|max:60'],
57 ];
58
59 foreach ($conditionalRules as $toggle => $daysRules) {
60 if ($this->request->get($toggle) === 'yes') {
61 $rules = array_merge($rules, $daysRules);
62 }
63 }
64
65 return $rules;
66 }
67
68 public function messages(): array
69 {
70 return [
71 'yearly_renewal_reminder_days.integer' => __('Yearly renewal reminder days must be a whole number.', 'fluent-cart'),
72 'yearly_renewal_reminder_days.min' => __('Yearly renewal reminder days must be at least 7.', 'fluent-cart'),
73 'yearly_renewal_reminder_days.max' => __('Yearly renewal reminder days must not exceed 90.', 'fluent-cart'),
74 'trial_end_reminder_days.integer' => __('Trial end reminder days must be a whole number.', 'fluent-cart'),
75 'trial_end_reminder_days.min' => __('Trial end reminder days must be at least 1.', 'fluent-cart'),
76 'trial_end_reminder_days.max' => __('Trial end reminder days must not exceed 14.', 'fluent-cart'),
77 'monthly_renewal_reminder_days.integer' => __('Monthly renewal reminder days must be a whole number.', 'fluent-cart'),
78 'monthly_renewal_reminder_days.min' => __('Monthly renewal reminder days must be at least 3.', 'fluent-cart'),
79 'monthly_renewal_reminder_days.max' => __('Monthly renewal reminder days must not exceed 28.', 'fluent-cart'),
80 'quarterly_renewal_reminder_days.integer' => __('Quarterly renewal reminder days must be a whole number.', 'fluent-cart'),
81 'quarterly_renewal_reminder_days.min' => __('Quarterly renewal reminder days must be at least 7.', 'fluent-cart'),
82 'quarterly_renewal_reminder_days.max' => __('Quarterly renewal reminder days must not exceed 60.', 'fluent-cart'),
83 'half_yearly_renewal_reminder_days.integer' => __('Half yearly renewal reminder days must be a whole number.', 'fluent-cart'),
84 'half_yearly_renewal_reminder_days.min' => __('Half yearly renewal reminder days must be at least 7.', 'fluent-cart'),
85 'half_yearly_renewal_reminder_days.max' => __('Half yearly renewal reminder days must not exceed 60.', 'fluent-cart'),
86 ];
87 }
88
89 public function sanitize(): array
90 {
91 return [
92 'reminders_enabled' => 'sanitize_text_field',
93 'yearly_renewal_reminders_enabled' => 'sanitize_text_field',
94 'yearly_renewal_reminder_days' => 'intval',
95 'trial_end_reminders_enabled' => 'sanitize_text_field',
96 'trial_end_reminder_days' => 'intval',
97 'monthly_renewal_reminders_enabled' => 'sanitize_text_field',
98 'monthly_renewal_reminder_days' => 'intval',
99 'quarterly_renewal_reminders_enabled' => 'sanitize_text_field',
100 'quarterly_renewal_reminder_days' => 'intval',
101 'half_yearly_renewal_reminders_enabled' => 'sanitize_text_field',
102 'half_yearly_renewal_reminder_days' => 'intval',
103 'renewal_reminders_enabled' => 'sanitize_text_field',
104 'renewal_reminder_overdue_days' => 'sanitize_text_field',
105 ];
106 }
107 }
108