![]() 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-directory/Block/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Currency dropdown block */ namespace Magento\Directory\Block; use Magento\Framework\Locale\Bundle\CurrencyBundle as CurrencyBundle; /** * @api * @since 100.0.2 */ class Currency extends \Magento\Framework\View\Element\Template { /** * @var \Magento\Directory\Model\CurrencyFactory */ protected $_currencyFactory; /** * @var \Magento\Framework\Data\Helper\PostHelper */ protected $_postDataHelper; /** * @var \Magento\Framework\Locale\ResolverInterface */ protected $localeResolver; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Directory\Model\CurrencyFactory $currencyFactory * @param \Magento\Framework\Data\Helper\PostHelper $postDataHelper * @param \Magento\Framework\Locale\ResolverInterface $localeResolver * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Directory\Model\CurrencyFactory $currencyFactory, \Magento\Framework\Data\Helper\PostHelper $postDataHelper, \Magento\Framework\Locale\ResolverInterface $localeResolver, array $data = [] ) { $this->_currencyFactory = $currencyFactory; $this->_postDataHelper = $postDataHelper; parent::__construct($context, $data); $this->localeResolver = $localeResolver; } /** * Retrieve count of currencies * Return 0 if only one currency * * @return int */ public function getCurrencyCount() { return count($this->getCurrencies()); } /** * Retrieve currencies array * Return array: code => currency name * Return empty array if only one currency * * @return array */ public function getCurrencies() { $currencies = $this->getData('currencies'); if ($currencies === null) { $currencies = []; $codes = $this->_storeManager->getStore()->getAvailableCurrencyCodes(true); if (is_array($codes) && count($codes) > 1) { $rates = $this->_currencyFactory->create()->getCurrencyRates( $this->_storeManager->getStore()->getBaseCurrency(), $codes ); foreach ($codes as $code) { if (isset($rates[$code])) { $allCurrencies = (new CurrencyBundle())->get( $this->localeResolver->getLocale() )['Currencies']; $currencies[$code] = $allCurrencies[$code][1] ?: $code; } } } $this->setData('currencies', $currencies); } return $currencies; } /** * Retrieve Currency Switch URL * * @return string */ public function getSwitchUrl() { return $this->getUrl('directory/currency/switch'); } /** * Return POST data for currency to switch * * @param string $code * @return string */ public function getSwitchCurrencyPostData($code) { return $this->_postDataHelper->getPostData($this->escapeUrl($this->getSwitchUrl()), ['currency' => $code]); } /** * Retrieve Current Currency code * * @return string */ public function getCurrentCurrencyCode() { if ($this->_getData('current_currency_code') === null) { // do not use $this->_storeManager->getStore()->getCurrentCurrencyCode() because of probability // to get an invalid (without base rate) currency from code saved in session $this->setData('current_currency_code', $this->_storeManager->getStore()->getCurrentCurrency()->getCode()); } return $this->_getData('current_currency_code'); } /** * @return string */ public function getStoreCode() { return $this->_storeManager->getStore()->getCode(); } }