Bitrix-D7  20.0.0
Класс PropertyBase
Граф наследования:PropertyBase:
Property

Открытые члены

 getField ($name)
 
 getGroupInfo ()
 
 __construct (array $property, array $relation=null)
 PropertyBase constructor. Подробнее...
 
 normalizeValue ($value)
 
 checkValue ($value)
 
 checkRequiredValue ($value)
 
 getPreparedValueForSave (PropertyValueBase $propertyValue)
 
 getViewHtml ($value)
 
 getEditHtml (array $values)
 
 getFields ()
 
 getId ()
 
 getPersonTypeId ()
 
 getGroupId ()
 
 getName ()
 
 getRelations ()
 
 getDescription ()
 
 getType ()
 
 isRequired ()
 
 isUtil ()
 
 getOptions ()
 
 onValueDelete ($value)
 

Открытые статические члены

static getRegistryType ()
 
static getList (array $parameters=array())
 
static getObjectById ($propertyId)
 
static getMeaningfulValues ($personTypeId, $request)
 

Защищенные члены

 loadOptions ()
 
 loadRelations ()
 

Защищенные данные

 $fields = []
 

Подробное описание

См. определение в файле propertybase.php строка 14

Конструктор(ы)

◆ __construct()

__construct ( array  $property,
array  $relation = null 
)

PropertyBase constructor.

Аргументы
array$property
array | null$relation
Исключения
Main

См. определение в файле propertybase.php строка 114

115  {
116  if (is_array($property['SETTINGS']))
117  {
118  $property += $property['SETTINGS'];
119  unset ($property['SETTINGS']);
120  }
121 
122  $this->fields = $property;
123 
124  if ($relation)
125  {
126  $this->fields['RELATION'] = $relation;
127  }
128  else
129  {
130  $relation = $this->loadRelations();
131  if ($relation)
132  {
133  $this->fields['RELATION'] = $relation;
134  }
135  }
136 
137  if ($this->fields['TYPE'] === 'ENUM')
138  {
139  if (!isset($property['OPTIONS']))
140  {
141  $this->fields['OPTIONS'] = $this->loadOptions();
142  }
143  }
144 
145  $this->fields['DEFAULT_VALUE'] = $this->normalizeValue($this->fields['DEFAULT_VALUE']);
146  }

Методы

◆ checkRequiredValue()

checkRequiredValue (   $value)
Аргументы
$key
$value
Возвращает
Result
Исключения
Main

См. определение в файле propertybase.php строка 354

355  {
356  static $errors = [];
357 
358  $result = new Result();
359 
360  $errorList = Input\Manager::getRequiredError($this->fields, $value);
361 
362  foreach ($errorList as $error)
363  {
364  if (is_array($error))
365  {
366  foreach ($error as $message)
367  {
368  $result->addError(new ResultError($this->getField('NAME').' '.$message));
369  $errors[$this->getId()][] = $message;
370  }
371  }
372  else
373  {
374  $result->addError(new ResultError($this->getName().' '.$error));
375  $errors[$this->getId()][] = $error;
376  }
377  }
378 
379  return $result;
380  }

◆ checkValue()

checkValue (   $value)
Аргументы
$value
Возвращает
Result
Исключения
Main

См. определение в файле propertybase.php строка 282

283  {
284  $result = new Result();
285 
286  static $errors = [];
287 
288  if (
289  $this->getField('TYPE') === "STRING"
290  && (int)$this->getField('MAXLENGTH') <= 0
291  )
292  {
293  $this->fields['MAXLENGTH'] = 500;
294  }
295 
296  $error = Input\Manager::getError($this->fields, $value);
297 
298  if (!is_array($error))
299  {
300  $error = array($error);
301  }
302 
303  foreach ($error as $item)
304  {
305  if (!is_array($item))
306  {
307  $item = [$item];
308  }
309 
310  foreach ($item as $message)
311  {
312  if (isset($errorsList[$this->getId()]) && in_array($message, $errors[$this->getId()]))
313  {
314  continue;
315  }
316 
317  $result->addError(
318  new Main\Error(
320  "SALE_PROPERTY_ERROR",
321  ["#PROPERTY_NAME#" => $this->getField('NAME'), "#ERROR_MESSAGE#" => $message]
322  )
323  )
324  );
325  }
326  }
327 
328  if (
329  !is_array($value)
330  && $this->getField('IS_EMAIL') === 'Y'
331  && trim($value) !== ''
332  && !check_email(trim($value), true)
333  )
334  {
335  $result->addError(new Main\Error(
336  str_replace(
337  ["#EMAIL#", "#NAME#"],
338  [htmlspecialcharsbx($value), htmlspecialcharsbx($this->getField('NAME'))],
339  Loc::getMessage("SALE_GOPE_WRONG_EMAIL")
340  )
341  ));
342  }
343 
344  return $result;
345  }

◆ getDescription()

getDescription ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 510

511  {
512  return $this->getField('DESCRIPTION');
513  }

◆ getEditHtml()

getEditHtml ( array  $values)
Аргументы
array$values
Возвращает
string
Исключения
Main

См. определение в файле propertybase.php строка 453

454  {
455  $key = isset($this->property["ID"]) ? $this->getId() : "n".$values['ORDER_PROPS_ID'];
456  return Input\Manager::getEditHtml("PROPERTIES[".$key."]", $this->fields, $values['VALUE']);
457  }

◆ getField()

getField (   $name)
Аргументы
$name
Возвращает
mixed

См. определение в файле propertybase.php строка 31

32  {
33  return $this->fields[$name];
34  }

◆ getFields()

getFields ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 462

463  {
464  return $this->fields;
465  }

◆ getGroupId()

getGroupId ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 486

487  {
488  return $this->getField('PROPS_GROUP_ID');
489  }

◆ getGroupInfo()

getGroupInfo ( )
Исключения
Main

См. определение в файле propertybase.php строка 76

77  {
78  static $groupList = [];
79 
80  if (!isset($groupList[$this->getPersonTypeId()]))
81  {
83  'filter' => [
84  '=PERSON_TYPE_ID' => $this->getPersonTypeId()
85  ]
86  ]);
87  while ($group = $dbRes->fetch())
88  {
89  $groupList[$this->getPersonTypeId()][$group['ID']] = $group;
90  }
91  }
92 
93  $groupId = $this->getGroupId();
94 
95  if (!isset($groupList[$this->getPersonTypeId()][$groupId]))
96  {
97  return [
98  'ID' => 0,
99  'NAME' => Loc::getMessage('SOP_UNKNOWN_GROUP'),
100  ];
101  }
102 
103  return $groupList[$this->getPersonTypeId()][$groupId];
104  }

◆ getId()

getId ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 470

471  {
472  return $this->getField('ID');
473  }

◆ getList()

static getList ( array  $parameters = array())
static
Аргументы
array$parameters
Исключения
Main

Переопределяется в Property.

См. определение в файле propertybase.php строка 41

42  {
43  throw new Main\NotImplementedException();
44  }

◆ getMeaningfulValues()

static getMeaningfulValues (   $personTypeId,
  $request 
)
static
Аргументы
$personTypeId
$request
Возвращает
array
Исключения
Main

См. определение в файле propertybase.php строка 237

238  {
239  $result = [];
240 
241  $personTypeId = intval($personTypeId);
242  if ($personTypeId <= 0 || !is_array($request))
243  {
244  return [];
245  }
246 
247  $dbRes = static::getList([
248  'select' => [
249  'ID', 'IS_LOCATION', 'IS_EMAIL', 'IS_PROFILE_NAME',
250  'IS_PAYER', 'IS_LOCATION4TAX', 'IS_ZIP', 'IS_PHONE',
251  'IS_ADDRESS',
252  ],
253  'filter' => [
254  '=ACTIVE' => 'Y',
255  '=UTIL' => 'N',
256  '=PERSON_TYPE_ID' => $personTypeId
257  ]
258  ]);
259 
260  while ($row = $dbRes->fetch())
261  {
262  if (array_key_exists($row["ID"], $request))
263  {
264  foreach ($row as $key => $value)
265  {
266  if (($value === "Y") && (substr($key, 0, 3) === "IS_"))
267  {
268  $result[substr($key, 3)] = $request[$row["ID"]];
269  }
270  }
271  }
272  }
273 
274  return $result;
275  }

◆ getName()

getName ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 494

495  {
496  return $this->getField('NAME');
497  }

◆ getObjectById()

static getObjectById (   $propertyId)
static
Аргументы
$propertyId
Возвращает
PropertyBase
Исключения
Main

См. определение в файле propertybase.php строка 54

55  {
56  $dbRes = static::getList([
57  'filter' => [
58  '=ID' => $propertyId
59  ]
60  ]);
61 
62  $data = $dbRes->fetch();
63  if ($data)
64  {
65  return new static($data);
66  }
67 
68  return null;
69  }

◆ getOptions()

getOptions ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 542

543  {
544  return $this->getField('OPTIONS');
545  }

◆ getPersonTypeId()

getPersonTypeId ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 478

479  {
480  return $this->getField('PERSON_TYPE_ID');
481  }

◆ getPreparedValueForSave()

getPreparedValueForSave ( PropertyValueBase  $propertyValue)
Аргументы
PropertyValueBase$propertyValue
Возвращает
array|mixed|string|null
Исключения
Main

См. определение в файле propertybase.php строка 388

389  {
390  $value = $propertyValue->getField('VALUE');
391 
392  if ($this->getType() == 'FILE')
393  {
394  $value = Input\File::asMultiple($value);
395 
396  foreach ($value as $i => $file)
397  {
398  if (Input\File::isDeletedSingle($file))
399  {
400  unset($value[$i]);
401  }
402  else
403  {
404  if (Input\File::isUploadedSingle($file))
405  {
406  $fileId = \CFile::SaveFile(array('MODULE_ID' => 'sale') + $file, 'sale/order/properties');
407  if (is_numeric($fileId))
408  {
409  $file = $fileId;
410  }
411  }
412 
413  $value[$i] = Input\File::loadInfoSingle($file);
414  }
415  }
416 
417  $property = $this->getFields();
418  $propertyValue->setField('VALUE', $value);
419  $value = Input\File::getValue($property, $value);
420 
421  $originalFields = $propertyValue->getFields()->getOriginalValues();
422  foreach (
423  array_diff(
424  Input\File::asMultiple(Input\File::getValue($property, $originalFields['VALUE'])),
425  Input\File::asMultiple($value),
426  Input\File::asMultiple(Input\File::getValue($property, $property['DEFAULT_VALUE']))
427  )
428  as $fileId
429  )
430  {
431  \CFile::Delete($fileId);
432  }
433  }
434 
435  return $value;
436  }

◆ getRegistryType()

static getRegistryType ( )
static
Исключения
Main

Переопределяется в Property.

См. определение в файле propertybase.php строка 22

23  {
24  throw new Main\NotImplementedException();
25  }

◆ getRelations()

getRelations ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 502

503  {
504  return $this->getField('RELATION');
505  }

◆ getType()

getType ( )
Возвращает
mixed

См. определение в файле propertybase.php строка 518

519  {
520  return $this->getField('TYPE');
521  }

◆ getViewHtml()

getViewHtml (   $value)
Аргументы
$value
Возвращает
string
Исключения
Main

См. определение в файле propertybase.php строка 443

444  {
445  return Input\Manager::getViewHtml($this->fields, $value);
446  }

◆ isRequired()

isRequired ( )
Возвращает
bool

См. определение в файле propertybase.php строка 526

527  {
528  return $this->getField('REQUIRED') === 'Y';
529  }

◆ isUtil()

isUtil ( )
Возвращает
bool

См. определение в файле propertybase.php строка 534

535  {
536  return $this->getField('UTIL') === 'Y';
537  }

◆ loadOptions()

loadOptions ( )
protected
Возвращает
array
Исключения
Main

См. определение в файле propertybase.php строка 188

189  {
190  $options = array();
191 
193  'select' => ['VALUE', 'NAME'],
194  'filter' => ['ORDER_PROPS_ID' => $this->getId()],
195  'order' => ['SORT' => 'ASC']
196  ]);
197 
198  while ($data = $dbRes->fetch())
199  {
200  $options[$data['VALUE']] = $data['NAME'];
201  }
202 
203  return $options;
204  }

◆ loadRelations()

loadRelations ( )
protected
Возвращает
array
Исключения
Main

См. определение в файле propertybase.php строка 212

213  {
214  $relations = array();
215 
216  $dbRes = Internals\OrderPropsRelationTable::getList([
217  'select' => ['ENTITY_ID', 'ENTITY_TYPE'],
218  'filter' => ['=PROPERTY_ID' => $this->getId()]
219  ]);
220 
221  while ($data = $dbRes->fetch())
222  {
223  $relations[] = $data;
224  }
225 
226  return $relations;
227  }

◆ normalizeValue()

normalizeValue (   $value)
Аргументы
$value
Возвращает
array

См. определение в файле propertybase.php строка 152

153  {
154  if ($this->fields['TYPE'] === 'FILE')
155  {
156  return Input\File::loadInfo($value);
157  }
158  elseif ($this->fields['TYPE'] === "STRING")
159  {
160  if ($this->fields['IS_EMAIL'] === "Y" && !empty($value))
161  {
162  $value = trim((string)$value);
163  }
164 
165  if (Input\StringInput::isMultiple($value))
166  {
167  foreach ($value as $key => $data)
168  {
169  if (Input\StringInput::isDeletedSingle($data))
170  {
171  unset($value[$key]);
172  }
173  }
174  }
175 
176  return $value;
177  }
178 
179  return $value;
180  }

◆ onValueDelete()

onValueDelete (   $value)
Аргументы
$value

См. определение в файле propertybase.php строка 550

551  {
552  if ($this->getType() === 'FILE')
553  {
554  foreach (Input\File::asMultiple($value) as $fileId)
555  {
556  \CFile::Delete($fileId);
557  }
558  }
559  }

Поля

◆ $fields

$fields = []
protected

См. определение в файле propertybase.php строка 16


Объявления и описания членов класса находятся в файле:
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\PropertyBase\getType
getType()
Definition: propertybase.php:518
Bitrix\Sale\PropertyBase\loadRelations
loadRelations()
Definition: propertybase.php:212
Bitrix\Sale\Internals\Input\StringInput\isDeletedSingle
static isDeletedSingle($value)
Definition: sale/lib/internals/input.php:768
Bitrix\Sale\PropertyBase\getName
getName()
Definition: propertybase.php:494
Bitrix\Sale\PropertyBase\getGroupId
getGroupId()
Definition: propertybase.php:486
$request
$request
Definition: sale/lib/rest/synchronization/push.php:6
Bitrix\Sale\PropertyBase\getFields
getFields()
Definition: propertybase.php:462
Bitrix\Sale\PropertyBase\getId
getId()
Definition: propertybase.php:470
Bitrix\Sale\PropertyBase\getPersonTypeId
getPersonTypeId()
Definition: propertybase.php:478
Bitrix\Sale\PropertyBase\loadOptions
loadOptions()
Definition: propertybase.php:188
Bitrix\Sale\PropertyBase\$fields
$fields
Definition: propertybase.php:16
Bitrix\Sale\PropertyBase\getField
getField($name)
Definition: propertybase.php:31
Bitrix\Sale\Internals\Input\Base\isMultiple
static isMultiple($value)
Check if value is multiple.
Definition: sale/lib/internals/input.php:294
Bitrix\Sale\PropertyBase\normalizeValue
normalizeValue($value)
Definition: propertybase.php:152
Bitrix\Main\ORM\Data\DataManager\getList
static getList(array $parameters=array())
Executes the query and returns selection by parameters of the query.
Definition: main/lib/orm/data/datamanager.php:438