![]() 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/cartforge.co/vendor/magento/module-backend/Block/Store/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Backend\Block\Store; use Magento\Framework\Exception\LocalizedException; /** * Store switcher block * * @api * @since 100.0.2 */ class Switcher extends \Magento\Backend\Block\Template { /** * URL for store switcher hint */ public const HINT_URL = 'https://docs.magento.com/user-guide/configuration/scope.html'; /** * Name of website variable * * @var string */ protected $_defaultWebsiteVarName = 'website'; /** * Name of store group variable * * @var string */ protected $_defaultStoreGroupVarName = 'group'; /** * Name of store variable * * @var string */ protected $_defaultStoreVarName = 'store'; /** * @var array */ protected $_storeIds; /** * Url for store switcher hint * * @var string */ protected $_hintUrl; /** * @var bool */ protected $_hasDefaultOption = true; /** * Block template filename * * @var string */ protected $_template = 'Magento_Backend::store/switcher.phtml'; /** * @var \Magento\Store\Model\WebsiteFactory */ protected $_websiteFactory; /** * @var \Magento\Store\Model\GroupFactory */ protected $_storeGroupFactory; /** * @var \Magento\Store\Model\StoreFactory */ protected $_storeFactory; /** * Switcher constructor. * * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Store\Model\WebsiteFactory $websiteFactory * @param \Magento\Store\Model\GroupFactory $storeGroupFactory * @param \Magento\Store\Model\StoreFactory $storeFactory * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Store\Model\WebsiteFactory $websiteFactory, \Magento\Store\Model\GroupFactory $storeGroupFactory, \Magento\Store\Model\StoreFactory $storeFactory, array $data = [] ) { parent::__construct($context, $data); $this->_websiteFactory = $websiteFactory; $this->_storeGroupFactory = $storeGroupFactory; $this->_storeFactory = $storeFactory; } /** * @inheritdoc */ protected function _construct() { parent::_construct(); $this->setUseConfirm($this->hasData('use_confirm') ? (bool)$this->getData('use_confirm') : true); $this->setUseAjax(true); $this->setShowManageStoresLink(0); if (!$this->hasData('switch_websites')) { $this->setSwitchWebsites(false); } if (!$this->hasData('switch_store_groups')) { $this->setSwitchStoreGroups(false); } if (!$this->hasData('switch_store_views')) { $this->setSwitchStoreViews(true); } $this->setDefaultSelectionName(__('All Store Views')); } /** * Get website collection. * * @return \Magento\Store\Model\ResourceModel\Website\Collection */ public function getWebsiteCollection() { $collection = $this->_websiteFactory->create()->getResourceCollection(); $websiteIds = $this->getWebsiteIds(); if ($websiteIds !== null) { $collection->addIdFilter($this->getWebsiteIds()); } return $collection->load(); } /** * Get websites * * @return \Magento\Store\Model\Website[] */ public function getWebsites() { $websites = $this->_storeManager->getWebsites(); if ($websiteIds = $this->getWebsiteIds()) { $websites = array_intersect_key($websites, array_flip($websiteIds)); } return $websites; } /** * Check if can switch to websites * * @return bool */ public function isWebsiteSwitchEnabled() { return (bool)$this->getData('switch_websites'); } /** * Set website variable name. * * @param string $varName * @return $this */ public function setWebsiteVarName($varName) { $this->setData('website_var_name', $varName); return $this; } /** * Get website variable name. * * @return string */ public function getWebsiteVarName() { if ($this->hasData('website_var_name')) { return (string)$this->getData('website_var_name'); } else { return (string)$this->_defaultWebsiteVarName; } } /** * Check if current website selected. * * @param \Magento\Store\Model\Website $website * @return bool */ public function isWebsiteSelected(\Magento\Store\Model\Website $website) { return $this->getWebsiteId() === $website->getId() && $this->getStoreId() === null; } /** * Return website Id. * * @return int|null */ public function getWebsiteId() { if (!$this->hasData('website_id')) { $this->setData('website_id', (int)$this->getRequest()->getParam($this->getWebsiteVarName())); } return $this->getData('website_id'); } /** * Return group collection provided website. * * @param int|\Magento\Store\Model\Website $website * @return \Magento\Store\Model\ResourceModel\Group\Collection */ public function getGroupCollection($website) { if (!$website instanceof \Magento\Store\Model\Website) { $website = $this->_websiteFactory->create()->load($website); } return $website->getGroupCollection(); } /** * Get store groups for specified website * * @param \Magento\Store\Model\Website|int $website * @return array */ public function getStoreGroups($website) { if (!$website instanceof \Magento\Store\Model\Website) { $website = $this->_storeManager->getWebsite($website); } return $website->getGroups(); } /** * Check if can switch to store group * * @return bool */ public function isStoreGroupSwitchEnabled() { return (bool)$this->getData('switch_store_groups'); } /** * Sets store group variable name. * * @param string $varName * @return $this */ public function setStoreGroupVarName($varName) { $this->setData('store_group_var_name', $varName); return $this; } /** * Return store group variable name. * * @return string */ public function getStoreGroupVarName() { if ($this->hasData('store_group_var_name')) { return (string)$this->getData('store_group_var_name'); } else { return (string)$this->_defaultStoreGroupVarName; } } /** * Is provided group selected. * * @param \Magento\Store\Model\Group $group * @return bool */ public function isStoreGroupSelected(\Magento\Store\Model\Group $group) { return $this->getStoreGroupId() === $group->getId() && $this->getStoreGroupId() === null; } /** * Return store group Id. * * @return int|null */ public function getStoreGroupId() { if (!$this->hasData('store_group_id')) { $this->setData('store_group_id', (int)$this->getRequest()->getParam($this->getStoreGroupVarName())); } return $this->getData('store_group_id'); } /** * Return store collection. * * @param \Magento\Store\Model\Group|int $group * @return \Magento\Store\Model\ResourceModel\Store\Collection */ public function getStoreCollection($group) { if (!$group instanceof \Magento\Store\Model\Group) { $group = $this->_storeGroupFactory->create()->load($group); } $stores = $group->getStoreCollection(); $_storeIds = $this->getStoreIds(); if (!empty($_storeIds)) { $stores->addIdFilter($_storeIds); } return $stores; } /** * Get store views for specified store group * * @param \Magento\Store\Model\Group|int $group * @return \Magento\Store\Model\Store[] */ public function getStores($group) { if (!$group instanceof \Magento\Store\Model\Group) { $group = $this->_storeManager->getGroup($group); } $stores = $group->getStores(); if ($storeIds = $this->getStoreIds()) { foreach (array_keys($stores) as $storeId) { if (!in_array($storeId, $storeIds)) { unset($stores[$storeId]); } } } return $stores; } /** * Return store Id. * * @return int|null */ public function getStoreId() { if (!$this->hasData('store_id')) { $this->setData('store_id', (int)$this->getRequest()->getParam($this->getStoreVarName())); } return $this->getData('store_id'); } /** * Check is provided store selected. * * @param \Magento\Store\Model\Store $store * @return bool */ public function isStoreSelected(\Magento\Store\Model\Store $store) { return $this->getStoreId() !== null && (int)$this->getStoreId() === (int)$store->getId(); } /** * Check if can switch to store views * * @return bool */ public function isStoreSwitchEnabled() { return (bool)$this->getData('switch_store_views'); } /** * Sets store variable name. * * @param string $varName * @return $this */ public function setStoreVarName($varName) { $this->setData('store_var_name', $varName); return $this; } /** * Return store variable name. * * @return mixed|string */ public function getStoreVarName() { if ($this->hasData('store_var_name')) { return (string)$this->getData('store_var_name'); } else { return (string)$this->_defaultStoreVarName; } } /** * Return switch url. * * @return string */ public function getSwitchUrl() { if ($url = $this->getData('switch_url')) { return $url; } return $this->getUrl( '*/*/*', [ '_current' => true, $this->getStoreVarName() => null, $this->getStoreGroupVarName() => null, $this->getWebsiteVarName() => null, ] ); } /** * Checks if scope selected. * * @return bool */ public function hasScopeSelected() { return $this->getStoreId() !== null || $this->getStoreGroupId() !== null || $this->getWebsiteId() !== null; } /** * Get current selection name * * @return string */ public function getCurrentSelectionName() { if ($this->getCurrentStoreName() !== '') { return $this->getCurrentStoreName(); } if ($this->getCurrentStoreGroupName() !== '') { return $this->getCurrentStoreGroupName(); } if ($this->getCurrentWebsiteName() !== '') { return $this->getCurrentWebsiteName(); } return $this->getDefaultSelectionName(); } /** * Get current website name * * @return string */ public function getCurrentWebsiteName() { $websiteId = $this->getWebsiteId(); if ($websiteId !== null) { if ($this->hasData('get_data_from_request')) { $requestedWebsite = $this->getRequest()->getParams('website'); if (!empty($requestedWebsite) && array_key_exists('website', $requestedWebsite)) { $websiteId = $requestedWebsite['website']; } } $website = $this->_websiteFactory->create(); $website->load($websiteId); if ($website->getId()) { return $website->getName(); } } return ''; } /** * Get current store group name * * @return string */ public function getCurrentStoreGroupName() { if ($this->getStoreGroupId() !== null) { $group = $this->_storeGroupFactory->create(); $group->load($this->getStoreGroupId()); if ($group->getId()) { return $group->getName(); } } return ''; } /** * Get current store view name * * @return string * @throws LocalizedException */ public function getCurrentStoreName() { $storeId = $this->getStoreId(); if ($storeId !== null) { if ($this->hasData('get_data_from_request')) { $requestedStore = $this->getRequest()->getParams('store'); if (!empty($requestedStore) && array_key_exists('store', $requestedStore)) { $storeId = $requestedStore['store']; } } $store = $this->_storeFactory->create(); $store->load($storeId); if ($store->getId()) { return $store->getName(); } } return ''; } /** * Sets store ids. * * @param array $storeIds * @return $this */ public function setStoreIds($storeIds) { $this->_storeIds = $storeIds; return $this; } /** * Return store ids. * * @return array */ public function getStoreIds() { return $this->_storeIds; } /** * Check if system is run in the single store mode. * * @return bool */ public function isShow() { return !$this->_storeManager->isSingleStoreMode(); } /** * Render block. * * @return string */ protected function _toHtml() { if ($this->isShow()) { return parent::_toHtml(); } return ''; } /** * Set/Get whether the switcher should show default option * * @param bool $hasDefaultOption * @return bool */ public function hasDefaultOption($hasDefaultOption = null) { if (null !== $hasDefaultOption) { $this->_hasDefaultOption = $hasDefaultOption; } return $this->_hasDefaultOption; } /** * Return url for store switcher hint * * @return string */ public function getHintUrl() { return self::HINT_URL; } /** * Return store switcher hint html * * @return string */ public function getHintHtml() { $html = ''; $url = $this->getHintUrl(); if ($url) { $html = '<div class="admin__field-tooltip tooltip"><a href="%s" onclick="this.target=\'_blank\'" title="%s" class="admin__field-tooltip-action action-help"><span>%s</span></a></div>'; $title = $this->escapeHtmlAttr(__('What is this?')); $span = $this->escapeHtml(__('What is this?')); $html = sprintf($html, $this->escapeUrl($url), $title, $span); } return $html; } /** * Get whether iframe is being used * * @return bool */ public function isUsingIframe() { if ($this->hasData('is_using_iframe')) { return (bool)$this->getData('is_using_iframe'); } return false; } }