%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/i18n/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/components/i18n/Formatter.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\components\i18n;
use IntlDateFormatter;
use Yii;
use yii\base\InvalidArgumentException;
/**
* @inheritdoc
*/
class Formatter extends \yii\i18n\Formatter
{
/**
* @inheritdoc
*/
public $sizeFormatBase = 1000;
/**
* @var string the default format string to be used to format a input field [[asDate()|date]].
* This mostly used in forms (DatePicker).
* @see dateFormat
*/
public $dateInputFormat = 'short';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
if (Yii::$app->params['installed'] && Yii::$app->getModule('admin') !== null && !empty(Yii::$app->getModule('admin')->settings->get('defaultDateInputFormat'))) {
$this->dateInputFormat = Yii::$app->getModule('admin')->settings->get('defaultDateInputFormat');
}
}
/**
* Returns the date pattern for the given $locale and $dateType, $timeType.
*
* @since 1.2.2
* @param int $dateType
* @param int $timeType
* @param null $locale
* @return null|string
*/
public function getDateTimePattern($dateType = IntlDateFormatter::SHORT, $timeType = IntlDateFormatter::SHORT, $locale = null)
{
if (extension_loaded('intl')) {
$locale = empty($locale) ? $this->locale : $locale;
$formatter = new IntlDateFormatter($locale, $dateType, $timeType, $this->timeZone, $this->calendar);
return $formatter->getPattern();
} else {
return null;
}
}
/**
* Checks if the time pattern of a given $locale contains a meridiem (AM/PM).
* If no $locale is provided the Formatter locale will be used.
*
* @since 1.2.2
* @param null $locale
* @return bool if the locale uses a 12 hour (AM/PM) otherwise a 24 hour time format is used.
*/
public function isShowMeridiem($locale = null)
{
if (extension_loaded('intl')) {
$pattern = $this->getDateTimePattern(IntlDateFormatter::NONE, IntlDateFormatter::SHORT);
return strpos($pattern, 'a') !== false;
}
return false;
}
/**
* Formats the value as short integer number by removing any decimal and thousand digits without rounding.
*
* @param mixed $value the value to be formatted.
* @param array $options optional configuration for the number formatter. This parameter will be merged with [[numberFormatterOptions]].
* @param array $textOptions optional configuration for the number formatter. This parameter will be merged with [[numberFormatterTextOptions]].
* @return string the formatted result, e.g. 5K, 123M, 42B, 9T, 1Q
* @throws InvalidArgumentException if the input value is not numeric or the formatting failed.
*/
public function asShortInteger($value, $options = [], $textOptions = [])
{
list($params, $position) = $this->formatNumber($value, null, 2, 1000, $options, $textOptions);
$params['nFormatted'] = floor((float)$params['nFormatted']);
switch ($position) {
case 0:
return $params['nFormatted'];
case 1:
return Yii::t('base', '{nFormatted}K', $params, $this->language); // Thousand
case 2:
return Yii::t('base', '{nFormatted}M', $params, $this->language); // Million
default:
return Yii::t('base', '{nFormatted}B', $params, $this->language); // Billion
}
}
}