introduced getBytesFromShorthand function to covert from shorthand notation to int
This commit is contained in:
parent
c4c1bd2908
commit
907deed523
2 changed files with 37 additions and 30 deletions
|
@ -918,43 +918,19 @@ function photos_content(App $a)
|
||||||
* limit of Friendica ('maximagesize') or upload_max_filesize
|
* limit of Friendica ('maximagesize') or upload_max_filesize
|
||||||
* and outputs the lower one.
|
* and outputs the lower one.
|
||||||
*/
|
*/
|
||||||
// init output var in case no number value could be retrieved.
|
|
||||||
$maximagesize_Mbytes = 0;
|
$maximagesize_Mbytes = 0;
|
||||||
$sizelimitedby = '';
|
|
||||||
{
|
{
|
||||||
// Get the relevant size limits for uploads. Abbreviated var names: MaxImageSize -> mis; upload_max_filesize -> umf
|
// Get the relevant size limits for uploads. Abbreviated var names: MaxImageSize -> mis; upload_max_filesize -> umf
|
||||||
$mis_bytes = DI::config()->get('system', 'maximagesize');
|
$mis_bytes = DI::config()->get('system', 'maximagesize');
|
||||||
// get_cfg_var('upload_max_filesize') outputs a string in the shorthand notation, need to convert it to bytes
|
$umf_bytes = Strings::getBytesFromShorthand(get_cfg_var('upload_max_filesize'));
|
||||||
$umf_string = get_cfg_var('upload_max_filesize');
|
|
||||||
$umf_bytes = filter_var($umf_string, FILTER_SANITIZE_NUMBER_INT);
|
|
||||||
switch (substr($umf_string, -1)) {
|
|
||||||
// According to https://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes only K, M, and G is used.
|
|
||||||
case 'M':
|
|
||||||
$umf_bytes *= 10**6;
|
|
||||||
break;
|
|
||||||
case 'K':
|
|
||||||
$umf_bytes *= 10**3;
|
|
||||||
break;
|
|
||||||
case 'G':
|
|
||||||
$umf_bytes *= 10**9;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (is_numeric($mis_bytes) && is_numeric($umf_bytes)) {
|
|
||||||
// When PHP is configured with upload_max_filesize less than maximagesize provide this lower limit.
|
|
||||||
if ($umf_bytes < $mis_bytes) {
|
|
||||||
$maximagesize_Mbytes = ($umf_bytes / (10 ** 6));
|
|
||||||
$sizelimitedby = 'PHP.ini';
|
|
||||||
} else {
|
|
||||||
$maximagesize_Mbytes = ($mis_bytes / (10 ** 6));
|
|
||||||
|
|
||||||
|
if (is_numeric($mis_bytes)) {
|
||||||
|
// When PHP is configured with upload_max_filesize less than maximagesize provide this lower limit.
|
||||||
|
($umf_bytes < $mis_bytes) ?
|
||||||
|
($maximagesize_Mbytes = ($umf_bytes / (10 ** 6))) : ($maximagesize_Mbytes = ($mis_bytes / (10 ** 6)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
$usage_message = DI::l10n()->t('The maximum accepted image size is %.3g MB', Strings::getBytesFromShorthand(get_cfg_var('upload_max_filesize')));
|
||||||
$usage_message = DI::l10n()->t('The maximum accepted image size is %.3g MB', $maximagesize_Mbytes);
|
|
||||||
// Do we want to bother the end user with this information? If yes uncomment
|
|
||||||
//if (strlen($sizelimitedby) > 0) {
|
|
||||||
// $usage_message .= ' ('. $sizelimitedby . ')';
|
|
||||||
//}
|
|
||||||
|
|
||||||
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
|
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
|
||||||
|
|
||||||
|
|
|
@ -515,4 +515,35 @@ class Strings
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function converts a PHP's shorhand notation string for file sizes in to an integer number of total bytes.
|
||||||
|
* For example: The string for shorthand notation of '2M' (which is 2,097,152 Bytes) is converted to 2097152
|
||||||
|
* For more information about file size shorhand notation see:
|
||||||
|
* https://www.php.net/manual/en/faq.using.php#faq.using.shorthandbytes
|
||||||
|
* @param string $shorthand
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function getBytesFromShorthand(string $shorthand): int
|
||||||
|
{
|
||||||
|
$shorthand = trim($shorthand);
|
||||||
|
|
||||||
|
if (is_numeric($shorthand))
|
||||||
|
return $shorthand;
|
||||||
|
|
||||||
|
$last = strtolower($shorthand[strlen($shorthand)-1]);
|
||||||
|
$shorthand = substr($shorthand, 0, -1); // necessary since PHP 7.1; otherwise optional
|
||||||
|
|
||||||
|
switch($last) {
|
||||||
|
// The 'G' modifier is available since PHP 5.1.0
|
||||||
|
case 'g':
|
||||||
|
$shorthand *= 1024;
|
||||||
|
case 'm':
|
||||||
|
$shorthand *= 1024;
|
||||||
|
case 'k':
|
||||||
|
$shorthand *= 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $shorthand;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue