* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Form\ChoiceProvider; use PrestaShop\PrestaShop\Adapter\Currency\CurrencyDataProvider; use PrestaShop\PrestaShop\Core\Form\FormChoiceAttributeProviderInterface; use PrestaShop\PrestaShop\Core\Form\FormChoiceProviderInterface; /** * Class CurrencyByIdChoiceProvider provides currency choices with ID values. */ final class CurrencyByIdChoiceProvider implements FormChoiceProviderInterface, FormChoiceAttributeProviderInterface { /** * @var CurrencyDataProvider */ private $currencyDataProvider; /** * @param CurrencyDataProvider $currencyDataProvider */ public function __construct(CurrencyDataProvider $currencyDataProvider) { $this->currencyDataProvider = $currencyDataProvider; } /** * Get currency choices. * * @return array */ public function getChoices() { $currencies = $this->getCurrencies(); $choices = []; foreach ($currencies as $currency) { $currencyLabel = sprintf('%s (%s)', $currency['name'], $currency['iso_code']); $choices[$currencyLabel] = $currency['id_currency']; } return $choices; } public function getChoicesAttributes() { $currencies = $this->getCurrencies(); $choicesAttributes = []; foreach ($currencies as $currency) { $currencyLabel = sprintf('%s (%s)', $currency['name'], $currency['iso_code']); $choicesAttributes[$currencyLabel]['symbol'] = $currency['symbol']; } return $choicesAttributes; } private function getCurrencies(): array { return $this->currencyDataProvider->getCurrencies(false, true, true); } }