1 | <?php |
||||
2 | |||||
3 | namespace Chuckbe\Chuckcms\Controllers; |
||||
4 | |||||
5 | use Chuckbe\Chuckcms\Mail\FormActionMail; |
||||
6 | use Chuckbe\Chuckcms\Models\Form; |
||||
7 | use Chuckbe\Chuckcms\Models\FormEntry; |
||||
8 | use Chuckbe\Chuckcms\Models\Template; |
||||
9 | use ChuckSite; |
||||
0 ignored issues
–
show
|
|||||
10 | use Illuminate\Foundation\Auth\Access\AuthorizesRequests; |
||||
11 | use Illuminate\Foundation\Bus\DispatchesJobs; |
||||
12 | use Illuminate\Foundation\Validation\ValidatesRequests; |
||||
13 | use Illuminate\Http\Request; |
||||
14 | use Illuminate\Routing\Controller as BaseController; |
||||
15 | use Mail; |
||||
16 | |||||
17 | class FormController extends BaseController |
||||
18 | { |
||||
19 | use AuthorizesRequests; |
||||
20 | use DispatchesJobs; |
||||
21 | use ValidatesRequests; |
||||
22 | |||||
23 | private $form; |
||||
24 | private $formEntry; |
||||
25 | private $template; |
||||
26 | |||||
27 | /** |
||||
28 | * Create a new controller instance. |
||||
29 | * |
||||
30 | * @return void |
||||
31 | */ |
||||
32 | public function __construct(Form $form, FormEntry $formEntry, Template $template) |
||||
33 | { |
||||
34 | $this->form = $form; |
||||
35 | $this->formEntry = $formEntry; |
||||
36 | $this->template = $template; |
||||
37 | } |
||||
38 | |||||
39 | public function index() |
||||
40 | { |
||||
41 | $forms = $this->form->get(); |
||||
42 | |||||
43 | return view('chuckcms::backend.forms.index', compact('forms')); |
||||
44 | } |
||||
45 | |||||
46 | public function create(Request $request) |
||||
47 | { |
||||
48 | $this->validate($request, [ |
||||
49 | 'slug' => 'max:185|required|unique:forms', |
||||
50 | 'title' => 'required|max:185', |
||||
51 | ]); |
||||
52 | |||||
53 | $form = []; |
||||
54 | $form_slug = $request->get('slug'); |
||||
55 | $fields_slug = 'text'; |
||||
56 | |||||
57 | $form['fields'][$form_slug.'_'.$fields_slug]['label'] = 'Text'; |
||||
58 | $form['fields'][$form_slug.'_'.$fields_slug]['type'] = 'text'; |
||||
59 | $form['fields'][$form_slug.'_'.$fields_slug]['class'] = 'form-control'; |
||||
60 | $form['fields'][$form_slug.'_'.$fields_slug]['parentclass'] = null; |
||||
61 | $form['fields'][$form_slug.'_'.$fields_slug]['placeholder'] = 'Text'; |
||||
62 | $form['fields'][$form_slug.'_'.$fields_slug]['validation'] = 'required'; |
||||
63 | $form['fields'][$form_slug.'_'.$fields_slug]['value'] = null; |
||||
64 | $form['fields'][$form_slug.'_'.$fields_slug]['attributes']['id'] = 'text_input_id'; |
||||
65 | $form['fields'][$form_slug.'_'.$fields_slug]['required'] = 'true'; |
||||
66 | |||||
67 | $form['actions']['store'] = true; |
||||
68 | $form['actions']['send'] = false; |
||||
69 | |||||
70 | $form['actions']['redirect'] = ChuckSite::getSite('domain'); |
||||
71 | |||||
72 | $form['files'] = false; |
||||
73 | |||||
74 | $form['button']['class'] = 'btn btn-primary'; |
||||
75 | $form['button']['label'] = 'Send'; |
||||
76 | $form['button']['id'] = 'send_form_btn'; |
||||
77 | |||||
78 | $form = Form::create( |
||||
0 ignored issues
–
show
|
|||||
79 | ['title' => $request->get('title'), |
||||
80 | 'slug' => $form_slug, |
||||
81 | 'form' => $form, ] |
||||
82 | ); |
||||
83 | |||||
84 | return redirect()->route('dashboard.forms.edit', ['slug' => $form_slug]); |
||||
85 | } |
||||
86 | |||||
87 | public function edit($slug) |
||||
88 | { |
||||
89 | $form = $this->form->getBySlug($slug); |
||||
90 | $emailTemplates = $this->template->getEmailTemplates(); |
||||
91 | |||||
92 | return view('chuckcms::backend.forms.edit', compact('form', 'emailTemplates')); |
||||
93 | } |
||||
94 | |||||
95 | public function save(Request $request) |
||||
96 | { |
||||
97 | $form = []; |
||||
98 | $form_slug = $request->get('form_slug'); |
||||
99 | $fields_slug = $request->get('fields_slug'); |
||||
100 | $countFS = count($fields_slug); |
||||
0 ignored issues
–
show
It seems like
$fields_slug can also be of type null ; however, parameter $value of count() does only seem to accept Countable|array , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
101 | for ($i = 0; $i < $countFS; $i++) { |
||||
102 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['label'] = $request->get('fields_label')[$i]; |
||||
103 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['type'] = $request->get('fields_type')[$i]; |
||||
104 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['class'] = $request->get('fields_class')[$i]; |
||||
105 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['parentclass'] = $request->get('fields_parentclass')[$i]; |
||||
106 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['placeholder'] = $request->get('fields_placeholder')[$i]; |
||||
107 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['validation'] = $request->get('fields_validation')[$i]; |
||||
108 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['value'] = $request->get('fields_value')[$i]; |
||||
109 | $countFAN = count(explode(';', $request->get('fields_attributes_name')[$i])); |
||||
110 | for ($k = 0; $k < $countFAN; $k++) { |
||||
111 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['attributes'][explode(';', $request->get('fields_attributes_name')[$i])[$k]] = explode(';', $request->get('fields_attributes_value')[$i])[$k]; |
||||
112 | } |
||||
113 | $form['fields'][$form_slug.'_'.$fields_slug[$i]]['required'] = $request->get('fields_required')[$i]; |
||||
114 | } |
||||
115 | |||||
116 | $form['actions']['store'] = $request->get('action_store') == 'true' ? true : false; |
||||
117 | |||||
118 | if ($request->get('action_send') !== 'false' && $request->get('action_send') !== false) { |
||||
119 | $countActions = count($request->get('action_send_slug')); |
||||
120 | for ($g = 0; $g < $countActions; $g++) { |
||||
121 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['to'] = $request->get('action_send_to')[$g]; |
||||
122 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['to_name'] = $request->get('action_send_to_name')[$g]; |
||||
123 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['from'] = $request->get('action_send_from')[$g]; |
||||
124 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['from_name'] = $request->get('action_send_from_name')[$g]; |
||||
125 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['subject'] = $request->get('action_send_subject')[$g]; |
||||
126 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['body'] = $request->get('action_send_body')[$g]; |
||||
127 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['files'] = $request->get('action_send_files')[$g]; |
||||
128 | $form['actions']['send'][$request->get('action_send_slug')[$g]]['template'] = $request->get('action_send_template')[$g]; |
||||
129 | } |
||||
130 | } else { |
||||
131 | $form['actions']['send'] = false; |
||||
132 | } |
||||
133 | $form['actions']['redirect'] = $request->get('action_redirect'); |
||||
134 | |||||
135 | $form['files'] = $request->get('files_allowed') == 'true' ? true : false; |
||||
136 | |||||
137 | $form['button']['class'] = $request->get('button_class'); |
||||
138 | $form['button']['label'] = $request->get('button_label'); |
||||
139 | $form['button']['id'] = $request->get('button_id'); |
||||
140 | |||||
141 | // updateOrCreate the site |
||||
142 | Form::updateOrCreate( |
||||
143 | ['id' => $request->get('form_id')], |
||||
144 | ['title' => $request->get('form_title'), |
||||
145 | 'slug' => $request->get('form_slug'), |
||||
146 | 'form' => $form, ] |
||||
147 | ); |
||||
148 | |||||
149 | return redirect()->route('dashboard.forms'); |
||||
150 | } |
||||
151 | |||||
152 | public function postForm(Request $request) |
||||
153 | { |
||||
154 | $slug = $request->get('_form_slug'); |
||||
155 | $form = $this->form->getBySlug($slug); |
||||
156 | $rules = $form->getRules(); |
||||
157 | $this->validate(request(), $rules); |
||||
158 | $store = $form->storeEntry($request); |
||||
159 | if ($store !== 'error') { |
||||
160 | //send emails |
||||
161 | if ($form->form['actions']['send'] !== false) { |
||||
162 | foreach ($form->form['actions']['send'] as $sendKey => $sendValue) { |
||||
163 | $mailData = $form->getMailData($sendValue, $request, $store); |
||||
164 | Mail::send(new FormActionMail($mailData)); |
||||
165 | } |
||||
166 | } |
||||
167 | |||||
168 | return redirect()->to($form->form['actions']['redirect']); |
||||
169 | } else { |
||||
170 | // error catching ... ? |
||||
171 | } |
||||
172 | |||||
173 | return view('chuckcms::backend.forms.index', compact('forms')); |
||||
174 | } |
||||
175 | |||||
176 | /** |
||||
177 | * Delete the form. |
||||
178 | * |
||||
179 | * @param \Illuminate\Http\Request $request |
||||
180 | * |
||||
181 | * @return string $status |
||||
182 | */ |
||||
183 | public function delete(Request $request) |
||||
184 | { |
||||
185 | // AUTHORIZE ... COMES HERE |
||||
186 | $status = $this->form->deleteById($request->get('form_id')); |
||||
187 | |||||
188 | return $status; |
||||
189 | } |
||||
190 | |||||
191 | /** |
||||
192 | * Show the form entries. |
||||
193 | * |
||||
194 | * @param $slug |
||||
195 | * |
||||
196 | * @return \Illuminate\View\View |
||||
197 | */ |
||||
198 | public function entries($slug) |
||||
199 | { |
||||
200 | // AUTHORIZE ... COMES HERE |
||||
201 | $form = $this->form->getBySlug($slug); |
||||
202 | $entries = $this->formEntry->getBySlug($slug); |
||||
203 | |||||
204 | return view('chuckcms::backend.forms.entries', compact('form', 'entries')); |
||||
205 | } |
||||
206 | |||||
207 | /** |
||||
208 | * Show the form entry. |
||||
209 | * |
||||
210 | * @param $slug |
||||
211 | * @param $id |
||||
212 | * |
||||
213 | * @return \Illuminate\View\View |
||||
214 | */ |
||||
215 | public function entry($slug, $id) |
||||
216 | { |
||||
217 | // AUTHORIZE ... COMES HERE |
||||
218 | $form = $this->form->getBySlug($slug); |
||||
219 | $entry = $this->formEntry->getById($id); |
||||
220 | |||||
221 | return view('chuckcms::backend.forms.entries.index', compact('form', 'entry')); |
||||
222 | } |
||||
223 | } |
||||
224 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths