![]() 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-store/Model/ResourceModel/Store/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Store\Model\ResourceModel\Store; /** * Stores collection * * @api * @since 100.0.2 */ class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection { /** * Name prefix of events that are dispatched by model * * @var string */ protected $_eventPrefix = 'store_collection'; /** * Name of event parameter * * @var string */ protected $_eventObject = 'store_collection'; /** * Define resource model * * @return void */ protected function _construct() { $this->setFlag('load_default_store', false); $this->_init(\Magento\Store\Model\Store::class, \Magento\Store\Model\ResourceModel\Store::class); } /** * Set flag for load default (admin) store * * @param bool $loadDefault * @return $this */ public function setLoadDefault($loadDefault) { $this->setFlag('load_default_store', (bool)$loadDefault); return $this; } /** * Is load default (admin) store * * @return bool * @SuppressWarnings(PHPMD.BooleanGetMethodName) */ public function getLoadDefault() { return $this->getFlag('load_default_store'); } /** * Add disable default store filter to collection * * @return $this */ public function setWithoutDefaultFilter() { $this->addFieldToFilter('main_table.store_id', ['gt' => 0]); return $this; } /** * Add filter by group id. * Group id can be passed as one single value or array of values. * * @param int|array $groupId * @return $this */ public function addGroupFilter($groupId) { return $this->addFieldToFilter('main_table.group_id', ['in' => $groupId]); } /** * Add filter by status to collection * * @param int $status * @return $this * @since 100.1.0 */ public function addStatusFilter($status) { return $this->addFieldToFilter('main_table.is_active', ['eq' => $status]); } /** * Add store id(s) filter to collection * * @param int|array $store * @return $this */ public function addIdFilter($store) { return $this->addFieldToFilter('main_table.store_id', ['in' => $store]); } /** * Add filter by website to collection * * @param int|array $website * @return $this */ public function addWebsiteFilter($website) { return $this->addFieldToFilter('main_table.website_id', ['in' => $website]); } /** * Add root category id filter to store collection * * @param int|array $category * @return $this */ public function addCategoryFilter($category) { if (!is_array($category)) { $category = [$category]; } return $this->loadByCategoryIds($category); } /** * Convert items array to array for select options * * @return array */ public function toOptionArray() { return $this->_toOptionArray('store_id', 'name'); } /** * Convert items array to hash for select options * * @return array */ public function toOptionHash() { return $this->_toOptionHash('store_id', 'name'); } /** * Load collection data * * @param bool $printQuery * @param bool $logQuery * @return $this */ public function load($printQuery = false, $logQuery = false) { if (!$this->getLoadDefault()) { $this->setWithoutDefaultFilter(); } if (!$this->isLoaded()) { $this->addOrder( 'CASE WHEN main_table.store_id = 0 THEN 0 ELSE 1 END', \Magento\Framework\DB\Select::SQL_ASC )->addOrder( 'main_table.sort_order', \Magento\Framework\DB\Select::SQL_ASC )->addOrder( 'main_table.name', \Magento\Framework\DB\Select::SQL_ASC ); } return parent::load($printQuery, $logQuery); } /** * Add root category id filter to store collection * * @param array $categories * @return $this */ public function loadByCategoryIds(array $categories) { $this->addRootCategoryIdAttribute(); $this->addFieldToFilter('group_table.root_category_id', ['in' => $categories]); return $this; } /** * Add store root category data to collection * * @return $this */ public function addRootCategoryIdAttribute() { if (!$this->getFlag('store_group_table_joined')) { $this->getSelect()->join( ['group_table' => $this->getTable('store_group')], 'main_table.group_id = group_table.group_id', ['root_category_id'] ); $this->setFlag('store_group_table_joined', true); } return $this; } }