Вход Регистрация
Файл: framework/thirdparty/Zend/Currency.php
Строк: 1295
<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Currency.php 23775 2011-03-01 17:25:24Z ralph $
 */

/**
 * include needed classes
 */
require_once 'Zend/Locale.php';
require_once 
'Zend/Locale/Data.php';
require_once 
'Zend/Locale/Format.php';

/**
 * Class for handling currency notations
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Currency
{
    
// Constants for defining what currency symbol should be displayed
    
const NO_SYMBOL     1;
    const 
USE_SYMBOL    2;
    const 
USE_SHORTNAME 3;
    const 
USE_NAME      4;

    
// Constants for defining the position of the currencysign
    
const STANDARD 8;
    const 
RIGHT    16;
    const 
LEFT     32;

    
/**
     * Options array
     *
     * The following options are available
     * 'position'  => Position for the currency sign
     * 'script'    => Script for the output
     * 'format'    => Locale for numeric output
     * 'display'   => Currency detail to show
     * 'precision' => Precision for the currency
     * 'name'      => Name for this currency
     * 'currency'  => 3 lettered international abbreviation
     * 'symbol'    => Currency symbol
     * 'locale'    => Locale for this currency
     * 'value'     => Money value
     * 'service'   => Exchange service to use
     *
     * @var array
     * @see Zend_Locale
     */
    
protected $_options = array(
        
'position'  => self::STANDARD,
        
'script'    => null,
        
'format'    => null,
        
'display'   => self::NO_SYMBOL,
        
'precision' => 2,
        
'name'      => null,
        
'currency'  => null,
        
'symbol'    => null,
        
'locale'    => null,
        
'value'     => 0,
        
'service'   => null,
        
'tag'       => 'Zend_Locale'
    
);

    
/**
     * Creates a currency instance. Every supressed parameter is used from the actual or the given locale.
     *
     * @param  string|array       $options OPTIONAL Options array or currency short name
     *                                              when string is given
     * @param  string|Zend_Locale $locale  OPTIONAL locale name
     * @throws Zend_Currency_Exception When currency is invalid
     */
    
public function __construct($options null$locale null)
    {
        if (
is_array($options)) {
            
$this->setLocale($locale);
            
$this->setFormat($options);
        } else if (
Zend_Locale::isLocale($optionsfalsefalse)) {
            
$this->setLocale($options);
            
$options $locale;
        } else {
            
$this->setLocale($locale);
        }

        
// Get currency details
        
if (!isset($this->_options['currency']) || !is_array($options)) {
            
$this->_options['currency'] = self::getShortName($options$this->_options['locale']);
        }

        if (!isset(
$this->_options['name']) || !is_array($options)) {
            
$this->_options['name']     = self::getName($options$this->_options['locale']);
        }

        if (!isset(
$this->_options['symbol']) || !is_array($options)) {
            
$this->_options['symbol']   = self::getSymbol($options$this->_options['locale']);
        }

        if ((
$this->_options['currency'] === null) and ($this->_options['name'] === null)) {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception("Currency '$options' not found");
        }

        
// Get the format
        
if (!empty($this->_options['symbol'])) {
            
$this->_options['display'] = self::USE_SYMBOL;
        } else if (!empty(
$this->_options['currency'])) {
            
$this->_options['display'] = self::USE_SHORTNAME;
        }
    }

    
/**
     * Returns a localized currency string
     *
     * @param  integer|float $value   OPTIONAL Currency value
     * @param  array         $options OPTIONAL options to set temporary
     * @throws Zend_Currency_Exception When the value is not a number
     * @return string
     */
    
public function toCurrency($value null, array $options = array())
    {
        if (
$value === null) {
            if (
is_array($options) && isset($options['value'])) {
                
$value $options['value'];
            } else {
                
$value $this->_options['value'];
            }
        }

        if (
is_array($value)) {
            
$options += $value;
            if (isset(
$options['value'])) {
                
$value $options['value'];
            }
        }

        
// Validate the passed number
        
if (!(isset($value)) or (is_numeric($value) === false)) {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception("Value '$value' has to be numeric");
        }

        if (isset(
$options['currency'])) {
            if (!isset(
$options['locale'])) {
                
$options['locale'] = $this->_options['locale'];
            }

            
$options['currency'] = self::getShortName($options['currency'], $options['locale']);
            
$options['name']     = self::getName($options['currency'], $options['locale']);
            
$options['symbol']   = self::getSymbol($options['currency'], $options['locale']);
        }

        
$options $this->_checkOptions($options) + $this->_options;

        
// Format the number
        
$format $options['format'];
        
$locale $options['locale'];
        if (empty(
$format)) {
            
$format Zend_Locale_Data::getContent($locale'currencynumber');
        } else if (
Zend_Locale::isLocale($formattruefalse)) {
            
$locale $format;
            
$format Zend_Locale_Data::getContent($format'currencynumber');
        }

        
$original $value;
        
$value    Zend_Locale_Format::toNumber($value, array('locale'        => $locale,
                                                               
'number_format' => $format,
                                                               
'precision'     => $options['precision']));

        if (
$options['position'] !== self::STANDARD) {
            
$value str_replace('¤'''$value);
            
$space '';
            if (
iconv_strpos($value' ') !== false) {
                
$value str_replace(' '''$value);
                
$space ' ';
            }

            if (
$options['position'] == self::LEFT) {
                
$value '¤' $space $value;
            } else {
                
$value $value $space '¤';
            }
        }

        
// Localize the number digits
        
if (empty($options['script']) === false) {
            
$value Zend_Locale_Format::convertNumerals($value'Latn'$options['script']);
        }

        
// Get the sign to be placed next to the number
        
if (is_numeric($options['display']) === false) {
            
$sign $options['display'];
        } else {
            switch(
$options['display']) {
                case 
self::USE_SYMBOL:
                    
$sign $this->_extractPattern($options['symbol'], $original);
                    break;

                case 
self::USE_SHORTNAME:
                    
$sign $options['currency'];
                    break;

                case 
self::USE_NAME:
                    
$sign $options['name'];
                    break;

                default:
                    
$sign '';
                    
$value str_replace(' '''$value);
                    break;
            }
        }

        
$value str_replace('¤'$sign$value);
        return 
$value;
    }

    
/**
     * Internal method to extract the currency pattern
     * when a choice is given based on the given value
     *
     * @param  string $pattern
     * @param  float|integer $value
     * @return string
     */
    
private function _extractPattern($pattern$value)
    {
        if (
strpos($pattern'|') === false) {
            return 
$pattern;
        }

        
$patterns explode('|'$pattern);
        
$token    $pattern;
        
$value    trim(str_replace('¤'''$value));
        
krsort($patterns);
        foreach(
$patterns as $content) {
            if (
strpos($content'<') !== false) {
                
$check iconv_substr($content0iconv_strpos($content'<'));
                
$token iconv_substr($contenticonv_strpos($content'<') + 1);
                if (
$check $value) {
                    return 
$token;
                }
            } else {
                
$check iconv_substr($content0iconv_strpos($content'≤'));
                
$token iconv_substr($contenticonv_strpos($content'≤') + 1);
                if (
$check <= $value) {
                    return 
$token;
                }
            }

        }

        return 
$token;
    }

    
/**
     * Sets the formating options of the localized currency string
     * If no parameter is passed, the standard setting of the
     * actual set locale will be used
     *
     * @param  array $options (Optional) Options to set
     * @return Zend_Currency
     */
    
public function setFormat(array $options = array())
    {
        
$this->_options $this->_checkOptions($options) + $this->_options;
        return 
$this;
    }

    
/**
     * Internal function for checking static given locale parameter
     *
     * @param  string             $currency (Optional) Currency name
     * @param  string|Zend_Locale $locale   (Optional) Locale to display informations
     * @throws Zend_Currency_Exception When locale contains no region
     * @return string The extracted locale representation as string
     */
    
