You are here

class CurrencyLocalePattern in Currency 7.2

A currency pattern for a locale.

Hierarchy

Expanded class hierarchy of CurrencyLocalePattern

2 string references to 'CurrencyLocalePattern'
CurrencyLocalePatternWebTestCase::getInfo in currency/tests/CurrencyLocalePatternWebTestCase.test
Implements DrupalTestCase::getInfo().
currency_schema in currency/currency.install
Implements hook_schema().

File

currency/includes/CurrencyLocalePattern.inc, line 13
Contains class CurrencyLocalePattern.

View source
class CurrencyLocalePattern {

  /**
   * The locale as a combination of an ISO 639-1 language code and a country
   * code, separated by an underscore.
   *
   * @var string
   */
  public $locale = '';

  /**
   * Implements Chaos tools' exportable object "export_module" property.
   */
  public $export_module = 'currency';

  /**
   * Implements Chaos tools' exportable object "export_type" property.
   */
  public $export_type = 0;

  /**
   * The Unicode CLDR number pattern.
   *
   * @var string
   */
  public $pattern = NULL;

  /**
   * The decimal separator's replacement.
   *
   * @var string
   */
  public $symbol_decimal_separator = NULL;

  /**
   * The grouping separator's replacement.
   *
   * @var string
   */
  public $symbol_grouping_separator = NULL;

  /**
   * Implements Chaos tools' exportable object "table" property.
   */
  public $table = 'currency_locale_pattern';

  /**
   * Implements Ctools' exportables "type" property.
   *
   * @var string
   */
  public $type = 'Local';

  /**
   * Implements __construct().
   */
  function __construct(array $properties = array()) {
    foreach ($properties as $property => $value) {
      $this->{$property} = $value;
    }
  }

  /**
   * Formats an amount using this pattern.
   *
   * @param Currency $currency
   * @param string $amount
   *   A numeric string.
   *
   * @return string
   */
  function format(Currency $currency, $amount) {
    static $formatter = NULL;
    if (is_null($formatter) || $formatter->pattern != $this->pattern) {
      $formatter = new CurrencyFormatter($this->pattern, array(
        CurrencyFormatter::SYMBOL_SPECIAL_DECIMAL_SEPARATOR => $this->symbol_decimal_separator,
        CurrencyFormatter::SYMBOL_SPECIAL_GROUPING_SEPARATOR => $this->symbol_grouping_separator,
      ));
    }
    $formatted = $formatter
      ->format($amount, $currency->sign);
    $formatted = str_replace(array(
      '[XXX]',
      '[999]',
    ), array(
      $currency->ISO4217Code,
      $currency->ISO4217Number,
    ), $formatted);
    return $formatted;
  }

  /**
   * Loads a single CurrencyLocalePattern based on environment variables.
   *
   * If no country code is set in $language->currency_country_code, the
   * "site_default_country" system variable will be used instead. If a
   * CurrencyLocalePattern could not be loaded using these country sources and
   * $language->language, the locale pattern for en_US will be loaded. This is
   * consistent with Drupal's default language, which is US English.
   *
   * @throws RuntimeException
   *
   * @return CurrencyLocalePattern
   */
  static function loadFromEnv() {
    global $language;
    $locale_pattern =& drupal_static('currency_env_locale_pattern');
    if (is_null($locale_pattern)) {

      // Try this request's country code.
      if (self::getCountryCode()) {
        $locale_pattern = ctools_export_crud_load('currency_locale_pattern', $language->language . '_' . self::getCountryCode());
      }

      // Try the global default country code.
      if (!$locale_pattern && ($country_code = variable_get('site_default_country', ''))) {
        $locale_pattern = ctools_export_crud_load('currency_locale_pattern', $language->language . '_' . $country_code);
      }

      // Try the Currency default.
      if (!$locale_pattern) {
        $locale_pattern = ctools_export_crud_load('currency_locale_pattern', CURRENCY_DEFAULT_LOCALE);
      }
      if (!$locale_pattern) {
        throw new RuntimeException(t('The CurrencyLocalePattern en_US could not be loaded.'));
      }
    }
    return $locale_pattern;
  }

  /**
   * Sets the currency locale's country.
   *
   * @param string $country_code_new
   *   Any code that is also returned by country_get_list().
   *
   * @return null
   */
  static function setCountryCode($country_code_new) {
    $country_code =& drupal_static(__CLASS__ . '_country_code');
    $country_code = $country_code_new;
  }

  /**
   * Gets the currency locale's country.
   *
   * @return null|string
   */
  static function getCountryCode() {
    return drupal_static(__CLASS__ . '_country_code');
  }

  /**
   * Resets the currency locale's country.
   *
   * @return null
   */
  static function resetCountryCode() {
    drupal_static_reset(__CLASS__ . '_country_code');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CurrencyLocalePattern::$export_module public property Implements Chaos tools' exportable object "export_module" property.
CurrencyLocalePattern::$export_type public property Implements Chaos tools' exportable object "export_type" property.
CurrencyLocalePattern::$locale public property The locale as a combination of an ISO 639-1 language code and a country code, separated by an underscore.
CurrencyLocalePattern::$pattern public property The Unicode CLDR number pattern.
CurrencyLocalePattern::$symbol_decimal_separator public property The decimal separator's replacement.
CurrencyLocalePattern::$symbol_grouping_separator public property The grouping separator's replacement.
CurrencyLocalePattern::$table public property Implements Chaos tools' exportable object "table" property.
CurrencyLocalePattern::$type public property Implements Ctools' exportables "type" property.
CurrencyLocalePattern::format function Formats an amount using this pattern.
CurrencyLocalePattern::getCountryCode static function Gets the currency locale's country.
CurrencyLocalePattern::loadFromEnv static function Loads a single CurrencyLocalePattern based on environment variables.
CurrencyLocalePattern::resetCountryCode static function Resets the currency locale's country.
CurrencyLocalePattern::setCountryCode static function Sets the currency locale's country.
CurrencyLocalePattern::__construct function Implements __construct().