Bitrix-D7  20.5.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)
 
 getItemsByOrderPropertyCode (string $propertyCode)
 
 getItemByOrderPropertyCode (string $propertyCode)
 
 getItemsByFilter (callable $filter)
 
 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. Подробнее...
 
 toArray ()
 

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

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 строка 635

636  {
637  $values['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
638 
639  /** @var Main\Event $event */
640  $event = new Main\Event(
641  'sale',
642  'OnBeforeSalePropertyValueDeleted',
643  array('VALUES' => $values)
644  );
645 
646  $event->send();
647  }

◆ callEventOnSalePropertyValueDeleted()

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

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

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

618  {
619  $values['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
620 
621  /** @var Main\Event $event */
622  $event = new Main\Event(
623  'sale',
624  'OnSalePropertyValueDeleted',
625  array('VALUES' => $values)
626  );
627 
628  $event->send();
629  }

◆ 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  }
addItem(Internals\CollectableEntity $property)

◆ deleteInternal()

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

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

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

684  {
685  throw new Main\NotImplementedException();
686  }

◆ 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 строка 706

707  {
708  $result = new Result();
709 
710  $propertiesDataList = static::getList(
711  array(
712  "filter" => array('=ORDER_ID' => $idOrder),
713  "select" => array('ID', 'ORDER_PROPS_ID')
714  )
715  );
716 
717  while ($propertyValue = $propertiesDataList->fetch())
718  {
719  $r = self::delete($propertyValue);
720  if (!$r->isSuccess())
721  {
722  $result->addErrors($r->getErrors());
723  }
724  }
725 
726  return $result;
727  }

◆ 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 строка 825

826  {
827  return $this->getPropertiesByGroupId($groupId);
828  }

◆ 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  }

◆ getItemByOrderPropertyCode()

getItemByOrderPropertyCode ( string  $propertyCode)
Аргументы
string$propertyCode
Возвращает
PropertyValueBase|null

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

517  {
518  $items = $this->getItemsByOrderPropertyCode($propertyCode);
519 
520  return empty($items) ? null : current($items);
521  }
current()
Return the current element.

◆ getItemByOrderPropertyId()

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

См. определение в файле 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  }

◆ getItemsByFilter()

getItemsByFilter ( callable  $filter)
Аргументы
callable$filter
Возвращает
PropertyValueBase[]

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

528  {
529  $results = [];
530 
531  /** @var PropertyValueBase $propertyValue */
532  foreach ($this->collection as $propertyValue)
533  {
534  if (!$filter($propertyValue))
535  {
536  continue;
537  }
538 
539  $results[] = $propertyValue;
540  }
541 
542  return $results;
543  }

◆ getItemsByOrderPropertyCode()

getItemsByOrderPropertyCode ( string  $propertyCode)
Аргументы
string$propertyCode
Возвращает
PropertyValueBase[]

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

501  {
502  return $this->getItemsByFilter(
503  function ($propertyValue) use ($propertyCode)
504  {
505  return (
506  $propertyValue->getField('CODE') == $propertyCode
507  );
508  }
509  );
510  }

◆ getList()

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

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

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

694  {
695  throw new Main\NotImplementedException();
696  }

◆ 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 строка 772

773  {
774  $registry = Registry::getInstance(static::getRegistryType());
775 
776  /** @var PropertyValueBase $propertyValueClassName */
777  $propertyValueClassName = $registry->getPropertyValueClassName();
778 
779  $props = $propertyValueClassName::loadForOrder($this->getOrder());
780 
781  /** @var PropertyValueBase $propertyValue */
782  foreach ($this->collection as $propertyValue)
783  {
784  $property = $propertyValue->getPropertyObject();
785  if (!$property->getRelations())
786  {
787  continue;
788  }
789 
790  if ($propertyValue->getId() <= 0
791  && !isset($props[$propertyValue->getPropertyId()])
792  )
793  {
794  $propertyValue->delete();
795  }
796  }
797 
798  /** @var PropertyValueBase $propertyValue */
799  foreach ($props as $propertyValue)
800  {
801  $property = $propertyValue->getPropertyObject();
802  if (!$property->getRelations())
803  {
804  continue;
805  }
806 
807  if (!$this->getItemByOrderPropertyId($propertyValue->getPropertyId()))
808  {
809  $propertyValue->setCollection($this);
810  $this->addItem($propertyValue);
811  }
812  }
813  }

◆ save()

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

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

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

573  {
574  $result = new Result();
575 
576  if (!$this->isChanged())
577  {
578  return $result;
579  }
580 
581  $itemsFromDb = $this->getOriginalItemsValues();
582  foreach ($itemsFromDb as $k => $v)
583  {
584  if ($this->getItemById($k))
585  {
586  continue;
587  }
588 
590 
591  $r = self::delete($v);
592  if (!$r->isSuccess())
593  {
594  $result->addErrors($r->getErrors());
595  }
596 
598  }
599 
600  /** @var PropertyValue $property */
601  foreach ($this->collection as $property)
602  {
603  $r = $property->save();
604  if (!$r->isSuccess())
605  {
606  $result->addErrors($r->getErrors());
607  }
608  }
609 
610  return $result;
611  }

◆ 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 строка 549

550  {
551  $result = new Result();
552 
553  /** @var PropertyValueBase $propertyValue */
554  foreach ($this->collection as $propertyValue)
555  {
556  $r = $propertyValue->verify();
557  if (!$r->isSuccess())
558  {
559  $result->addErrors($r->getErrors());
560  }
561  }
562 
563  return $result;
564  }

Поля

◆ $order

$order
protected

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

◆ $propertyGroups

$propertyGroups = null
protected

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


Объявления и описания членов класса находятся в файле: