![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-wishlist/Model/ResourceModel/Item/Option/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Wishlist item option collection * * @author Magento Core Team <[email protected]> */ namespace Magento\Wishlist\Model\ResourceModel\Item\Option; use Magento\Catalog\Model\Product; use Magento\Wishlist\Model\Item; /** * @api * @since 100.0.2 */ class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection { /** * Array of option ids grouped by item id * * @var array */ protected $_optionsByItem = []; /** * Array of option ids grouped by product id * * @var array */ protected $_optionsByProduct = []; /** * Define resource model for collection * * @return void */ protected function _construct() { $this->_init( \Magento\Wishlist\Model\Item\Option::class, \Magento\Wishlist\Model\ResourceModel\Item\Option::class ); } /** * Fill array of options by item and product * * @return $this */ protected function _afterLoad() { parent::_afterLoad(); foreach ($this as $option) { $optionId = $option->getId(); $itemId = $option->getWishlistItemId(); $productId = $option->getProductId(); if (isset($this->_optionsByItem[$itemId])) { $this->_optionsByItem[$itemId][] = $optionId; } else { $this->_optionsByItem[$itemId] = [$optionId]; } if (isset($this->_optionsByProduct[$productId])) { $this->_optionsByProduct[$productId][] = $optionId; } else { $this->_optionsByProduct[$productId] = [$optionId]; } } return $this; } /** * Apply quote item(s) filter to collection * * @param int|array|Item $item * @return $this */ public function addItemFilter($item) { if (empty($item)) { $this->_totalRecords = 0; $this->_setIsLoaded(true); } elseif (is_array($item)) { $this->addFieldToFilter('wishlist_item_id', ['in' => $item]); } elseif ($item instanceof Item) { $this->addFieldToFilter('wishlist_item_id', $item->getId()); } else { $this->addFieldToFilter('wishlist_item_id', $item); } return $this; } /** * Get array of all product ids * * @return array */ public function getProductIds() { $this->load(); return array_keys($this->_optionsByProduct); } /** * Get all option for item * * @param Item|int|string $item * @return array */ public function getOptionsByItem($item) { if ($item instanceof Item) { $itemId = $item->getId(); } else { $itemId = $item; } $this->load(); $options = []; if (isset($this->_optionsByItem[$itemId])) { foreach ($this->_optionsByItem[$itemId] as $optionId) { $options[] = $this->_items[$optionId]; } } return $options; } /** * Get all option for item * * @param Product|int|string $product * @return array */ public function getOptionsByProduct($product) { if ($product instanceof Product) { $productId = $product->getId(); } else { $productId = $product; } $this->load(); $options = []; if (isset($this->_optionsByProduct[$productId])) { foreach ($this->_optionsByProduct[$productId] as $optionId) { $options[] = $this->_items[$optionId]; } } return $options; } }