Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/catalog/lib/v2/Sku/ |
Upload File : |
<?php namespace Bitrix\Catalog\v2\Sku; use Bitrix\Catalog\v2\BaseCollection; use Bitrix\Catalog\v2\BaseEntity; use Bitrix\Catalog\v2\IoC\ContainerContract; use Bitrix\Catalog\v2\IoC\Dependency; /** * Class SkuCollection * * @package Bitrix\Catalog\v2\Sku * * !!! This API is in alpha stage and is not stable. This is subject to change at any time without notice. * @internal */ class SkuCollection extends BaseCollection { /** @var ContainerContract */ protected $container; /** @var \Bitrix\Catalog\v2\Sku\SkuFactory */ protected $factory; public function __construct(ContainerContract $container, SkuFactory $factory) { $this->container = $container; $this->factory = $factory; } public function create(): BaseSku { /** @var \Bitrix\Catalog\v2\Product\BaseProduct $parent */ $parent = $this->getParent(); if ($parent && $parent->isSimple()) { /** @var \Bitrix\Catalog\v2\Converter\ProductConverter $converter */ $converter = $this->container->get(Dependency::PRODUCT_CONVERTER); $converter->convert($parent, $converter::SKU_PRODUCT); } $sku = $this->createEntity(); $this->add($sku); if (!$sku->hasName() && $parent->hasName()) { $sku->setName($parent->getName()); } return $sku; } protected function createEntity(): BaseSku { /** @var \Bitrix\Catalog\v2\Product\BaseProduct $parent */ $parent = $this->getParent(); if ($parent && $parent->isSimple()) { $type = SkuFactory::SIMPLE_SKU; } else { $type = SkuFactory::SKU; } return $this->factory->createEntity($type); } protected function getAlreadyLoadedFilter(): array { $filter = parent::getAlreadyLoadedFilter(); foreach ($this->items as $item) { if (!$item->isNew()) { $filter['!ID'][] = $item->getId(); } } return $filter; } /** * @param callable|null $callback * @return \Bitrix\Catalog\v2\BaseEntity|\Bitrix\Catalog\v2\Sku\BaseSku|null */ public function getFirst(callable $callback = null): ?BaseEntity { return parent::getFirst($callback); } }