/** * @internal * @param Sale\BasketItem $basketItem * * @return array * @throws Main\ObjectNotFoundException */ public static function convertBasketItemToArray(Sale\BasketItem $basketItem) { $fields = $basketItem->getFieldValues(); /** @var Sale\Basket $basket */ if (!($basket = $basketItem->getCollection())) { throw new Main\ObjectNotFoundException('Entity "Basket" not found'); } if (empty($fields['LID'])) { $fields['LID'] = $basket->getSiteId(); } if (empty($fields['LID'])) { if ($order = $basket->getOrder()) { $fields['LID'] = $order->getField('LID'); } //$order->getField('LID') } if (empty($fields['FUSER_ID'])) { $fields['FUSER_ID'] = $basket->getFUserId(true); } /** @var Sale\BasketPropertiesCollection $basketPropertyCollection */ if ($basketPropertyCollection = $basketItem->getPropertyCollection()) { /** @var Sale\BasketPropertyItem $basketPropertyItem */ foreach ($basketPropertyCollection as $basketPropertyItem) { $propValues = $basketPropertyItem->getFieldValues(); $propData = array("NAME" => $propValues['NAME'], "CODE" => $propValues['CODE'], "VALUE" => $propValues['VALUE'], "SORT" => $propValues['SORT']); if (isset($propValues['ID']) && intval($propValues['ID']) > 0) { $propData['ID'] = $propValues['ID']; } $fields['PROPS'][] = $propData; } } return $fields; }
/** * @param BasketItem $item * * @return bool */ public function isItemExists(BasketItem $item) { $propertyList = array(); /** @var BasketPropertiesCollection $basketPropertyCollection */ if ($basketPropertyCollection = $item->getPropertyCollection()) { /** @var BasketPropertyItem $basketPropertyItem */ foreach ($basketPropertyCollection as $basketPropertyItem) { $propertyList[$basketPropertyItem->getId()] = array('ID' => $basketPropertyItem->getId(), 'NAME' => $basketPropertyItem->getField('NAME'), 'VALUE' => $basketPropertyItem->getField('VALUE'), 'CODE' => $basketPropertyItem->getField('CODE'), 'SORT' => $basketPropertyItem->getField('SORT')); } } return (bool) $this->getExistsItem($item->getField('MODULE'), $item->getProductId(), $propertyList); }