PluginProbe ʕ •ᴥ•ʔ
Disable Admin Notices – Hide Dashboard Notifications / trunk
Disable Admin Notices – Hide Dashboard Notifications vtrunk
1.4.5 trunk 1.0.0 1.0.2 1.0.3 1.0.5 1.0.6 1.1.1 1.1.3 1.1.4 1.2.0 1.2.2 1.2.3 1.2.4 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4
disable-admin-notices / libs / factory / forms / includes / complex-control.class.php
disable-admin-notices / libs / factory / forms / includes Last commit date
providers 1 year ago complex-control.class.php 1 year ago control-holder.class.php 1 year ago control.class.php 1 year ago custom-element.class.php 1 year ago form-element.class.php 1 year ago form-layout.class.php 1 year ago form.class.php 1 year ago holder.class.php 1 year ago html-builder.class.php 1 year ago index.php 3 years ago
complex-control.class.php
134 lines
1 <?php
2 /**
3 * The file contains the base class for all complex controls.
4 *
5 * @author Alex Kovalev <alex.kovalevv@gmail.com>
6 * @copyright (c) 2018, Webcraftic Ltd
7 *
8 * @package factory-forms
9 * @since 1.0.0
10 */
11
12 // Exit if accessed directly
13 if( !defined('ABSPATH') ) {
14 exit;
15 }
16 if( !class_exists('Wbcr_FactoryForms480_ComplexControl') ) {
17 /**
18 * The base class for all controls.
19 *
20 * @since 1.0.0
21 */
22 abstract class Wbcr_FactoryForms480_ComplexControl extends Wbcr_FactoryForms480_Control {
23
24 /**
25 * Is this element a complex control?
26 *
27 * @since 1.0.0
28 * @var bool
29 */
30 public $is_complex_control = true;
31
32 /**
33 * Contains a set of internal controls.
34 *
35 * @since 1.0.0
36 * @var Wbcr_FactoryForms480_Control[]
37 */
38 public $inner_controls = array();
39
40 /**
41 * Sets a provider for the control.
42 *
43 * @since 1.0.0
44 * @param Wbcr_IFactoryForms480_ValueProvider $provider
45 * @return void
46 */
47 public function setProvider($provider)
48 {
49 $this->provider = $provider;
50
51 foreach($this->inner_controls as $control) {
52 $control->setProvider($provider);
53 }
54 }
55
56 /**
57 * Returns a control name used to save data with a provider.
58 *
59 * The method can return if the control have several elements.
60 *
61 * @since 1.0.0
62 * @return array|string|null A control name.
63 */
64 public function getName()
65 {
66 $names = array();
67
68 foreach($this->inner_controls as $control) {
69 $inner_names = $control->getName();
70 if( is_array($inner_names) ) {
71 $names = array_merge($names, $inner_names);
72 } else $names[] = $inner_names;
73 }
74
75 return $names;
76 }
77
78 /**
79 * Returns an array of value to save received after submission of a form.
80 *
81 * @see getSubmitValue
82 *
83 * The array has the following format:
84 * array(
85 * 'control-name1' => 'value1',
86 * 'control-name2__sub-name1' => 'value2'
87 * 'control-name2__sub-name2' => 'value3'
88 * )
89 *
90 * @since 1.0.0
91 * @return array
92 */
93 public function getValuesToSave()
94 {
95 $values = array();
96
97 foreach($this->inner_controls as $control) {
98 $inner_values = $control->getValuesToSave();
99 if( is_array($inner_values) ) {
100 $values = array_merge($values, $inner_values);
101 } else $values[] = $inner_values;
102 }
103
104 return $values;
105 }
106
107 /**
108 * Returns an initial value of control that is used to render the control first time.
109 *
110 * @since 1.0.0
111 * @param null $index
112 * @param bool $multiple
113 * @return array
114 */
115 public function getValue($index = null, $multiple = false)
116 {
117
118 $values = array();
119 foreach($this->inner_controls as $control) {
120 $inner_values = array_merge($values, $control->getValue());
121 if( is_array($inner_values) ) {
122 $values = array_merge($values, $inner_values);
123 } else $values[] = $inner_values;
124 }
125
126 if( $index !== null ) {
127 return $values[$index];
128 } else {
129 return $values;
130 }
131 }
132 }
133 }
134