private function _checkParams($currency null$locale null)
    {
        
// Manage the params
        
if ((empty($locale)) and (!empty($currency)) and
            (
Zend_Locale::isLocale($currencytruefalse))) {
            
$locale   $currency;
            
$currency null;
        }

        
// Validate the locale and get the country short name
        
$country null;
        if ((
Zend_Locale::isLocale($localetruefalse)) and (strlen($locale) > 4)) {
            
$country substr($locale, (strpos($locale'_') + 1));
        } else {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception("No region found within the locale '" . (string) $locale "'");
        }

        
// Get the available currencies for this country
        
$data Zend_Locale_Data::getContent($locale'currencytoregion'$country);
        if ((empty(
$currency) === false) and (empty($data) === false)) {
            
$abbreviation $currency;
        } else {
            
$abbreviation $data;
        }

        return array(
'locale' => $locale'currency' => $currency'name' => $abbreviation'country' => $country);
    }

    
/**
     * Returns the actual or details of other currency symbols,
     * when no symbol is available it returns the currency shortname (f.e. FIM for Finnian Mark)
     *
     * @param  string             $currency (Optional) Currency name
     * @param  string|Zend_Locale $locale   (Optional) Locale to display informations
     * @return string
     */
    
public function getSymbol($currency null$locale null)
    {
        if ((
$currency === null) and ($locale === null)) {
            return 
$this->_options['symbol'];
        }

        
$params self::_checkParams($currency$locale);

        
// Get the symbol
        
$symbol Zend_Locale_Data::getContent($params['locale'], 'currencysymbol'$params['currency']);
        if (empty(
$symbol) === true) {
            
$symbol Zend_Locale_Data::getContent($params['locale'], 'currencysymbol'$params['name']);
        }

        if (empty(
$symbol) === true) {
            return 
null;
        }

        return 
$symbol;
    }

    
/**
     * Returns the actual or details of other currency shortnames
     *
     * @param  string             $currency OPTIONAL Currency's name
     * @param  string|Zend_Locale $locale   OPTIONAL The locale
     * @return string
     */
    
public function getShortName($currency null$locale null)
    {
        if ((
$currency === null) and ($locale === null)) {
            return 
$this->_options['currency'];
        }

        
$params self::_checkParams($currency$locale);

        
// Get the shortname
        
if (empty($params['currency']) === true) {
            return 
$params['name'];
        }

        
$list Zend_Locale_Data::getContent($params['locale'], 'currencytoname'$params['currency']);
        if (empty(
$list) === true) {
            
$list Zend_Locale_Data::getContent($params['locale'], 'nametocurrency'$params['currency']);
            if (empty(
$list) === false) {
                
$list $params['currency'];
            }
        }

        if (empty(
$list) === true) {
            return 
null;
        }

        return 
$list;
    }

    
/**
     * Returns the actual or details of other currency names
     *
     * @param  string             $currency (Optional) Currency's short name
     * @param  string|Zend_Locale $locale   (Optional) The locale
     * @return string
     */
    
public function getName($currency null$locale null)
    {
        if ((
$currency === null) and ($locale === null)) {
            return 
$this->_options['name'];
        }

        
$params self::_checkParams($currency$locale);

        
// Get the name
        
$name Zend_Locale_Data::getContent($params['locale'], 'nametocurrency'$params['currency']);
        if (empty(
$name) === true) {
            
$name Zend_Locale_Data::getContent($params['locale'], 'nametocurrency'$params['name']);
        }

        if (empty(
$name) === true) {
            return 
null;
        }

        return 
$name;
    }

    
/**
     * Returns a list of regions where this currency is or was known
     *
     * @param  string $currency OPTIONAL Currency's short name
     * @throws Zend_Currency_Exception When no currency was defined
     * @return array List of regions
     */
    
public function getRegionList($currency null)
    {
        if (
$currency === null) {
            
$currency $this->_options['currency'];
        }

        if (empty(
$currency) === true) {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception('No currency defined');
        }

        
$data Zend_Locale_Data::getContent($this->_options['locale'], 'regiontocurrency'$currency);

        
$result explode(' '$data);
        return 
$result;
    }

    
/**
     * Returns a list of currencies which are used in this region
     * a region name should be 2 charachters only (f.e. EG, DE, US)
     * If no region is given, the actual region is used
     *
     * @param  string $region OPTIONAL Region to return the currencies for
     * @return array List of currencies
     */
    
public function getCurrencyList($region null)
    {
        if (empty(
$region) === true) {
            if (
strlen($this->_options['locale']) > 4) {
                
$region substr($this->_options['locale'], (strpos($this->_options['locale'], '_') + 1));
            }
        }

        
$data Zend_Locale_Data::getContent($this->_options['locale'], 'currencytoregion'$region);

        
$result explode(' '$data);
        return 
$result;
    }

    
/**
     * Returns the actual currency name
     *
     * @return string
     */
    
public function toString()
    {
        return 
$this->toCurrency();
    }

    
/**
     * Returns the currency name
     *
     * @return string
     */
    
public function __toString()
    {
        return 
$this->toString();
    }

    
/**
     * Returns the set cache
     *
     * @return Zend_Cache_Core The set cache
     */
    
public static function getCache()
    {
        return 
Zend_Locale_Data::getCache();
    }

    
/**
     * Sets a cache for Zend_Currency
     *
     * @param  Zend_Cache_Core $cache Cache to set
     * @return void
     */
    
public static function setCache(Zend_Cache_Core $cache)
    {
        
Zend_Locale_Data::setCache($cache);
    }

    
/**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    
public static function hasCache()
    {
        return 
Zend_Locale_Data::hasCache();
    }

    
/**
     * Removes any set cache
     *
     * @return void
     */
    
public static function removeCache()
    {
        
Zend_Locale_Data::removeCache();
    }

    
/**
     * Clears all set cache data
     *
     * @param string $tag Tag to clear when the default tag name is not used
     * @return void
     */
    
public static function clearCache($tag null)
    {
        
Zend_Locale_Data::clearCache($tag);
    }

    
/**
     * Sets a new locale for data retreivement
     * Example: 'de_XX' will be set to 'de' because 'de_XX' does not exist
     * 'xx_YY' will be set to 'root' because 'xx' does not exist
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for parsing input
     * @throws Zend_Currency_Exception When the given locale does not exist
     * @return Zend_Currency Provides fluent interface
     */
    
public function setLocale($locale null)
    {
        require_once 
'Zend/Locale.php';
        try {
            
$locale Zend_Locale::findLocale($locale);
            if (
strlen($locale) > 4) {
                
$this->_options['locale'] = $locale;
            } else {
                require_once 
'Zend/Currency/Exception.php';
                throw new 
Zend_Currency_Exception("No region found within the locale '" . (string) $locale "'");
            }
        } catch (
Zend_Locale_Exception $e) {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception($e->getMessage());
        }

        
// Get currency details
        
$this->_options['currency'] = $this->getShortName(null$this->_options['locale']);
        
$this->_options['name']     = $this->getName(null$this->_options['locale']);
        
$this->_options['symbol']   = $this->getSymbol(null$this->_options['locale']);

        return 
$this;
    }

    
/**
     * Returns the actual set locale
     *
     * @return string
     */
    
public function getLocale()
    {
        return 
$this->_options['locale'];
    }

    
/**
     * Returns the value
     *
     * @return float
     */
    
public function getValue()
    {
        return 
$this->_options['value'];
    }

    
/**
     * Adds a currency
     *
     * @param float|integer|Zend_Currency $value    Add this value to currency
     * @param string|Zend_Currency        $currency The currency to add
     * @return Zend_Currency
     */
    
