diff --git a/application/Utils.php b/application/Utils.php index 3ef2a7e..ab463af 100644 --- a/application/Utils.php +++ b/application/Utils.php @@ -414,23 +414,24 @@ function human_bytes($bytes) $bytes /= 1024; } - return $bytes . $units[$i]; + return round($bytes) . $units[$i]; } /** * Try to determine max file size for uploads (POST). - * Returns an integer (in bytes) + * Returns an integer (in bytes) or formatted depending on $format. * * @param mixed $limitPost post_max_size PHP setting * @param mixed $limitUpload upload_max_filesize PHP setting + * @param bool $format Format max upload size to human readable size * - * @return int max upload file size in bytes. + * @return int|string max upload file size */ -function get_max_upload_size($limitPost, $limitUpload) +function get_max_upload_size($limitPost, $limitUpload, $format = true) { $size1 = return_bytes($limitPost); $size2 = return_bytes($limitUpload); // Return the smaller of two: $maxsize = min($size1, $size2); - return human_bytes($maxsize); + return $format ? human_bytes($maxsize) : $maxsize; } diff --git a/index.php b/index.php index 8f26c39..1e25558 100644 --- a/index.php +++ b/index.php @@ -1489,7 +1489,22 @@ function renderPage($conf, $pluginManager, $LINKSDB) if (! isset($_POST['token']) || ! isset($_FILES['filetoupload'])) { // Show import dialog - $PAGE->assign('maxfilesize', get_max_upload_size(ini_get('post_max_size'), ini_get('upload_max_filesize'))); + $PAGE->assign( + 'maxfilesize', + get_max_upload_size( + ini_get('post_max_size'), + ini_get('upload_max_filesize'), + false + ) + ); + $PAGE->assign( + 'maxfilesizeHuman', + get_max_upload_size( + ini_get('post_max_size'), + ini_get('upload_max_filesize'), + true + ) + ); $PAGE->renderPage('import'); exit; } diff --git a/tests/UtilsTest.php b/tests/UtilsTest.php index e5ff01e..d6a0aad 100644 --- a/tests/UtilsTest.php +++ b/tests/UtilsTest.php @@ -392,13 +392,14 @@ class UtilsTest extends PHPUnit_Framework_TestCase $this->assertEquals('2GiB', human_bytes(strval(2 * (pow(1024, 3))))); $this->assertEquals('374B', human_bytes(374)); $this->assertEquals('374B', human_bytes('374')); + $this->assertEquals('232kiB', human_bytes(237481)); $this->assertEquals('Unlimited', human_bytes('0')); $this->assertEquals('Unlimited', human_bytes(0)); $this->assertEquals('Setting not set', human_bytes('')); } /** - * Test get_max_upload_size + * Test get_max_upload_size with formatting */ public function testGetMaxUploadSize() { @@ -406,4 +407,14 @@ class UtilsTest extends PHPUnit_Framework_TestCase $this->assertEquals('1MiB', get_max_upload_size('1m', '2m')); $this->assertEquals('100B', get_max_upload_size(100, 100)); } + + /** + * Test get_max_upload_size without formatting + */ + public function testGetMaxUploadSizeRaw() + { + $this->assertEquals('1048576', get_max_upload_size(2097152, '1024k', false)); + $this->assertEquals('1048576', get_max_upload_size('1m', '2m', false)); + $this->assertEquals('100', get_max_upload_size(100, 100, false)); + } } diff --git a/tpl/default/import.html b/tpl/default/import.html index e6e521e..1f04068 100644 --- a/tpl/default/import.html +++ b/tpl/default/import.html @@ -18,6 +18,7 @@
+


Maximum size allowed: {$maxfilesizeHuman}