Commit 0424b347 authored by Bart Feenstra's avatar Bart Feenstra
Browse files

Issue #2471198 by Xano, ricovandevin: currency_amount form element does not...

Issue #2471198 by Xano, ricovandevin: currency_amount form element does not respect default currency code
parent 08ec1c54
Loading
Loading
Loading
Loading
+14 −8
Changes for currency/currency.module: 14 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -226,15 +226,22 @@ function currency_form_currency_amount_process(array $element, array &$form_stat
  if ($element['#maximum_amount'] !== FALSE && !is_numeric($element['#maximum_amount'])) {
    throw new Exception(t('The maximum amount must be a decimal number.'));
  }
  if ($element['#currency_code']
    && isset($element['#default_value']['currency_code'])
    && $element['#default_value']['currency_code'] != $element['#limit_currency_codes']) {
    throw new \InvalidArgumentException(sprintf('The default currency %s is different from the only allowed currency %s.', $element['#default_value']['currency_code'], $element['#currency_code']));
  }

  // Load the default currency.
  ctools_include('export');
  $currency = FALSE;
  if ($element['#currency_code'] !== FALSE) {
    $currency = currency_load($element['#currency_code']);
    if (!$currency) {
      throw new Exception(t('A valid ISO 4217 currency code needs to be set.'));
  $currency = NULL;
  if (isset($element['#default_value']['currency_code'])) {
    $currency = currency_load($element['#default_value']['currency_code']);
  }
  if (!$currency && $element['#currency_code']) {
    $currency = currency_load($element['#currency_code']);
  }
  else {
  if (!$currency) {
    $currency = currency_load('XXX');
  }

@@ -248,13 +255,12 @@ function currency_form_currency_amount_process(array $element, array &$form_stat
  // Add the currency element.
  if (!$element['#currency_code']) {
    $element['currency_code'] = array(
      '#default_value' => $element['#default_value']['currency_code'],
      '#default_value' => $currency->ISO4217Code,
      '#type' => 'select',
      '#title' => t('Currency'),
      '#title_display' => 'invisible',
      '#options' => currency_options(),
      '#required' => $element['#required'],
      '#default_value' => 'XXX',
    );
  }