public function setValue($value$currency null)
    {
        
$this->_options['value'] = $this->_exchangeCurrency($value$currency);
        return 
$this;
    }

    
/**
     * Adds a currency
     *
     * @param float|integer|Zend_Currency $value    Add this value to currency
     * @param string|Zend_Currency        $currency The currency to add
     * @return Zend_Currency
     */
    
public function add($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$this->_options['value'] += (float) $value;
        return 
$this;
    }

    
/**
     * Substracts a currency
     *
     * @param float|integer|Zend_Currency $value    Substracts this value from currency
     * @param string|Zend_Currency        $currency The currency to substract
     * @return Zend_Currency
     */
    
public function sub($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$this->_options['value'] -= (float) $value;
        return 
$this;
    }

    
/**
     * Divides a currency
     *
     * @param float|integer|Zend_Currency $value    Divides this value from currency
     * @param string|Zend_Currency        $currency The currency to divide
     * @return Zend_Currency
     */
    
public function div($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$this->_options['value'] /= (float) $value;
        return 
$this;
    }

    
/**
     * Multiplies a currency
     *
     * @param float|integer|Zend_Currency $value    Multiplies this value from currency
     * @param string|Zend_Currency        $currency The currency to multiply
     * @return Zend_Currency
     */
    
public function mul($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$this->_options['value'] *= (float) $value;
        return 
$this;
    }

    
/**
     * Calculates the modulo from a currency
     *
     * @param float|integer|Zend_Currency $value    Calculate modulo from this value
     * @param string|Zend_Currency        $currency The currency to calculate the modulo
     * @return Zend_Currency
     */
    
public function mod($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$this->_options['value'] %= (float) $value;
        return 
$this;
    }

    
/**
     * Compares two currencies
     *
     * @param float|integer|Zend_Currency $value    Compares the currency with this value
     * @param string|Zend_Currency        $currency The currency to compare this value from
     * @return Zend_Currency
     */
    
public function compare($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        
$value $this->_options['value'] - $value;
        if (
$value 0) {
            return -
1;
        } else if (
$value 0) {
            return 
1;
        }

        return 
0;
    }

    
/**
     * Returns true when the two currencies are equal
     *
     * @param float|integer|Zend_Currency $value    Compares the currency with this value
     * @param string|Zend_Currency        $currency The currency to compare this value from
     * @return boolean
     */
    
public function equals($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        if (
$this->_options['value'] == $value) {
            return 
true;
        }

        return 
false;
    }

    
/**
     * Returns true when the currency is more than the given value
     *
     * @param float|integer|Zend_Currency $value    Compares the currency with this value
     * @param string|Zend_Currency        $currency The currency to compare this value from
     * @return boolean
     */
    
public function isMore($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        if (
$this->_options['value'] > $value) {
            return 
true;
        }

        return 
false;
    }

    
/**
     * Returns true when the currency is less than the given value
     *
     * @param float|integer|Zend_Currency $value    Compares the currency with this value
     * @param string|Zend_Currency        $currency The currency to compare this value from
     * @return boolean
     */
    
public function isLess($value$currency null)
    {
        
$value $this->_exchangeCurrency($value$currency);
        if (
$this->_options['value'] < $value) {
            return 
true;
        }

        return 
false;

    }

    
/**
     * Internal method which calculates the exchanges currency
     *
     * @param float|integer|Zend_Currency $value    Compares the currency with this value
     * @param string|Zend_Currency        $currency The currency to compare this value from
     * @return unknown
     */
    
protected function _exchangeCurrency($value$currency)
    {
        if (
$value instanceof Zend_Currency) {
            
$currency $value->getShortName();
            
$value    $value->getValue();
        } else {
            
$currency $this->getShortName($currency$this->getLocale());
        }

        
$rate 1;
        if (
$currency !== $this->getShortName()) {
            
$service $this->getService();
            if (!(
$service instanceof Zend_Currency_CurrencyInterface)) {
                require_once 
'Zend/Currency/Exception.php';
                throw new 
Zend_Currency_Exception('No exchange service applied');
            }

            
$rate $service->getRate($currency$this->getShortName());
        }

        
$value *= $rate;
        return 
$value;
    }

    
/**
     * Returns the set service class
     *
     * @return Zend_Service
     */
    
public function getService()
    {
        return 
$this->_options['service'];
    }

    
/**
     * Sets a new exchange service
     *
     * @param string|Zend_Currency_CurrencyInterface $service Service class
     * @return Zend_Currency
     */
    
public function setService($service)
    {
        if (
is_string($service)) {
            require_once 
'Zend/Loader.php';
            if (!
class_exists($service)) {
                
$file str_replace('_'DIRECTORY_SEPARATOR$service) . '.php';
                if (
Zend_Loader::isReadable($file)) {
                    
Zend_Loader::loadClass($service);
                }
            }

            
$service = new $service;
        }

        if (!(
$service instanceof Zend_Currency_CurrencyInterface)) {
            require_once 
'Zend/Currency/Exception.php';
            throw new 
Zend_Currency_Exception('A currency service must implement Zend_Currency_CurrencyInterface');
        }

        
$this->_options['service'] = $service;
        return 
$this;
    }

    
/**
     * Internal method for checking the options array
     *
     * @param  array $options Options to check
     * @throws Zend_Currency_Exception On unknown position
     * @throws Zend_Currency_Exception On unknown locale
     * @throws Zend_Currency_Exception On unknown display
     * @throws Zend_Currency_Exception On precision not between -1 and 30
     * @throws Zend_Currency_Exception On problem with script conversion
     * @throws Zend_Currency_Exception On unknown options
     * @return array
     */
    
protected function _checkOptions(array $options = array())
    {
        if (
count($options) === 0) {
            return 
$this->_options;
        }

        foreach (
$options as $name => $value) {
            
$name strtolower($name);
            if (
$name !== 'format') {
                if (
gettype($value) === 'string') {
                    
$value strtolower($value);
                }
            }

            switch(
$name) {
                case 
'position':
                    if ((
$value !== self::STANDARD) and ($value !== self::RIGHT) and ($value !== self::LEFT)) {
                        require_once 
'Zend/Currency/Exception.php';
                        throw new 
Zend_Currency_Exception("Unknown position '" $value "'");
                    }

                    break;

                case 
'format':
                    if ((empty(
$value) === false) and (Zend_Locale::isLocale($valuenullfalse) === false)) {
                        if (!
is_string($value) || (strpos($value'0') === false)) {
                            require_once 
'Zend/Currency/Exception.php';
                            throw new 
Zend_Currency_Exception("'" .
                                ((
gettype($value) === 'object') ? get_class($value) : $value)
                                . 
"' is no format token");
                        }
                    }
                    break;

                case 
'display':
                    if (
is_numeric($value) and ($value !== self::NO_SYMBOL) and ($value !== self::USE_SYMBOL) and
                        (
$value !== self::USE_SHORTNAME) and ($value !== self::USE_NAME)) {
                        require_once 
'Zend/Currency/Exception.php';
                        throw new 
Zend_Currency_Exception("Unknown display '$value'");
                    }
                    break;

                case 
'precision':
                    if (
$value === null) {
                        
$value = -1;
                    }

                    if ((
$value < -1) or ($value 30)) {
                        require_once 
'Zend/Currency/Exception.php';
                        throw new 
Zend_Currency_Exception("'$value' precision has to be between -1 and 30.");
                    }
                    break;

                case 
'script':
                    try {
                        
Zend_Locale_Format::convertNumerals(0$options['script']);
                    } catch (
Zend_Locale_Exception $e) {
                        require_once 
'Zend/Currency/Exception.php';
                        throw new 
Zend_Currency_Exception($e->getMessage());
                    }
                    break;

                default:
                    break;
            }
        }

        return 
$options;
    }
}
Онлайн: 2
Реклама