Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
d12c8d58
Commit
d12c8d58
authored
Feb 24, 2014
by
Vincent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#2524 updated as size method to include translation and verbose mode
parent
9427f4e7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
10 deletions
+38
-10
Formatter.php
framework/base/Formatter.php
+38
-10
No files found.
framework/base/Formatter.php
View file @
d12c8d58
...
...
@@ -66,6 +66,16 @@ class Formatter extends Component
* If not set, "," will be used.
*/
public
$thousandSeparator
;
/**
* @var array the format used to format size (bytes). Three elements may be specified: "base", "decimals" and "decimalSeparator".
* They correspond to the base at which a kilobyte is calculated (1000 or 1024 bytes per kilobyte, defaults to 1024),
* the number of digits after the decimal point (defaults to 2) and the character displayed as the decimal point.
*/
public
$sizeFormat
=
array
(
'base'
=>
1024
,
'decimals'
=>
2
,
'decimalSeparator'
=>
null
,
);
/**
* Initializes the component.
...
...
@@ -406,27 +416,45 @@ class Formatter extends Component
}
/**
* Formats the value as file size with a unit representation
* @param mixed $value the value to be formatted
* @param integer $decimals the number of digits after the decimal point
* Formats the value in bytes as a size in human readable form.
* @param integer $value value in bytes to be formatted
* @param boolean $verbose if full names should be used (e.g. bytes, kilobytes, ...).
* Defaults to false meaning that short names will be used (e.g. B, KB, ...).
* @return string the formatted result
* @see decimalSeparator
* @see thousandSeparator
* @see sizeFormat
*/
public
function
asSize
(
$value
,
$
decimals
=
0
)
public
function
asSize
(
$value
,
$
verbose
=
false
)
{
$units
=
[
'B'
,
'KB'
,
'MB'
,
'GB'
,
'TB'
,
'PB'
];
$position
=
0
;
do
{
if
(
$value
<
1024
)
{
return
round
(
$value
,
$decimals
)
.
$units
[
$position
]
;
if
(
$value
<
$this
->
sizeFormat
[
'base'
]
)
{
break
;
}
$value
=
$value
/
1024
;
$value
=
$value
/
$this
->
sizeFormat
[
'base'
]
;
$position
++
;
}
while
(
$position
<
count
(
$units
));
return
number_format
(
$value
,
$decimals
)
.
Yii
::
t
(
'yii'
,
end
(
$units
));
$value
=
round
(
$value
,
$this
->
sizeFormat
[
'decimals'
]);
$formattedValue
=
isset
(
$this
->
sizeFormat
[
'decimalSeparator'
])
?
str_replace
(
'.'
,
$this
->
sizeFormat
[
'decimalSeparator'
],
$value
)
:
$value
;
$params
=
[
'n'
=>
$formattedValue
];
switch
(
$position
)
{
case
0
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# byte} other{# bytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} B'
,
$params
);
case
1
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# kilobyte} other{# kilobytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} KB'
,
$params
);
case
2
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# megabyte} other{# megabytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} MB'
,
$params
);
case
3
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# gigabyte} other{# gigabytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} GB'
,
$params
);
case
4
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# terabyte} other{# terabytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} TB'
,
$params
);
default
:
return
$verbose
?
Yii
::
t
(
'yii'
,
'{n, plural, =1{# petabyte} other{# petabytes}}'
,
$params
)
:
Yii
::
t
(
'yii'
,
'{n} PB'
,
$params
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment