Bitrix-D7  20.0.0
Класс PropertyValueCollectionBase
Граф наследования:PropertyValueCollectionBase:
EntityCollection CollectionBase PropertyValueCollection

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

 createItem (array $prop)
 
 addItem (Internals\CollectableEntity $property)
 
 deleteItem ($index)
 
 onItemModify (Internals\CollectableEntity $item, $name=null, $oldValue=null, $value=null)
 
 onOrderModify ($name, $oldValue, $value)
 
 getOrder ()
 
 setOrder (OrderBase $order)
 
 getAttribute ($name)
 
 getUserEmail ()
 
 getPayerName ()
 
 getDeliveryLocation ()
 
 getTaxLocation ()
 
 getProfileName ()
 
 getDeliveryLocationZip ()
 
 getPhone ()
 
 getAddress ()
 
 setValuesFromPost ($post, $files)
 
 checkErrors ($fields, $files, $skipUtils=false)
 
 checkRequired (array $rules, array $fields)
 
 getGroups ()
 
 getPropertiesByGroupId ($groupId)
 
 getArray ()
 
 getItemByOrderPropertyId ($orderPropertyId)
 
 verify ()
 
 save ()
 
 refreshRelated ()
 
 getGroupProperties ($groupId)
 
- Открытые члены унаследованные от EntityCollection
 onItemModify (CollectableEntity $item, $name=null, $oldValue=null, $value=null)
 
 clearCollection ()
 
 getItemById ($id)
 
 getIndexById ($id)
 
 getItemByIndex ($index)
 
 isStartField ($isMeaningfulField=false)
 
 clearStartField ()
 
 hasMeaningfulField ()
 
 doFinalAction ($hasMeaningfulField=false)
 
 isMathActionOnly ()
 
 setMathActionOnly ($value=false)
 
 isChanged ()
 
 isClone ()
 
 isAnyItemDeleted ()
 
 clearChanged ()
 
 createClone (\SplObjectStorage $cloneEntity)
 
- Открытые члены унаследованные от CollectionBase
 getIterator ()
 
 offsetExists ($offset)
 Whether a offset exists. Подробнее...
 
 offsetGet ($offset)
 Offset to retrieve. Подробнее...
 
 offsetSet ($offset, $value)
 Offset to set. Подробнее...
 
 offsetUnset ($offset)
 Offset to unset. Подробнее...
 
 count ()
 Count elements of an object. Подробнее...
 
 current ()
 Return the current element. Подробнее...
 
 next ()
 Move forward to next element. Подробнее...
 
 key ()
 Return the key of the current element. Подробнее...
 
 valid ()
 Checks if current position is valid. Подробнее...
 
 rewind ()
 Rewind the Iterator to the first element. Подробнее...
 
 isEmpty ()
 Checks if collection is empty. Подробнее...
 

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

static load (OrderBase $order)
 
static getList (array $parameters=array())
 
static deleteNoDemand ($idOrder)
 
- Открытые статические члены унаследованные от EntityCollection
static getRegistryType ()
 

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

 getEntityParent ()
 
 callEventOnSalePropertyValueDeleted ($values)
 
 callEventOnBeforeSalePropertyValueDeleted ($values)
 
- Защищенные члены унаследованные от EntityCollection
 __construct ()
 EntityCollection constructor. Подробнее...
 
 addItem (CollectableEntity $item)
 
 createIndex ()
 
 getDeletableItems ()
 
 callEventOnBeforeCollectionClear ()
 
 setAnyItemDeleted ($value)
 

Защищенные статические члены

static deleteInternal ($primary)
 

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

 $order
 
 $propertyGroups = null
 
- Защищенные данные унаследованные от EntityCollection
 $isClone = false
 
 $anyItemDeleted = false
 
- Защищенные данные унаследованные от CollectionBase
 $collection = array()
 

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

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

Методы

◆ addItem()

addItem ( Internals\CollectableEntity  $property)
Аргументы
Internals\CollectableEntity$property
Возвращает
Internals\CollectableEntity|Result
Исключения
Main

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

86  {
87  /** @var PropertyValueBase $property */
88  $property = parent::addItem($property);
89 
90  $order = $this->getOrder();
91  return $order->onPropertyValueCollectionModify(EventActions::ADD, $property);
92  }

◆ callEventOnBeforeSalePropertyValueDeleted()

callEventOnBeforeSalePropertyValueDeleted (   $values)
protected
Аргументы
$values
Исключения
Main

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

587  {
588  $values['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
589 
590  /** @var Main\Event $event */
591  $event = new Main\Event(
592  'sale',
593  'OnBeforeSalePropertyValueDeleted',
594  array('VALUES' => $values)
595  );
596 
597  $event->send();
598  }

◆ callEventOnSalePropertyValueDeleted()

callEventOnSalePropertyValueDeleted (   $values)
protected
Аргументы
$values
Исключения
Main

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

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

569  {
570  $values['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
571 
572  /** @var Main\Event $event */
573  $event = new Main\Event(
574  'sale',
575  'OnSalePropertyValueDeleted',
576  array('VALUES' => $values)
577  );
578 
579  $event->send();
580  }

◆ checkErrors()

checkErrors (   $fields,
  $files,
  $skipUtils = false 
)
Аргументы
$fields
$files
bool$skipUtils
Возвращает
Result
Исключения
Main

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

292  {
293  $result = new Result();
294 
295  $fields = Input\File::getPostWithFiles($fields, $files);
296 
297  /** @var PropertyValueBase $propertyValue */
298  foreach ($this->collection as $propertyValue)
299  {
300  if ($skipUtils && $propertyValue->isUtil())
301  {
302  continue;
303  }
304 
305  if ($propertyValue->getField('ORDER_PROPS_ID') > 0)
306  {
307  $key = $propertyValue->getField('ORDER_PROPS_ID');
308  }
309  else
310  {
311  $key = "n".$propertyValue->getInternalIndex();
312  }
313 
314  $value = isset($fields['PROPERTIES'][$key]) ? $fields['PROPERTIES'][$key] : null;
315 
316  if (!isset($fields['PROPERTIES'][$key]))
317  {
318  $value = $propertyValue->getValue();
319  }
320 
321  $r = $propertyValue->checkValue($key, $value);
322  if (!$r->isSuccess())
323  {
324  $result->addErrors($r->getErrors());
325  }
326  }
327 
328  return $result;
329  }

◆ checkRequired()

checkRequired ( array  $rules,
array  $fields 
)
Аргументы
array$rules
array$fields
Возвращает
Result

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

338  {
339  $result = new Result();
340 
341  /** @var PropertyValueBase $propertyValue */
342  foreach ($this->collection as $propertyValue)
343  {
344  if ($propertyValue->getField('ORDER_PROPS_ID') > 0)
345  {
346  $key = $propertyValue->getField('ORDER_PROPS_ID');
347  }
348  else
349  {
350  $key = "n".$propertyValue->getInternalIndex();
351  }
352 
353  if (!in_array($key, $rules))
354  {
355  continue;
356  }
357 
358  $value = isset($fields['PROPERTIES'][$key]) ? $fields['PROPERTIES'][$key] : null;
359  if (!isset($fields['PROPERTIES'][$key]))
360  {
361  $value = $propertyValue->getValue();
362  }
363 
364  $r = $propertyValue->checkRequiredValue($key, $value);
365  if (!$r->isSuccess())
366  {
367  $result->addErrors($r->getErrors());
368  }
369  }
370 
371  return $result;
372  }

◆ createItem()

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

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

69  {
70  $registry = Registry::getInstance(static::getRegistryType());
71 
72  /** @var PropertyValueBase $propertyValueClass */
73  $propertyValueClass = $registry->getPropertyValueClassName();
74  $property = $propertyValueClass::create($this, $prop);
75  $this->addItem($property);
76 
77  return $property;
78  }

◆ deleteInternal()

static deleteInternal (   $primary)
staticprotected
Аргументы
$primary
Исключения
Main

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

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

635  {
636  throw new Main\NotImplementedException();
637  }

◆ deleteItem()

deleteItem (   $index)

Переопределяет метод предка EntityCollection.

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

102  {
103  $oldItem = parent::deleteItem($index);
104 
105  /** @var OrderBase $order */
106  $order = $this->getOrder();
107  return $order->onPropertyValueCollectionModify(EventActions::DELETE, $oldItem);
108  }

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static

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

658  {
659  $result = new Result();
660 
661  $propertiesDataList = static::getList(
662  array(
663  "filter" => array('=ORDER_ID' => $idOrder),
664  "select" => array('ID', 'ORDER_PROPS_ID')
665  )
666  );
667 
668  while ($propertyValue = $propertiesDataList->fetch())
669  {
670  $r = self::delete($propertyValue);
671  if (!$r->isSuccess())
672  {
673  $result->addErrors($r->getErrors());
674  }
675  }
676 
677  return $result;
678  }

◆ getAddress()

getAddress ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

254  {
255  return $this->getAttribute('IS_ADDRESS');
256  }

◆ getArray()

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

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

442  {
443  $groups = $this->getGroups();
444 
445  $properties = array();
446 
447  /** @var PropertyValueBase $propertyValue */
448  foreach ($this->collection as $propertyValue)
449  {
450  $p = $propertyValue->getProperty();
451 
452  if (!isset($p["ID"]))
453  {
454  if ($propertyValue->getField("ORDER_PROPS_ID") > 0)
455  {
456  $p["ID"] = $propertyValue->getField('ORDER_PROPS_ID');
457  }
458  else
459  {
460  $p["ID"] = "n".$propertyValue->getInternalIndex();
461  }
462  }
463 
464  $value = $propertyValue->getValue();
465 
466  $value = $propertyValue->getValueId() ? $value : ($value ? $value : $p['DEFAULT_VALUE']);
467 
468  $value = array_values(Input\Manager::asMultiple($p, $value));
469 
470  $p['VALUE'] = $value;
471 
472  $properties[] = $p;
473  }
474 
475  return array('groups' => $groups, 'properties' => $properties);
476  }

◆ getAttribute()

getAttribute (   $name)
Аргументы
$name
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

172  {
173  /** @var PropertyValueBase $item */
174  foreach ($this->collection as $item)
175  {
176  $property = $item->getPropertyObject();
177  if ($property->getField($name) === 'Y')
178  {
179  return $item;
180  }
181  }
182 
183  return null;
184  }

◆ getDeliveryLocation()

getDeliveryLocation ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

209  {
210  return $this->getAttribute('IS_LOCATION');
211  }

◆ getDeliveryLocationZip()

getDeliveryLocationZip ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

236  {
237  return $this->getAttribute('IS_ZIP');
238  }

◆ getEntityParent()

getEntityParent ( )
protected
Возвращает
OrderBase

Переопределяет метод предка EntityCollection.

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

58  {
59  return $this->getOrder();
60  }

◆ getGroupProperties()

getGroupProperties (   $groupId)
Уст.:
@use \Bitrix\Sale\PropertyValueCollectionBase::getPropertiesByGroupId
Аргументы
$groupId
Возвращает
array
Исключения
Main

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

777  {
778  return $this->getPropertiesByGroupId($groupId);
779  }

◆ getGroups()

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

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

381  {
382  $result = [];
383 
384  /** @var PropertyValueBase $propertyValue */
385  foreach ($this->collection as $propertyValue)
386  {
387  $property = $propertyValue->getPropertyObject();
388  $group = $property->getGroupInfo();
389  if (!isset($result[$group['ID']]))
390  {
391  $result[$group['ID']] = $group;
392  }
393  }
394 
395  return $result;
396  }

◆ getItemByOrderPropertyId()

getItemByOrderPropertyId (   $orderPropertyId)
Аргументы
$orderPropertyId
Возвращает
PropertyValueBase

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

483  {
484  /** @var PropertyValueBase $propertyValue */
485  foreach ($this->collection as $propertyValue)
486  {
487  if ($propertyValue->getField('ORDER_PROPS_ID') == $orderPropertyId)
488  {
489  return $propertyValue;
490  }
491  }
492 
493  return null;
494  }

◆ getList()

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

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

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

645  {
646  throw new Main\NotImplementedException();
647  }

◆ getOrder()

getOrder ( )
Возвращает
OrderBase

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

143  {
144  return $this->order;
145  }

◆ getPayerName()

getPayerName ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

200  {
201  return $this->getAttribute('IS_PAYER');
202  }

◆ getPhone()

getPhone ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

245  {
246  return $this->getAttribute('IS_PHONE');
247  }

◆ getProfileName()

getProfileName ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

227  {
228  return $this->getAttribute('IS_PROFILE_NAME');
229  }

◆ getPropertiesByGroupId()

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

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

406  {
407  $result = [];
408 
409  $groups = $this->getGroups();
410 
411  /** @var PropertyValueBase $propertyValue */
412  foreach ($this->collection as $propertyValue)
413  {
414  $property = $propertyValue->getPropertyObject();
415  if (!$property)
416  {
417  continue;
418  }
419 
420  $propertyGroupId = (int)$property->getGroupId();
421  if (!isset($groups[$propertyGroupId]))
422  {
423  $propertyGroupId = 0;
424  }
425 
426  if ($propertyGroupId === (int)$groupId)
427  {
428  $result[] = $propertyValue;
429  }
430  }
431 
432  return $result;
433  }

◆ getTaxLocation()

getTaxLocation ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

218  {
219  return $this->getAttribute('IS_LOCATION4TAX');
220  }

◆ getUserEmail()

getUserEmail ( )
Возвращает
PropertyValueBase
Исключения
ArgumentOutOfRangeException

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

191  {
192  return $this->getAttribute('IS_EMAIL');
193  }

◆ load()

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

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

33  {
34  /** @var PropertyValueCollectionBase $propertyCollection */
35  $propertyCollection = static::createPropertyValueCollectionObject();
36  $propertyCollection->setOrder($order);
37 
38  $registry = Registry::getInstance(static::getRegistryType());
39  /** @var PropertyValueBase $propertyValueClassName */
40  $propertyValueClassName = $registry->getPropertyValueClassName();
41 
42  $props = $propertyValueClassName::loadForOrder($order);
43 
44  /** @var PropertyValueBase $prop */
45  foreach ($props as $prop)
46  {
47  $prop->setCollection($propertyCollection);
48  $propertyCollection->addItem($prop);
49  }
50 
51  return $propertyCollection;
52  }

◆ onItemModify()

onItemModify ( Internals\CollectableEntity  $item,
  $name = null,
  $oldValue = null,
  $value = null 
)
Аргументы
Internals\CollectableEntity$item
null$name
null$oldValue
null$value
Возвращает
Result
Исключения
Main

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

119  {
120  if (!$item instanceof PropertyValueBase)
121  throw new Main\NotSupportedException();
122 
123  /** @var OrderBase $order */
124  $order = $this->getOrder();
125  return $order->onPropertyValueCollectionModify(EventActions::UPDATE, $item, $name, $oldValue, $value);
126  }

◆ onOrderModify()

onOrderModify (   $name,
  $oldValue,
  $value 
)
Аргументы
$name
$oldValue
$value
Возвращает
Result

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

135  {
136  return new Result();
137  }

◆ refreshRelated()

refreshRelated ( )

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

724  {
725  $registry = Registry::getInstance(static::getRegistryType());
726 
727  /** @var PropertyValueBase $propertyValueClassName */
728  $propertyValueClassName = $registry->getPropertyValueClassName();
729 
730  $props = $propertyValueClassName::loadForOrder($this->getOrder());
731 
732  /** @var PropertyValueBase $propertyValue */
733  foreach ($this->collection as $propertyValue)
734  {
735  $property = $propertyValue->getPropertyObject();
736  if (!$property->getRelations())
737  {
738  continue;
739  }
740 
741  if ($propertyValue->getId() <= 0
742  && !isset($props[$propertyValue->getPropertyId()])
743  )
744  {
745  $propertyValue->delete();
746  }
747  }
748 
749  /** @var PropertyValueBase $propertyValue */
750  foreach ($props as $propertyValue)
751  {
752  $property = $propertyValue->getPropertyObject();
753  if (!$property->getRelations())
754  {
755  continue;
756  }
757 
758  if (!$this->getItemByOrderPropertyId($propertyValue->getPropertyId()))
759  {
760  $propertyValue->setCollection($this);
761  $this->addItem($propertyValue);
762  }
763  }
764  }

◆ save()

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

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

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

524  {
525  $result = new Result();
526 
527  if (!$this->isChanged())
528  {
529  return $result;
530  }
531 
532  $itemsFromDb = $this->getOriginalItemsValues();
533  foreach ($itemsFromDb as $k => $v)
534  {
535  if ($this->getItemById($k))
536  {
537  continue;
538  }
539 
541 
542  $r = self::delete($v);
543  if (!$r->isSuccess())
544  {
545  $result->addErrors($r->getErrors());
546  }
547 
549  }
550 
551  /** @var PropertyValue $property */
552  foreach ($this->collection as $property)
553  {
554  $r = $property->save();
555  if (!$r->isSuccess())
556  {
557  $result->addErrors($r->getErrors());
558  }
559  }
560 
561  return $result;
562  }

◆ setOrder()

setOrder ( OrderBase  $order)
Аргументы
OrderBase$order

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

151  {
152  $this->order = $order;
153  }

◆ setValuesFromPost()

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

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

266  {
267  $post = Input\File::getPostWithFiles($post, $files);
268 
269  $result = new Result();
270 
271  /** @var PropertyValueBase $property */
272  foreach ($this->collection as $property)
273  {
274  $r = $property->setValueFromPost($post);
275  if (!$r->isSuccess())
276  {
277  $result->addErrors($r->getErrors());
278  }
279  }
280 
281  return $result;
282  }

◆ verify()

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

Переопределяет метод предка EntityCollection.

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

501  {
502  $result = new Result();
503 
504  /** @var PropertyValueBase $propertyValue */
505  foreach ($this->collection as $propertyValue)
506  {
507  $r = $propertyValue->verify();
508  if (!$r->isSuccess())
509  {
510  $result->addErrors($r->getErrors());
511  }
512  }
513 
514  return $result;
515  }

Поля

◆ $order

$order
protected

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

◆ $propertyGroups

$propertyGroups = null
protected

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


Объявления и описания членов класса находятся в файле:
Bitrix\Sale\PropertyValueCollectionBase\getGroups
getGroups()
Definition: propertyvaluecollectionbase.php:380
Bitrix\Sale\PropertyValueCollectionBase\callEventOnSalePropertyValueDeleted
callEventOnSalePropertyValueDeleted($values)
Definition: propertyvaluecollectionbase.php:568
Bitrix\Sale\EventActions\ADD
const ADD
Definition: eventactions.php:8
Bitrix\Sale\PropertyValueCollectionBase\getOrder
getOrder()
Definition: propertyvaluecollectionbase.php:142
Bitrix\Sale\PropertyValueCollectionBase\getItemByOrderPropertyId
getItemByOrderPropertyId($orderPropertyId)
Definition: propertyvaluecollectionbase.php:482
Bitrix\Sale\PropertyValueCollectionBase\getAttribute
getAttribute($name)
Definition: propertyvaluecollectionbase.php:171
Bitrix\Sale\EventActions\DELETE
const DELETE
Definition: eventactions.php:10
Bitrix\Sale\Registry\getInstance
static getInstance($type)
Definition: sale/lib/registry.php:161
Bitrix\Sale\EventActions\UPDATE
const UPDATE
Definition: eventactions.php:9
Bitrix\Sale\PropertyValueCollectionBase\getPropertiesByGroupId
getPropertiesByGroupId($groupId)
Definition: propertyvaluecollectionbase.php:405
Bitrix\Sale\PropertyValueCollectionBase\callEventOnBeforeSalePropertyValueDeleted
callEventOnBeforeSalePropertyValueDeleted($values)
Definition: propertyvaluecollectionbase.php:586
Bitrix\Sale\PropertyValueCollectionBase\addItem
addItem(Internals\CollectableEntity $property)
Definition: propertyvaluecollectionbase.php:85
Bitrix\Sale\Internals\EntityCollection\isChanged
isChanged()
Definition: entitycollection.php:330
Bitrix\Sale\Internals\EntityCollection\getItemById
getItemById($id)
Definition: entitycollection.php:165
Bitrix\Sale\PropertyValueCollectionBase\$order
$order
Definition: propertyvaluecollectionbase.php:20