1
|
|
|
<?php namespace Anomaly\Streams\Platform\Ui\Form; |
2
|
|
|
|
3
|
|
|
use Anomaly\Streams\Platform\Addon\FieldType\FieldType; |
4
|
|
|
use Anomaly\Streams\Platform\Assignment\Contract\AssignmentInterface; |
5
|
|
|
use Anomaly\Streams\Platform\Entry\Contract\EntryInterface; |
6
|
|
|
use Anomaly\Streams\Platform\Field\Contract\FieldInterface; |
7
|
|
|
use Anomaly\Streams\Platform\Model\EloquentModel; |
8
|
|
|
use Anomaly\Streams\Platform\Stream\Contract\StreamInterface; |
9
|
|
|
use Anomaly\Streams\Platform\Support\Collection; |
10
|
|
|
use Anomaly\Streams\Platform\Traits\FiresCallbacks; |
11
|
|
|
use Anomaly\Streams\Platform\Ui\Button\Contract\ButtonInterface; |
12
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\AddAssets; |
13
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\BuildForm; |
14
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\FlashFieldValues; |
15
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\FlashFormErrors; |
16
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\LoadForm; |
17
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\LoadFormValues; |
18
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\MakeForm; |
19
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\PopulateFields; |
20
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\PostForm; |
21
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\SaveForm; |
22
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\SetFormResponse; |
23
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Command\ValidateForm; |
24
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Component\Action\ActionCollection; |
25
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Component\Action\Contract\ActionInterface; |
26
|
|
|
use Anomaly\Streams\Platform\Ui\Form\Contract\FormRepositoryInterface; |
27
|
|
|
use Closure; |
28
|
|
|
use Illuminate\Contracts\Support\MessageBag; |
29
|
|
|
use Illuminate\Foundation\Bus\DispatchesJobs; |
30
|
|
|
use Symfony\Component\HttpFoundation\Response; |
31
|
|
|
|
32
|
|
|
/** |
33
|
|
|
* Class FormBuilder |
34
|
|
|
* |
35
|
|
|
* @link http://pyrocms.com/ |
36
|
|
|
* @author PyroCMS, Inc. <[email protected]> |
37
|
|
|
* @author Ryan Thompson <[email protected]> |
38
|
|
|
*/ |
39
|
|
|
class FormBuilder |
40
|
|
|
{ |
41
|
|
|
|
42
|
|
|
use DispatchesJobs; |
43
|
|
|
use FiresCallbacks; |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* The ajax flag. |
47
|
|
|
* |
48
|
|
|
* @var bool |
49
|
|
|
*/ |
50
|
|
|
protected $ajax = false; |
51
|
|
|
|
52
|
|
|
/** |
53
|
|
|
* The form handler. |
54
|
|
|
* |
55
|
|
|
* @var null|string |
56
|
|
|
*/ |
57
|
|
|
protected $handler = null; |
58
|
|
|
|
59
|
|
|
/** |
60
|
|
|
* The form validator. |
61
|
|
|
* |
62
|
|
|
* @var null|string |
63
|
|
|
*/ |
64
|
|
|
protected $validator = null; |
65
|
|
|
|
66
|
|
|
/** |
67
|
|
|
* The form repository. |
68
|
|
|
* |
69
|
|
|
* @var null|FormRepositoryInterface |
70
|
|
|
*/ |
71
|
|
|
protected $repository = null; |
72
|
|
|
|
73
|
|
|
/** |
74
|
|
|
* The form model. |
75
|
|
|
* |
76
|
|
|
* @var null |
77
|
|
|
*/ |
78
|
|
|
protected $model = null; |
79
|
|
|
|
80
|
|
|
/** |
81
|
|
|
* The entry object. |
82
|
|
|
* |
83
|
|
|
* @var null|int |
84
|
|
|
*/ |
85
|
|
|
protected $entry = null; |
86
|
|
|
|
87
|
|
|
/** |
88
|
|
|
* The fields config. |
89
|
|
|
* |
90
|
|
|
* @var array|string |
91
|
|
|
*/ |
92
|
|
|
protected $fields = []; |
93
|
|
|
|
94
|
|
|
/** |
95
|
|
|
* Fields to skip. |
96
|
|
|
* |
97
|
|
|
* @var array|string |
98
|
|
|
*/ |
99
|
|
|
protected $skips = []; |
100
|
|
|
|
101
|
|
|
/** |
102
|
|
|
* The actions config. |
103
|
|
|
* |
104
|
|
|
* @var array|string |
105
|
|
|
*/ |
106
|
|
|
protected $actions = []; |
107
|
|
|
|
108
|
|
|
/** |
109
|
|
|
* The buttons config. |
110
|
|
|
* |
111
|
|
|
* @var array|string |
112
|
|
|
*/ |
113
|
|
|
protected $buttons = []; |
114
|
|
|
|
115
|
|
|
/** |
116
|
|
|
* The form options. |
117
|
|
|
* |
118
|
|
|
* @var array |
119
|
|
|
*/ |
120
|
|
|
protected $options = []; |
121
|
|
|
|
122
|
|
|
/** |
123
|
|
|
* The form sections. |
124
|
|
|
* |
125
|
|
|
* @var array |
126
|
|
|
*/ |
127
|
|
|
protected $sections = []; |
128
|
|
|
|
129
|
|
|
/** |
130
|
|
|
* The form assets. |
131
|
|
|
* |
132
|
|
|
* @var array |
133
|
|
|
*/ |
134
|
|
|
protected $assets = []; |
135
|
|
|
|
136
|
|
|
/** |
137
|
|
|
* The save flag. |
138
|
|
|
* |
139
|
|
|
* @var bool |
140
|
|
|
*/ |
141
|
|
|
protected $save = true; |
142
|
|
|
|
143
|
|
|
/** |
144
|
|
|
* The read only flag. |
145
|
|
|
* |
146
|
|
|
* @var bool |
147
|
|
|
*/ |
148
|
|
|
protected $readOnly = false; |
149
|
|
|
|
150
|
|
|
/** |
151
|
|
|
* The form object. |
152
|
|
|
* |
153
|
|
|
* @var Form |
154
|
|
|
*/ |
155
|
|
|
protected $form; |
156
|
|
|
|
157
|
|
|
/** |
158
|
|
|
* Crate a new FormBuilder instance. |
159
|
|
|
* |
160
|
|
|
* @param Form $form |
161
|
|
|
*/ |
162
|
|
|
public function __construct(Form $form) |
163
|
|
|
{ |
164
|
|
|
$this->form = $form; |
165
|
|
|
} |
166
|
|
|
|
167
|
|
|
/** |
168
|
|
|
* Build the form. |
169
|
|
|
* |
170
|
|
|
* @param null $entry |
171
|
|
|
* @return $this |
172
|
|
|
*/ |
173
|
|
|
public function build($entry = null) |
174
|
|
|
{ |
175
|
|
|
if ($entry) { |
176
|
|
|
$this->entry = $entry; |
177
|
|
|
} |
178
|
|
|
|
179
|
|
|
$this->fire('ready', ['builder' => $this]); |
180
|
|
|
|
181
|
|
|
$this->dispatch(new BuildForm($this)); |
182
|
|
|
|
183
|
|
|
$this->fire('built', ['builder' => $this]); |
184
|
|
|
|
185
|
|
|
return $this; |
186
|
|
|
} |
187
|
|
|
|
188
|
|
|
/** |
189
|
|
|
* Make the form. |
190
|
|
|
* |
191
|
|
|
* @param null $entry |
192
|
|
|
* @return $this |
193
|
|
|
*/ |
194
|
|
|
public function make($entry = null) |
195
|
|
|
{ |
196
|
|
|
$this->build($entry); |
197
|
|
|
$this->post(); |
198
|
|
|
|
199
|
|
|
$this->fire('make', ['builder' => $this]); |
200
|
|
|
|
201
|
|
|
if ($this->getFormResponse() === null) { |
202
|
|
|
$this->dispatch(new LoadForm($this)); |
203
|
|
|
$this->dispatch(new AddAssets($this)); |
204
|
|
|
$this->dispatch(new MakeForm($this)); |
205
|
|
|
} |
206
|
|
|
|
207
|
|
|
return $this; |
208
|
|
|
} |
209
|
|
|
|
210
|
|
|
/** |
211
|
|
|
* Handle the form post. |
212
|
|
|
* |
213
|
|
|
* @param null $entry |
214
|
|
|
* @return $this |
215
|
|
|
* @throws \Exception |
216
|
|
|
*/ |
217
|
|
|
public function handle($entry = null) |
218
|
|
|
{ |
219
|
|
|
if (!app('request')->isMethod('post')) { |
220
|
|
|
throw new \Exception('The handle method must be used with a POST request.'); |
221
|
|
|
} |
222
|
|
|
|
223
|
|
|
$this->build($entry); |
224
|
|
|
$this->post(); |
225
|
|
|
|
226
|
|
|
return $this; |
227
|
|
|
} |
228
|
|
|
|
229
|
|
|
/** |
230
|
|
|
* Trigger post operations |
231
|
|
|
* for the form. |
232
|
|
|
* |
233
|
|
|
* @return $this |
234
|
|
|
*/ |
235
|
|
|
public function post() |
236
|
|
|
{ |
237
|
|
|
if (app('request')->isMethod('post')) { |
238
|
|
|
$this->fire('post', ['builder' => $this]); |
239
|
|
|
|
240
|
|
|
if ($this->hasPostData()) { |
241
|
|
|
$this->dispatch(new PostForm($this)); |
242
|
|
|
} |
243
|
|
|
} else { |
244
|
|
|
$this->dispatch(new PopulateFields($this)); |
245
|
|
|
} |
246
|
|
|
|
247
|
|
|
return $this; |
248
|
|
|
} |
249
|
|
|
|
250
|
|
|
/** |
251
|
|
|
* Validate the form. |
252
|
|
|
* |
253
|
|
|
* @return $this |
254
|
|
|
*/ |
255
|
|
|
public function validate() |
256
|
|
|
{ |
257
|
|
|
$this->dispatch(new LoadFormValues($this)); |
258
|
|
|
$this->dispatch(new ValidateForm($this)); |
259
|
|
|
|
260
|
|
|
return $this; |
261
|
|
|
} |
262
|
|
|
|
263
|
|
|
/** |
264
|
|
|
* Flash form information to be |
265
|
|
|
* used in conjunction with redirect |
266
|
|
|
* type responses (not self handling). |
267
|
|
|
*/ |
268
|
|
|
public function flash() |
269
|
|
|
{ |
270
|
|
|
$this->dispatch(new FlashFormErrors($this)); |
271
|
|
|
$this->dispatch(new FlashFieldValues($this)); |
272
|
|
|
} |
273
|
|
|
|
274
|
|
|
/** |
275
|
|
|
* Render the form. |
276
|
|
|
* |
277
|
|
|
* @param null $entry |
278
|
|
|
* @return Response |
279
|
|
|
*/ |
280
|
|
|
public function render($entry = null) |
281
|
|
|
{ |
282
|
|
|
$this->make($entry); |
283
|
|
|
|
284
|
|
|
if (!$this->form->getResponse()) { |
285
|
|
|
$this->dispatch(new SetFormResponse($this)); |
286
|
|
|
} |
287
|
|
|
|
288
|
|
|
return $this->form->getResponse(); |
289
|
|
|
} |
290
|
|
|
|
291
|
|
|
/** |
292
|
|
|
* Fire field events. |
293
|
|
|
* |
294
|
|
|
* @param $trigger |
295
|
|
|
* @param array $payload |
296
|
|
|
*/ |
297
|
|
|
public function fireFieldEvents($trigger, array $payload = []) |
298
|
|
|
{ |
299
|
|
|
/* @var FieldType $field */ |
300
|
|
|
foreach ($this->getFormFields() as $field) { |
301
|
|
|
$field->fire($trigger, array_merge(['builder' => $this], $payload)); |
302
|
|
|
} |
303
|
|
|
} |
304
|
|
|
|
305
|
|
|
/** |
306
|
|
|
* Save the form. |
307
|
|
|
*/ |
308
|
|
|
public function saveForm() |
309
|
|
|
{ |
310
|
|
|
$this->dispatch(new SaveForm($this)); |
311
|
|
|
} |
312
|
|
|
|
313
|
|
|
/** |
314
|
|
|
* Get the form object. |
315
|
|
|
* |
316
|
|
|
* @return Form |
317
|
|
|
*/ |
318
|
|
|
public function getForm() |
319
|
|
|
{ |
320
|
|
|
return $this->form; |
321
|
|
|
} |
322
|
|
|
|
323
|
|
|
/** |
324
|
|
|
* Get the form presenter. |
325
|
|
|
* |
326
|
|
|
* @return FormPresenter |
327
|
|
|
*/ |
328
|
|
|
public function getFormPresenter() |
329
|
|
|
{ |
330
|
|
|
return $this->form->getPresenter(); |
331
|
|
|
} |
332
|
|
|
|
333
|
|
|
/** |
334
|
|
|
* Get the ajax flag. |
335
|
|
|
* |
336
|
|
|
* @return bool |
337
|
|
|
*/ |
338
|
|
|
public function isAjax() |
339
|
|
|
{ |
340
|
|
|
return $this->ajax; |
341
|
|
|
} |
342
|
|
|
|
343
|
|
|
/** |
344
|
|
|
* Set the ajax flag. |
345
|
|
|
* |
346
|
|
|
* @param $ajax |
347
|
|
|
* @return $this |
348
|
|
|
*/ |
349
|
|
|
public function setAjax($ajax) |
350
|
|
|
{ |
351
|
|
|
$this->ajax = $ajax; |
352
|
|
|
|
353
|
|
|
return $this; |
354
|
|
|
} |
355
|
|
|
|
356
|
|
|
/** |
357
|
|
|
* Get the handler. |
358
|
|
|
* |
359
|
|
|
* @return null|string |
360
|
|
|
*/ |
361
|
|
|
public function getHandler() |
362
|
|
|
{ |
363
|
|
|
return $this->handler; |
364
|
|
|
} |
365
|
|
|
|
366
|
|
|
/** |
367
|
|
|
* Set the handler. |
368
|
|
|
* |
369
|
|
|
* @param $handler |
370
|
|
|
* @return $this |
371
|
|
|
*/ |
372
|
|
|
public function setHandler($handler) |
373
|
|
|
{ |
374
|
|
|
$this->handler = $handler; |
375
|
|
|
|
376
|
|
|
return $this; |
377
|
|
|
} |
378
|
|
|
|
379
|
|
|
/** |
380
|
|
|
* Get the validator. |
381
|
|
|
* |
382
|
|
|
* @return null|string |
383
|
|
|
*/ |
384
|
|
|
public function getValidator() |
385
|
|
|
{ |
386
|
|
|
return $this->validator; |
387
|
|
|
} |
388
|
|
|
|
389
|
|
|
/** |
390
|
|
|
* Set the validator. |
391
|
|
|
* |
392
|
|
|
* @param $validator |
393
|
|
|
* @return $this |
394
|
|
|
*/ |
395
|
|
|
public function setValidator($validator) |
396
|
|
|
{ |
397
|
|
|
$this->validator = $validator; |
398
|
|
|
|
399
|
|
|
return $this; |
400
|
|
|
} |
401
|
|
|
|
402
|
|
|
/** |
403
|
|
|
* Get the repository. |
404
|
|
|
* |
405
|
|
|
* @return FormRepositoryInterface|null |
406
|
|
|
*/ |
407
|
|
|
public function getRepository() |
408
|
|
|
{ |
409
|
|
|
return $this->repository; |
410
|
|
|
} |
411
|
|
|
|
412
|
|
|
/** |
413
|
|
|
* Set the form repository. |
414
|
|
|
* |
415
|
|
|
* @param FormRepositoryInterface $repository |
416
|
|
|
* @return $this |
417
|
|
|
*/ |
418
|
|
|
public function setRepository(FormRepositoryInterface $repository) |
419
|
|
|
{ |
420
|
|
|
$this->repository = $repository; |
421
|
|
|
|
422
|
|
|
return $this; |
423
|
|
|
} |
424
|
|
|
|
425
|
|
|
/** |
426
|
|
|
* Set the form model. |
427
|
|
|
* |
428
|
|
|
* @param $model |
429
|
|
|
* @return $this |
430
|
|
|
*/ |
431
|
|
|
public function setModel($model) |
432
|
|
|
{ |
433
|
|
|
$this->model = $model; |
434
|
|
|
|
435
|
|
|
return $this; |
436
|
|
|
} |
437
|
|
|
|
438
|
|
|
/** |
439
|
|
|
* Get the form model. |
440
|
|
|
* |
441
|
|
|
* @return null |
442
|
|
|
*/ |
443
|
|
|
public function getModel() |
444
|
|
|
{ |
445
|
|
|
return $this->model; |
446
|
|
|
} |
447
|
|
|
|
448
|
|
|
/** |
449
|
|
|
* Set the entry object. |
450
|
|
|
* |
451
|
|
|
* @param $entry |
452
|
|
|
* @return $this |
453
|
|
|
*/ |
454
|
|
|
public function setEntry($entry) |
455
|
|
|
{ |
456
|
|
|
$this->entry = $entry; |
457
|
|
|
|
458
|
|
|
return $this; |
459
|
|
|
} |
460
|
|
|
|
461
|
|
|
/** |
462
|
|
|
* Get the entry object. |
463
|
|
|
* |
464
|
|
|
* @return null|EntryInterface|FieldInterface|mixed |
465
|
|
|
*/ |
466
|
|
|
public function getEntry() |
467
|
|
|
{ |
468
|
|
|
return $this->entry; |
469
|
|
|
} |
470
|
|
|
|
471
|
|
|
/** |
472
|
|
|
* Set the fields. |
473
|
|
|
* |
474
|
|
|
* @param $fields |
475
|
|
|
* @return $this |
476
|
|
|
*/ |
477
|
|
|
public function setFields($fields) |
478
|
|
|
{ |
479
|
|
|
$this->fields = $fields; |
480
|
|
|
|
481
|
|
|
return $this; |
482
|
|
|
} |
483
|
|
|
|
484
|
|
|
/** |
485
|
|
|
* Get the fields. |
486
|
|
|
* |
487
|
|
|
* @return array |
488
|
|
|
*/ |
489
|
|
|
public function getFields() |
490
|
|
|
{ |
491
|
|
|
return $this->fields; |
492
|
|
|
} |
493
|
|
|
|
494
|
|
|
/** |
495
|
|
|
* Add a field. |
496
|
|
|
* |
497
|
|
|
* @param $field |
498
|
|
|
*/ |
499
|
|
|
public function addField($field) |
500
|
|
|
{ |
501
|
|
|
$this->fields[array_get($field, 'field')] = $field; |
502
|
|
|
} |
503
|
|
|
|
504
|
|
|
/** |
505
|
|
|
* Add fields. |
506
|
|
|
* |
507
|
|
|
* @param array $fields |
508
|
|
|
*/ |
509
|
|
|
public function addFields(array $fields) |
510
|
|
|
{ |
511
|
|
|
$this->fields = array_merge($this->fields, $fields); |
512
|
|
|
} |
513
|
|
|
|
514
|
|
|
/** |
515
|
|
|
* Get the skipped fields. |
516
|
|
|
* |
517
|
|
|
* @return array |
518
|
|
|
*/ |
519
|
|
|
public function getSkips() |
520
|
|
|
{ |
521
|
|
|
return $this->skips; |
522
|
|
|
} |
523
|
|
|
|
524
|
|
|
/** |
525
|
|
|
* Set the skipped fields. |
526
|
|
|
* |
527
|
|
|
* @param $skips |
528
|
|
|
* @return $this |
529
|
|
|
*/ |
530
|
|
|
public function setSkips($skips) |
531
|
|
|
{ |
532
|
|
|
$this->skips = $skips; |
533
|
|
|
|
534
|
|
|
return $this; |
535
|
|
|
} |
536
|
|
|
|
537
|
|
|
/** |
538
|
|
|
* Merge in skipped fields. |
539
|
|
|
* |
540
|
|
|
* @param array $skips |
541
|
|
|
* @return $this |
542
|
|
|
*/ |
543
|
|
|
public function mergeSkips(array $skips) |
544
|
|
|
{ |
545
|
|
|
$this->skips = array_merge($this->skips, $skips); |
546
|
|
|
|
547
|
|
|
return $this; |
548
|
|
|
} |
549
|
|
|
|
550
|
|
|
/** |
551
|
|
|
* Add a skipped field. |
552
|
|
|
* |
553
|
|
|
* @param $fieldSlug |
554
|
|
|
* @return $this |
555
|
|
|
*/ |
556
|
|
|
public function skipField($fieldSlug) |
557
|
|
|
{ |
558
|
|
|
$this->skips[] = $fieldSlug; |
559
|
|
|
|
560
|
|
|
return $this; |
561
|
|
|
} |
562
|
|
|
|
563
|
|
|
/** |
564
|
|
|
* Set the actions config. |
565
|
|
|
* |
566
|
|
|
* @param $actions |
567
|
|
|
* @return $this |
568
|
|
|
*/ |
569
|
|
|
public function setActions($actions) |
570
|
|
|
{ |
571
|
|
|
$this->actions = $actions; |
572
|
|
|
|
573
|
|
|
return $this; |
574
|
|
|
} |
575
|
|
|
|
576
|
|
|
/** |
577
|
|
|
* Add an action. |
578
|
|
|
* |
579
|
|
|
* @param $slug |
580
|
|
|
* @param array $definition |
581
|
|
|
* @return $this |
582
|
|
|
*/ |
583
|
|
|
public function addAction($slug, array $definition = []) |
584
|
|
|
{ |
585
|
|
|
if ($definition) { |
|
|
|
|
586
|
|
|
$this->actions[$slug] = $definition; |
587
|
|
|
} else { |
588
|
|
|
$this->actions[] = $slug; |
589
|
|
|
} |
590
|
|
|
|
591
|
|
|
return $this; |
592
|
|
|
} |
593
|
|
|
|
594
|
|
|
/** |
595
|
|
|
* Get the actions config. |
596
|
|
|
* |
597
|
|
|
* @return array |
598
|
|
|
*/ |
599
|
|
|
public function getActions() |
600
|
|
|
{ |
601
|
|
|
return $this->actions; |
602
|
|
|
} |
603
|
|
|
|
604
|
|
|
/** |
605
|
|
|
* Set the buttons config. |
606
|
|
|
* |
607
|
|
|
* @param $buttons |
608
|
|
|
* @return $this |
609
|
|
|
*/ |
610
|
|
|
public function setButtons($buttons) |
611
|
|
|
{ |
612
|
|
|
$this->buttons = $buttons; |
613
|
|
|
|
614
|
|
|
return $this; |
615
|
|
|
} |
616
|
|
|
|
617
|
|
|
/** |
618
|
|
|
* Get the buttons config. |
619
|
|
|
* |
620
|
|
|
* @return array |
621
|
|
|
*/ |
622
|
|
|
public function getButtons() |
623
|
|
|
{ |
624
|
|
|
return $this->buttons; |
625
|
|
|
} |
626
|
|
|
|
627
|
|
|
/** |
628
|
|
|
* The the options. |
629
|
|
|
* |
630
|
|
|
* @return array |
631
|
|
|
*/ |
632
|
|
|
public function getOptions() |
633
|
|
|
{ |
634
|
|
|
return $this->options; |
635
|
|
|
} |
636
|
|
|
|
637
|
|
|
/** |
638
|
|
|
* Set the options. |
639
|
|
|
* |
640
|
|
|
* @param array|string $options |
641
|
|
|
* @return $this |
642
|
|
|
*/ |
643
|
|
|
public function setOptions($options) |
644
|
|
|
{ |
645
|
|
|
$this->options = $options; |
|
|
|
|
646
|
|
|
|
647
|
|
|
return $this; |
648
|
|
|
} |
649
|
|
|
|
650
|
|
|
/** |
651
|
|
|
* Merge in options. |
652
|
|
|
* |
653
|
|
|
* @param array|string $options |
654
|
|
|
* @return $this |
655
|
|
|
*/ |
656
|
|
|
public function mergeOptions($options) |
657
|
|
|
{ |
658
|
|
|
$this->options = array_merge($this->options, $options); |
659
|
|
|
|
660
|
|
|
return $this; |
661
|
|
|
} |
662
|
|
|
|
663
|
|
|
/** |
664
|
|
|
* Get the sections. |
665
|
|
|
* |
666
|
|
|
* @return array |
667
|
|
|
*/ |
668
|
|
|
public function getSections() |
669
|
|
|
{ |
670
|
|
|
return $this->sections; |
671
|
|
|
} |
672
|
|
|
|
673
|
|
|
/** |
674
|
|
|
* Set the sections. |
675
|
|
|
* |
676
|
|
|
* @param array|Closure $sections |
677
|
|
|
* @return $this |
678
|
|
|
*/ |
679
|
|
|
public function setSections($sections) |
680
|
|
|
{ |
681
|
|
|
$this->sections = $sections; |
|
|
|
|
682
|
|
|
|
683
|
|
|
return $this; |
684
|
|
|
} |
685
|
|
|
|
686
|
|
|
/** |
687
|
|
|
* Add a section. |
688
|
|
|
* |
689
|
|
|
* @param $slug |
690
|
|
|
* @param array $section |
691
|
|
|
* @param null $position |
692
|
|
|
* @return $this |
693
|
|
|
*/ |
694
|
|
View Code Duplication |
public function addSection($slug, array $section, $position = null) |
|
|
|
|
695
|
|
|
{ |
696
|
|
|
if ($position === null) { |
697
|
|
|
$position = count($this->sections) + 1; |
698
|
|
|
} |
699
|
|
|
|
700
|
|
|
$front = array_slice($this->sections, 0, $position, true); |
701
|
|
|
$back = array_slice($this->sections, $position, count($this->sections) - $position, true); |
702
|
|
|
|
703
|
|
|
$this->sections = $front + [$slug => $section] + $back; |
704
|
|
|
|
705
|
|
|
return $this; |
706
|
|
|
} |
707
|
|
|
|
708
|
|
|
/** |
709
|
|
|
* Add a section tab. |
710
|
|
|
* |
711
|
|
|
* @param $section |
712
|
|
|
* @param $slug |
713
|
|
|
* @param array $tab |
714
|
|
|
* @param null $position |
715
|
|
|
* @return $this |
716
|
|
|
*/ |
717
|
|
View Code Duplication |
public function addSectionTab($section, $slug, array $tab, $position = null) |
|
|
|
|
718
|
|
|
{ |
719
|
|
|
$tabs = (array)array_get($this->sections, "{$section}.tabs"); |
720
|
|
|
|
721
|
|
|
if ($position === null) { |
722
|
|
|
$position = count($tabs) + 1; |
723
|
|
|
} |
724
|
|
|
|
725
|
|
|
$front = array_slice($tabs, 0, $position, true); |
726
|
|
|
$back = array_slice($tabs, $position, count($tabs) - $position, true); |
727
|
|
|
|
728
|
|
|
$tabs = $front + [$slug => $tab] + $back; |
729
|
|
|
|
730
|
|
|
array_set($this->sections, "{$section}.tabs", $tabs); |
731
|
|
|
|
732
|
|
|
return $this; |
733
|
|
|
} |
734
|
|
|
|
735
|
|
|
/** |
736
|
|
|
* Get an option value. |
737
|
|
|
* |
738
|
|
|
* @param $key |
739
|
|
|
* @param null $default |
740
|
|
|
* @return mixed |
741
|
|
|
*/ |
742
|
|
|
public function getOption($key, $default = null) |
743
|
|
|
{ |
744
|
|
|
return array_get($this->options, $key, $default); |
745
|
|
|
} |
746
|
|
|
|
747
|
|
|
/** |
748
|
|
|
* Set an option value. |
749
|
|
|
* |
750
|
|
|
* @param $key |
751
|
|
|
* @param $value |
752
|
|
|
* @return $this |
753
|
|
|
*/ |
754
|
|
|
public function setOption($key, $value) |
755
|
|
|
{ |
756
|
|
|
array_set($this->options, $key, $value); |
757
|
|
|
|
758
|
|
|
return $this; |
759
|
|
|
} |
760
|
|
|
|
761
|
|
|
/** |
762
|
|
|
* Get the assets. |
763
|
|
|
* |
764
|
|
|
* @return array |
765
|
|
|
*/ |
766
|
|
|
public function getAssets() |
767
|
|
|
{ |
768
|
|
|
return $this->assets; |
769
|
|
|
} |
770
|
|
|
|
771
|
|
|
/** |
772
|
|
|
* Set the assets. |
773
|
|
|
* |
774
|
|
|
* @param $assets |
775
|
|
|
* @return $this |
776
|
|
|
*/ |
777
|
|
|
public function setAssets($assets) |
778
|
|
|
{ |
779
|
|
|
$this->assets = $assets; |
780
|
|
|
|
781
|
|
|
return $this; |
782
|
|
|
} |
783
|
|
|
|
784
|
|
|
/** |
785
|
|
|
* Add an asset. |
786
|
|
|
* |
787
|
|
|
* @param $collection |
788
|
|
|
* @param $asset |
789
|
|
|
* @return $this |
790
|
|
|
*/ |
791
|
|
View Code Duplication |
public function addAsset($collection, $asset) |
|
|
|
|
792
|
|
|
{ |
793
|
|
|
if (!isset($this->assets[$collection])) { |
794
|
|
|
$this->assets[$collection] = []; |
795
|
|
|
} |
796
|
|
|
|
797
|
|
|
$this->assets[$collection][] = $asset; |
798
|
|
|
|
799
|
|
|
return $this; |
800
|
|
|
} |
801
|
|
|
|
802
|
|
|
/** |
803
|
|
|
* Get the form's stream. |
804
|
|
|
* |
805
|
|
|
* @return StreamInterface|null |
806
|
|
|
*/ |
807
|
|
|
public function getFormStream() |
808
|
|
|
{ |
809
|
|
|
return $this->form->getStream(); |
810
|
|
|
} |
811
|
|
|
|
812
|
|
|
/** |
813
|
|
|
* Get a form option value. |
814
|
|
|
* |
815
|
|
|
* @param $key |
816
|
|
|
* @param null $default |
817
|
|
|
* @return mixed |
818
|
|
|
*/ |
819
|
|
|
public function getFormOption($key, $default = null) |
820
|
|
|
{ |
821
|
|
|
return $this->form->getOption($key, $default); |
822
|
|
|
} |
823
|
|
|
|
824
|
|
|
/** |
825
|
|
|
* Set a form option value. |
826
|
|
|
* |
827
|
|
|
* @param $key |
828
|
|
|
* @param $value |
829
|
|
|
* @return $this |
830
|
|
|
*/ |
831
|
|
|
public function setFormOption($key, $value) |
832
|
|
|
{ |
833
|
|
|
$this->form->setOption($key, $value); |
834
|
|
|
|
835
|
|
|
return $this; |
836
|
|
|
} |
837
|
|
|
|
838
|
|
|
/** |
839
|
|
|
* Get the form options. |
840
|
|
|
* |
841
|
|
|
* @return \Anomaly\Streams\Platform\Support\Collection |
842
|
|
|
*/ |
843
|
|
|
public function getFormOptions() |
844
|
|
|
{ |
845
|
|
|
return $this->form->getOptions(); |
846
|
|
|
} |
847
|
|
|
|
848
|
|
|
/** |
849
|
|
|
* Get the form model. |
850
|
|
|
* |
851
|
|
|
* @return \Anomaly\Streams\Platform\Entry\EntryModel|EloquentModel|null |
852
|
|
|
*/ |
853
|
|
|
public function getFormModel() |
854
|
|
|
{ |
855
|
|
|
return $this->form->getModel(); |
856
|
|
|
} |
857
|
|
|
|
858
|
|
|
/** |
859
|
|
|
* Get the form entry. |
860
|
|
|
* |
861
|
|
|
* @return EloquentModel|EntryInterface|FieldInterface|AssignmentInterface |
862
|
|
|
*/ |
863
|
|
|
public function getFormEntry() |
864
|
|
|
{ |
865
|
|
|
return $this->form->getEntry(); |
866
|
|
|
} |
867
|
|
|
|
868
|
|
|
/** |
869
|
|
|
* Return the form entry's ID. |
870
|
|
|
* |
871
|
|
|
* @return int|mixed|null |
872
|
|
|
*/ |
873
|
|
|
public function getFormEntryId() |
874
|
|
|
{ |
875
|
|
|
$entry = $this->getFormEntry(); |
876
|
|
|
|
877
|
|
|
if (!$entry instanceof EloquentModel) { |
878
|
|
|
return null; |
879
|
|
|
} |
880
|
|
|
|
881
|
|
|
return $entry->getId(); |
882
|
|
|
} |
883
|
|
|
|
884
|
|
|
/** |
885
|
|
|
* Get the contextual entry ID. |
886
|
|
|
* |
887
|
|
|
* @return int|null |
888
|
|
|
*/ |
889
|
|
|
public function getContextualId() |
890
|
|
|
{ |
891
|
|
|
return $this->getFormEntryId(); |
892
|
|
|
} |
893
|
|
|
|
894
|
|
|
/** |
895
|
|
|
* Get the form mode. |
896
|
|
|
* |
897
|
|
|
* @return null|string |
898
|
|
|
*/ |
899
|
|
|
public function getFormMode() |
900
|
|
|
{ |
901
|
|
|
return $this->form->getMode(); |
902
|
|
|
} |
903
|
|
|
|
904
|
|
|
/** |
905
|
|
|
* Set the form mode. |
906
|
|
|
* |
907
|
|
|
* @param $mode |
908
|
|
|
* @return $this |
909
|
|
|
*/ |
910
|
|
|
public function setFormMode($mode) |
911
|
|
|
{ |
912
|
|
|
$this->form->setMode($mode); |
913
|
|
|
|
914
|
|
|
return $this; |
915
|
|
|
} |
916
|
|
|
|
917
|
|
|
/** |
918
|
|
|
* Get a form value. |
919
|
|
|
* |
920
|
|
|
* @param $key |
921
|
|
|
* @param null $default |
922
|
|
|
* @return mixed |
923
|
|
|
*/ |
924
|
|
|
public function getFormValue($key, $default = null) |
925
|
|
|
{ |
926
|
|
|
return $this->form->getValue($key, $default); |
927
|
|
|
} |
928
|
|
|
|
929
|
|
|
/** |
930
|
|
|
* Set a form value. |
931
|
|
|
* |
932
|
|
|
* @param $key |
933
|
|
|
* @param $value |
934
|
|
|
* @return $this |
935
|
|
|
*/ |
936
|
|
|
public function setFormValue($key, $value) |
937
|
|
|
{ |
938
|
|
|
$this->form->setValue($key, $value); |
939
|
|
|
|
940
|
|
|
return $this; |
941
|
|
|
} |
942
|
|
|
|
943
|
|
|
/** |
944
|
|
|
* Get the form values. |
945
|
|
|
* |
946
|
|
|
* @return \Anomaly\Streams\Platform\Support\Collection |
947
|
|
|
*/ |
948
|
|
|
public function getFormValues() |
949
|
|
|
{ |
950
|
|
|
return $this->form->getValues(); |
951
|
|
|
} |
952
|
|
|
|
953
|
|
|
/** |
954
|
|
|
* Reset the form. |
955
|
|
|
* |
956
|
|
|
* @return $this |
957
|
|
|
*/ |
958
|
|
|
public function resetForm() |
959
|
|
|
{ |
960
|
|
|
$this->form |
961
|
|
|
->resetFields() |
962
|
|
|
->setValues(new Collection()); |
963
|
|
|
|
964
|
|
|
return $this; |
965
|
|
|
} |
966
|
|
|
|
967
|
|
|
/** |
968
|
|
|
* Get the form input. |
969
|
|
|
* |
970
|
|
|
* @return array |
971
|
|
|
*/ |
972
|
|
|
public function getFormInput() |
973
|
|
|
{ |
974
|
|
|
$values = $this->getFormValues(); |
975
|
|
|
|
976
|
|
|
return $values->all(); |
977
|
|
|
} |
978
|
|
|
|
979
|
|
|
/** |
980
|
|
|
* Get the form data. |
981
|
|
|
* |
982
|
|
|
* @return \Anomaly\Streams\Platform\Support\Collection |
983
|
|
|
*/ |
984
|
|
|
public function getFormData() |
985
|
|
|
{ |
986
|
|
|
return $this->form->getData(); |
987
|
|
|
} |
988
|
|
|
|
989
|
|
|
/** |
990
|
|
|
* Add form data. |
991
|
|
|
* |
992
|
|
|
* @param $key |
993
|
|
|
* @param $value |
994
|
|
|
* @return $this |
995
|
|
|
*/ |
996
|
|
|
public function addFormData($key, $value) |
997
|
|
|
{ |
998
|
|
|
$this->form->addData($key, $value); |
999
|
|
|
|
1000
|
|
|
return $this; |
1001
|
|
|
} |
1002
|
|
|
|
1003
|
|
|
/** |
1004
|
|
|
* Ge the form response. |
1005
|
|
|
* |
1006
|
|
|
* @return null|Response |
1007
|
|
|
*/ |
1008
|
|
|
public function getFormResponse() |
1009
|
|
|
{ |
1010
|
|
|
return $this->form->getResponse(); |
1011
|
|
|
} |
1012
|
|
|
|
1013
|
|
|
/** |
1014
|
|
|
* Set the form response. |
1015
|
|
|
* |
1016
|
|
|
* @param null|false|Response $response |
1017
|
|
|
* @return $this |
1018
|
|
|
*/ |
1019
|
|
|
public function setFormResponse(Response $response) |
1020
|
|
|
{ |
1021
|
|
|
$this->form->setResponse($response); |
1022
|
|
|
|
1023
|
|
|
return $this; |
1024
|
|
|
} |
1025
|
|
|
|
1026
|
|
|
/** |
1027
|
|
|
* Get the form content. |
1028
|
|
|
* |
1029
|
|
|
* @return null|string |
1030
|
|
|
*/ |
1031
|
|
|
public function getFormContent() |
1032
|
|
|
{ |
1033
|
|
|
return $this->form->getContent(); |
1034
|
|
|
} |
1035
|
|
|
|
1036
|
|
|
/** |
1037
|
|
|
* Get the form fields. |
1038
|
|
|
* |
1039
|
|
|
* @return Component\Field\FieldCollection |
1040
|
|
|
*/ |
1041
|
|
|
public function getFormFields() |
1042
|
|
|
{ |
1043
|
|
|
return $this->form->getFields(); |
1044
|
|
|
} |
1045
|
|
|
|
1046
|
|
|
/** |
1047
|
|
|
* Get the enabled form fields. |
1048
|
|
|
* |
1049
|
|
|
* @return Component\Field\FieldCollection |
1050
|
|
|
*/ |
1051
|
|
|
public function getEnabledFormFields() |
1052
|
|
|
{ |
1053
|
|
|
return $this->form->getEnabledFields(); |
1054
|
|
|
} |
1055
|
|
|
|
1056
|
|
|
/** |
1057
|
|
|
* Get the form field. |
1058
|
|
|
* |
1059
|
|
|
* @param $fieldSlug |
1060
|
|
|
* @return FieldType |
1061
|
|
|
*/ |
1062
|
|
|
public function getFormField($fieldSlug) |
1063
|
|
|
{ |
1064
|
|
|
return $this->form->getField($fieldSlug); |
1065
|
|
|
} |
1066
|
|
|
|
1067
|
|
|
/** |
1068
|
|
|
* Get the form attribute map. |
1069
|
|
|
* |
1070
|
|
|
* @return FieldType |
1071
|
|
|
*/ |
1072
|
|
|
public function getFormFieldFromAttribute($attribute) |
1073
|
|
|
{ |
1074
|
|
|
/* @var FieldType $field */ |
1075
|
|
|
foreach ($this->form->getFields() as $field) { |
1076
|
|
|
if ($field->getInputName() == $attribute) { |
1077
|
|
|
return $field; |
1078
|
|
|
} |
1079
|
|
|
} |
1080
|
|
|
|
1081
|
|
|
return null; |
1082
|
|
|
} |
1083
|
|
|
|
1084
|
|
|
/** |
1085
|
|
|
* Disable a form field. |
1086
|
|
|
* |
1087
|
|
|
* @param $fieldSlug |
1088
|
|
|
* @return $this |
1089
|
|
|
*/ |
1090
|
|
|
public function disableFormField($fieldSlug) |
1091
|
|
|
{ |
1092
|
|
|
$this->form->disableField($fieldSlug); |
1093
|
|
|
|
1094
|
|
|
return $this; |
1095
|
|
|
} |
1096
|
|
|
|
1097
|
|
|
/** |
1098
|
|
|
* Get the form field slugs. |
1099
|
|
|
* |
1100
|
|
|
* @param null $prefix |
1101
|
|
|
* @return array |
1102
|
|
|
*/ |
1103
|
|
|
public function getFormFieldSlugs($prefix = null) |
1104
|
|
|
{ |
1105
|
|
|
$fields = $this->form->getFields(); |
1106
|
|
|
|
1107
|
|
|
return array_map( |
1108
|
|
|
function ($slug) use ($prefix) { |
1109
|
|
|
return $prefix . $slug; |
1110
|
|
|
}, |
1111
|
|
|
array_unique($fields->pluck('field')->all()) |
1112
|
|
|
); |
1113
|
|
|
} |
1114
|
|
|
|
1115
|
|
|
/** |
1116
|
|
|
* Get the form field names. |
1117
|
|
|
* |
1118
|
|
|
* @return array |
1119
|
|
|
*/ |
1120
|
|
|
public function getFormFieldNames() |
1121
|
|
|
{ |
1122
|
|
|
$fields = $this->form->getFields(); |
1123
|
|
|
|
1124
|
|
|
return $fields->pluck('field_name')->all(); |
1125
|
|
|
} |
1126
|
|
|
|
1127
|
|
|
/** |
1128
|
|
|
* Add a form field. |
1129
|
|
|
* |
1130
|
|
|
* @param FieldType $field |
1131
|
|
|
* @return $this |
1132
|
|
|
*/ |
1133
|
|
|
public function addFormField(FieldType $field) |
1134
|
|
|
{ |
1135
|
|
|
$this->form->addField($field); |
1136
|
|
|
|
1137
|
|
|
return $this; |
1138
|
|
|
} |
1139
|
|
|
|
1140
|
|
|
/** |
1141
|
|
|
* Set the form errors. |
1142
|
|
|
* |
1143
|
|
|
* @param MessageBag $errors |
1144
|
|
|
* @return $this |
1145
|
|
|
*/ |
1146
|
|
|
public function setFormErrors(MessageBag $errors) |
1147
|
|
|
{ |
1148
|
|
|
$this->form->setErrors($errors); |
|
|
|
|
1149
|
|
|
|
1150
|
|
|
return $this; |
1151
|
|
|
} |
1152
|
|
|
|
1153
|
|
|
/** |
1154
|
|
|
* Get the form errors. |
1155
|
|
|
* |
1156
|
|
|
* @return null|MessageBag |
1157
|
|
|
*/ |
1158
|
|
|
public function getFormErrors() |
1159
|
|
|
{ |
1160
|
|
|
return $this->form->getErrors(); |
1161
|
|
|
} |
1162
|
|
|
|
1163
|
|
|
/** |
1164
|
|
|
* Add an error to the form. |
1165
|
|
|
* |
1166
|
|
|
* @param $field |
1167
|
|
|
* @param $message |
1168
|
|
|
* @return $this |
1169
|
|
|
*/ |
1170
|
|
|
public function addFormError($field, $message) |
1171
|
|
|
{ |
1172
|
|
|
$errors = $this->getFormErrors(); |
1173
|
|
|
|
1174
|
|
|
$errors->add($field, $message); |
1175
|
|
|
|
1176
|
|
|
return $this; |
1177
|
|
|
} |
1178
|
|
|
|
1179
|
|
|
/** |
1180
|
|
|
* Return whether the form has errors or not. |
1181
|
|
|
* |
1182
|
|
|
* @return bool |
1183
|
|
|
*/ |
1184
|
|
|
public function hasFormErrors() |
1185
|
|
|
{ |
1186
|
|
|
$errors = $this->form->getErrors(); |
1187
|
|
|
|
1188
|
|
|
return !$errors->isEmpty(); |
1189
|
|
|
} |
1190
|
|
|
|
1191
|
|
|
/** |
1192
|
|
|
* Return whether the field has an error or not. |
1193
|
|
|
* |
1194
|
|
|
* @param $fieldName |
1195
|
|
|
* @return bool |
1196
|
|
|
*/ |
1197
|
|
|
public function hasFormError($fieldName) |
1198
|
|
|
{ |
1199
|
|
|
return $this->form->hasError($fieldName); |
1200
|
|
|
} |
1201
|
|
|
|
1202
|
|
|
/** |
1203
|
|
|
* Get the form actions. |
1204
|
|
|
* |
1205
|
|
|
* @return ActionCollection |
1206
|
|
|
*/ |
1207
|
|
|
public function getFormActions() |
1208
|
|
|
{ |
1209
|
|
|
return $this->form->getActions(); |
1210
|
|
|
} |
1211
|
|
|
|
1212
|
|
|
/** |
1213
|
|
|
* Get the active form action. |
1214
|
|
|
* |
1215
|
|
|
* @return null|ActionInterface |
1216
|
|
|
*/ |
1217
|
|
|
public function getActiveFormAction() |
1218
|
|
|
{ |
1219
|
|
|
if (!$actions = $this->form->getActions()) { |
1220
|
|
|
return null; |
1221
|
|
|
} |
1222
|
|
|
|
1223
|
|
|
if (!$active = $actions->active()) { |
1224
|
|
|
return null; |
1225
|
|
|
} |
1226
|
|
|
|
1227
|
|
|
return $active; |
1228
|
|
|
} |
1229
|
|
|
|
1230
|
|
|
/** |
1231
|
|
|
* Add a form button. |
1232
|
|
|
* |
1233
|
|
|
* @param ButtonInterface $button |
1234
|
|
|
* @return $this |
1235
|
|
|
*/ |
1236
|
|
|
public function addFormButton(ButtonInterface $button) |
1237
|
|
|
{ |
1238
|
|
|
$this->form->addButton($button); |
1239
|
|
|
|
1240
|
|
|
return $this; |
1241
|
|
|
} |
1242
|
|
|
|
1243
|
|
|
/** |
1244
|
|
|
* Add a form section. |
1245
|
|
|
* |
1246
|
|
|
* @param $slug |
1247
|
|
|
* @param array $section |
1248
|
|
|
* @return $this |
1249
|
|
|
*/ |
1250
|
|
|
public function addFormSection($slug, array $section) |
1251
|
|
|
{ |
1252
|
|
|
$this->form->addSection($slug, $section); |
1253
|
|
|
|
1254
|
|
|
return $this; |
1255
|
|
|
} |
1256
|
|
|
|
1257
|
|
|
/** |
1258
|
|
|
* Set the form entry. |
1259
|
|
|
* |
1260
|
|
|
* @param $entry |
1261
|
|
|
* @return $this |
1262
|
|
|
*/ |
1263
|
|
|
public function setFormEntry($entry) |
1264
|
|
|
{ |
1265
|
|
|
$this->form->setEntry($entry); |
1266
|
|
|
|
1267
|
|
|
return $this; |
1268
|
|
|
} |
1269
|
|
|
|
1270
|
|
|
/** |
1271
|
|
|
* Get a request value. |
1272
|
|
|
* |
1273
|
|
|
* @param $key |
1274
|
|
|
* @param null $default |
1275
|
|
|
* @return mixed |
1276
|
|
|
*/ |
1277
|
|
|
public function getRequestValue($key, $default = null) |
|
|
|
|
1278
|
|
|
{ |
1279
|
|
|
return array_get($_REQUEST, $this->getOption('prefix') . $key, $default); |
1280
|
|
|
} |
1281
|
|
|
|
1282
|
|
|
/** |
1283
|
|
|
* Get a post value. |
1284
|
|
|
* |
1285
|
|
|
* @param $key |
1286
|
|
|
* @param null $default |
1287
|
|
|
* @return mixed |
1288
|
|
|
*/ |
1289
|
|
|
public function getPostValue($key, $default = null) |
|
|
|
|
1290
|
|
|
{ |
1291
|
|
|
return array_get($_POST, $this->getOption('prefix') . $key, $default); |
1292
|
|
|
} |
1293
|
|
|
|
1294
|
|
|
/** |
1295
|
|
|
* Return a post key flag. |
1296
|
|
|
* |
1297
|
|
|
* @param $key |
1298
|
|
|
* @param null $default |
|
|
|
|
1299
|
|
|
* @return mixed |
1300
|
|
|
*/ |
1301
|
|
|
public function hasPostedInput($key) |
|
|
|
|
1302
|
|
|
{ |
1303
|
|
|
return isset($_POST[$this->getOption('prefix') . $key]); |
1304
|
|
|
} |
1305
|
|
|
|
1306
|
|
|
/** |
1307
|
|
|
* Return whether any post data exists. |
1308
|
|
|
* |
1309
|
|
|
* @return bool |
1310
|
|
|
*/ |
1311
|
|
|
public function hasPostData() |
1312
|
|
|
{ |
1313
|
|
|
/* @var FieldType $field */ |
1314
|
|
|
foreach ($this->getFormFields() as $field) { |
1315
|
|
|
if ($field->hasPostedInput()) { |
1316
|
|
|
return true; |
1317
|
|
|
} |
1318
|
|
|
} |
1319
|
|
|
|
1320
|
|
|
return false; |
1321
|
|
|
} |
1322
|
|
|
|
1323
|
|
|
/** |
1324
|
|
|
* Return whether any post data exists. |
1325
|
|
|
* |
1326
|
|
|
* @return array |
1327
|
|
|
*/ |
1328
|
|
|
public function getPostData() |
|
|
|
|
1329
|
|
|
{ |
1330
|
|
|
$fields = $this->getFormFieldSlugs($this->getOption('prefix')); |
1331
|
|
|
|
1332
|
|
|
return array_intersect_key($_POST, array_flip($fields)); |
1333
|
|
|
} |
1334
|
|
|
|
1335
|
|
|
/** |
1336
|
|
|
* Set the save flag. |
1337
|
|
|
* |
1338
|
|
|
* @param bool $save |
1339
|
|
|
* @return $this |
1340
|
|
|
*/ |
1341
|
|
|
public function setSave($save) |
1342
|
|
|
{ |
1343
|
|
|
$this->save = $save; |
1344
|
|
|
|
1345
|
|
|
return $this; |
1346
|
|
|
} |
1347
|
|
|
|
1348
|
|
|
/** |
1349
|
|
|
* Return the save flag. |
1350
|
|
|
* |
1351
|
|
|
* @return bool |
1352
|
|
|
*/ |
1353
|
|
|
public function canSave() |
1354
|
|
|
{ |
1355
|
|
|
return $this->save; |
1356
|
|
|
} |
1357
|
|
|
|
1358
|
|
|
/** |
1359
|
|
|
* Set the read only flag. |
1360
|
|
|
* |
1361
|
|
|
* @param $readOnly |
1362
|
|
|
* @return $this |
1363
|
|
|
*/ |
1364
|
|
|
public function setReadOnly($readOnly) |
1365
|
|
|
{ |
1366
|
|
|
$this->readOnly = $readOnly; |
1367
|
|
|
|
1368
|
|
|
return $this; |
1369
|
|
|
} |
1370
|
|
|
|
1371
|
|
|
/** |
1372
|
|
|
* Return the read only flag. |
1373
|
|
|
* |
1374
|
|
|
* @return bool |
1375
|
|
|
*/ |
1376
|
|
|
public function isReadOnly() |
1377
|
|
|
{ |
1378
|
|
|
return $this->readOnly; |
1379
|
|
|
} |
1380
|
|
|
} |
1381
|
|
|
|
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.