Bitrix-D7  20.5.0
booleanfield.php
См. документацию.
1 <?php
2 /**
3  * Bitrix Framework
4  * @package bitrix
5  * @subpackage main
6  * @copyright 2001-2012 Bitrix
7  */
8 
9 namespace Bitrix\Main\ORM\Fields;
10 
11 /**
12  * Entity field class for boolean data type
13  * @package bitrix
14  * @subpackage main
15  */
17 {
18  /**
19  * Value (false, true) equivalent map
20  * @var array
21  */
22  protected $values;
23 
24  /**
25  * BooleanField constructor.
26  *
27  * @param $name
28  * @param array $parameters deprecated, use configure* and add* methods instead
29  *
30  * @throws \Bitrix\Main\SystemException
31  */
32  function __construct($name, $parameters = array())
33  {
34  parent::__construct($name, $parameters);
35 
36  if (empty($parameters['values']))
37  {
38  $this->values = array(false, true);
39  }
40  else
41  {
42  $this->values = $parameters['values'];
43  }
44 
45  $this->addSaveDataModifier(array($this, 'normalizeValue'));
46  }
47 
48  /**
49  * @param $falseValue
50  * @param $trueValue
51  *
52  * @return $this
53  */
54  public function configureStorageValues($falseValue, $trueValue)
55  {
56  $this->values = [$falseValue, $trueValue];
57  return $this;
58  }
59 
60  /**
61  * Short alias for configureStorageValues
62  *
63  * @param $falseValue
64  * @param $trueValue
65  *
66  * @return BooleanField
67  */
68  public function configureValues($falseValue, $trueValue)
69  {
70  return $this->configureStorageValues($falseValue, $trueValue);
71  }
72 
73  /**
74  * Convert true/false values to actual field values
75  * @param boolean|integer|string $value
76  * @return mixed
77  */
78  public function normalizeValue($value)
79  {
80  if (
81  (is_string($value) && ($value == '1' || $value == '0'))
82  ||
83  (is_bool($value))
84  )
85  {
86  $value = (int) $value;
87  }
88  elseif (is_string($value) && $value == 'true')
89  {
90  $value = 1;
91  }
92  elseif (is_string($value) && $value == 'false')
93  {
94  $value = 0;
95  }
96 
97  if (is_integer($value) && ($value == 1 || $value == 0))
98  {
99  $value = $this->values[$value];
100  }
101 
102  return $value;
103  }
104 
105  /**
106  * Converts any possible value to strict boolean.
107  *
108  * @param $value
109  *
110  * @return bool
111  */
112  public function booleanizeValue($value)
113  {
114  if (is_bool($value))
115  {
116  return $value;
117  }
118 
119  $normalizedValue = $this->normalizeValue($value);
120  return (bool) array_search($normalizedValue, $this->values, true);
121  }
122 
123  /**
124  * @return array|\Bitrix\Main\ORM\Fields\Validators\Validator[]|callback[]
125  * @throws \Bitrix\Main\ArgumentTypeException
126  * @throws \Bitrix\Main\SystemException
127  */
128  public function getValidators()
129  {
130  $validators = parent::getValidators();
131 
132  if ($this->validation === null)
133  {
135  }
136 
137  return $validators;
138  }
139 
140  public function getValues()
141  {
142  return $this->values;
143  }
144 
145  public function isValueEmpty($value)
146  {
147  return (strval($value) === '' && $value !== false);
148  }
149 
150  /**
151  * @param mixed $value
152  *
153  * @return mixed
154  */
155  public function cast($value)
156  {
157  return $this->booleanizeValue($value);
158  }
159 
160  /**
161  * @param $value
162  *
163  * @return mixed
164  */
165  public function convertValueFromDb($value)
166  {
167  return $this->booleanizeValue($value);
168  }
169 
170  /**
171  * @param mixed $value
172  *
173  * @return string
174  * @throws \Bitrix\Main\SystemException
175  */
176  public function convertValueToDb($value)
177  {
178  return $this->getConnection()->getSqlHelper()->convertToDbString(
179  $this->normalizeValue($value)
180  );
181  }
182 
183  /**
184  * @return string
185  */
186  public function getGetterTypeHint()
187  {
188  return '\\boolean';
189  }
190 
191  /**
192  * @return string
193  */
194  public function getSetterTypeHint()
195  {
196  return '\\boolean';
197  }
198 }
configureStorageValues($falseValue, $trueValue)
configureValues($falseValue, $trueValue)
Short alias for configureStorageValues.
normalizeValue($value)
Convert true/false values to actual field values.
__construct($name, $parameters=array())
BooleanField constructor.
booleanizeValue($value)
Converts any possible value to strict boolean.
__construct(Base $connector)
Constructor.
Definition: resultview.php:40