/** * Convert from localized value for internal usage * * @param string $value * @param string $type * @param string $inputDateFormat (Intl date format - http://www.php.net/manual/en/book.intl.php) * @param string $outputDateFormat (php date format) * @param string $locale * @return mixed */ public static function convertFromLocalizedValue($value, $type, $inputDateFormat = IntlDateFormatter::MEDIUM, $outputDateFormat = 'Y-m-d', $locale = null) { if (!$value) { return $value; } switch ($type) { case 'float': $filter = new NumberFormat(); return $filter->filter($value); case 'date': case 'date_unixtime': $dateFormater = new IntlDateFormatter($locale ? $locale : self::getLocale(), $inputDateFormat, IntlDateFormatter::NONE, date_default_timezone_get(), IntlDateFormatter::GREGORIAN); return $type == 'date' ? date($outputDateFormat, $dateFormater->parse($value)) : $dateFormater->parse($value); // return timestamp // return timestamp default: return $value; } }
/** * @param $locale * @param $style * @param $type * @param $value * @param $expected * @dataProvider formattedToNumberProvider */ public function testFormattedToNumber($locale, $style, $type, $value, $expected) { $filter = new NumberFormatFilter($locale, $style, $type); $this->assertEquals($expected, $filter->filter($value)); }
/** * Format file size according to specified locale * @param int $size File size in [B] bytes * @param string $locale name of locale settings * @param string $emptyValue waht is returned if $size is empty or zero * @return string value and unit * * @assert (1024, 'pl_PL') == '1 kB' * @assert (356, 'pl_PL') == '356 B' * @assert (6587, 'pl_PL') == '6,43 kB' */ public static function formatFileSize($size, $locale, $emptyValue = '-') { $sizes = array(' B', ' kB', ' MB', ' GB', ' TB', ' PB'); if (is_null($size) || $size == 0) { return $emptyValue; } $precision = 2; if ($size == (int) $size && $size < 1024) { // < 1MB $precision = 0; } $size = round($size / pow(1024, $i = floor(log($size, 1024))), $precision); if (class_exists('\\NumberFormatter')) { $filter = new \Zend\I18n\Filter\NumberFormat($locale, NumberFormatter::DECIMAL, NumberFormatter::TYPE_DOUBLE); return $filter->filter($size) . $sizes[$i]; } return $size . $sizes[$i]; }
/** * @dataProvider returnUnfilteredDataProvider * @return void */ public function testReturnUnfiltered($input) { $filter = new NumberFormatFilter('de_AT', NumberFormatter::DEFAULT_STYLE, NumberFormatter::TYPE_DOUBLE); $this->assertEquals($input, $filter->filter($input)); }