Fix 32bits bigint support in Util/OC_Helper

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/36120/head
Côme Chilliet 3 years ago
parent 94ecae4ade
commit 7a628c0361
No known key found for this signature in database
GPG Key ID: A3E2F658B28C760A
  1. 25
      lib/private/legacy/OC_Helper.php
  2. 4
      lib/private/legacy/OC_Util.php
  3. 26
      lib/public/Util.php

@ -49,6 +49,7 @@ use OCP\Files\Mount\IMountPoint;
use OCP\ICacheFactory;
use OCP\IBinaryFinder;
use OCP\IUser;
use OCP\Util;
use Psr\Log\LoggerInterface;
/**
@ -59,12 +60,12 @@ class OC_Helper {
/**
* Make a human file size
* @param int $bytes file size in bytes
* @param int|float $bytes file size in bytes
* @return string a human readable file size
*
* Makes 2048 to 2 kB.
*/
public static function humanFileSize($bytes) {
public static function humanFileSize(int|float $bytes): string {
if ($bytes < 0) {
return "?";
}
@ -126,9 +127,7 @@ class OC_Helper {
return false;
}
$bytes = round($bytes);
return $bytes;
return Util::numericToNumber(round($bytes));
}
/**
@ -384,8 +383,8 @@ class OC_Helper {
* calculates the maximum upload size respecting system settings, free space and user quota
*
* @param string $dir the current folder where the user currently operates
* @param int $freeSpace the number of bytes free on the storage holding $dir, if not set this will be received from the storage directly
* @return int number of bytes representing
* @param int|float $freeSpace the number of bytes free on the storage holding $dir, if not set this will be received from the storage directly
* @return int|float number of bytes representing
*/
public static function maxUploadFilesize($dir, $freeSpace = null) {
if (is_null($freeSpace) || $freeSpace < 0) {
@ -398,7 +397,7 @@ class OC_Helper {
* Calculate free space left within user quota
*
* @param string $dir the current folder where the user currently operates
* @return int number of bytes representing
* @return int|float number of bytes representing
*/
public static function freeSpace($dir) {
$freeSpace = \OC\Files\Filesystem::free_space($dir);
@ -413,12 +412,12 @@ class OC_Helper {
/**
* Calculate PHP upload limit
*
* @return int PHP upload file size limit
* @return int|float PHP upload file size limit
*/
public static function uploadLimit() {
$ini = \OC::$server->get(IniGetWrapper::class);
$upload_max_filesize = (int)OCP\Util::computerFileSize($ini->get('upload_max_filesize'));
$post_max_size = (int)OCP\Util::computerFileSize($ini->get('post_max_size'));
$upload_max_filesize = Util::computerFileSize($ini->get('upload_max_filesize')) ?: 0;
$post_max_size = Util::computerFileSize($ini->get('post_max_size')) ?: 0;
if ($upload_max_filesize === 0 && $post_max_size === 0) {
return INF;
} elseif ($upload_max_filesize === 0 || $post_max_size === 0) {
@ -579,8 +578,8 @@ class OC_Helper {
/**
* Get storage info including all mount points and quota
*/
private static function getGlobalStorageInfo(int $quota, IUser $user, IMountPoint $mount): array {
$rootInfo = \OC\Files\Filesystem::getFileInfo('', 'ext');
private static function getGlobalStorageInfo(int|float $quota, IUser $user, IMountPoint $mount): array {
$rootInfo = \OC\Files\Filesystem::getFileInfo('', true);
$used = $rootInfo['size'];
if ($used < 0) {
$used = 0;

@ -146,7 +146,7 @@ class OC_Util {
/**
* check if share API enforces a default expire date
*
* @return boolean
* @return bool
* @suppress PhanDeprecatedFunction
*/
public static function isDefaultExpireDateEnforced() {
@ -159,7 +159,7 @@ class OC_Util {
* Get the quota of a user
*
* @param IUser|null $user
* @return int|\OCP\Files\FileInfo::SPACE_UNLIMITED|false Quota bytes
* @return int|\OCP\Files\FileInfo::SPACE_UNLIMITED|false|float Quota bytes
*/
public static function getUserQuota(?IUser $user) {
if (is_null($user)) {

@ -341,34 +341,34 @@ class Util {
/**
* Converts string to int of float depending if it fits an int
* @param numeric-string $number numeric string
* @param numeric-string|float|int $number numeric string
* @return int|float int if it fits, float if it is too big
* @since 26.0.0
*/
public static function numericToNumber(string $number): int|float {
public static function numericToNumber(string|float|int $number): int|float {
/* This is a hack to cast to (int|float) */
return 0 + $number;
}
/**
* Make a human file size (2048 to 2 kB)
* @param int $bytes file size in bytes
* @param int|float $bytes file size in bytes
* @return string a human readable file size
* @since 4.0.0
*/
public static function humanFileSize($bytes) {
public static function humanFileSize(int|float $bytes): string {
return \OC_Helper::humanFileSize($bytes);
}
/**
* Make a computer file size (2 kB to 2048)
* @param string $str file size in a fancy format
* @return float|false a file size in bytes
* @return false|int|float a file size in bytes
*
* Inspired by: https://www.php.net/manual/en/function.filesize.php#92418
* @since 4.0.0
*/
public static function computerFileSize($str) {
public static function computerFileSize(string $str): false|int|float {
return \OC_Helper::computerFileSize($str);
}
@ -485,31 +485,31 @@ class Util {
* calculates the maximum upload size respecting system settings, free space and user quota
*
* @param string $dir the current folder where the user currently operates
* @param int $free the number of bytes free on the storage holding $dir, if not set this will be received from the storage directly
* @return int number of bytes representing
* @param int|float|null $free the number of bytes free on the storage holding $dir, if not set this will be received from the storage directly
* @return int|float number of bytes representing
* @since 5.0.0
*/
public static function maxUploadFilesize($dir, $free = null) {
public static function maxUploadFilesize(string $dir, int|float|null $free = null): int|float {
return \OC_Helper::maxUploadFilesize($dir, $free);
}
/**
* Calculate free space left within user quota
* @param string $dir the current folder where the user currently operates
* @return int number of bytes representing
* @return int|float number of bytes representing
* @since 7.0.0
*/
public static function freeSpace($dir) {
public static function freeSpace(string $dir): int|float {
return \OC_Helper::freeSpace($dir);
}
/**
* Calculate PHP upload limit
*
* @return int number of bytes representing
* @return int|float number of bytes representing
* @since 7.0.0
*/
public static function uploadLimit() {
public static function uploadLimit(): int|float {
return \OC_Helper::uploadLimit();
}

Loading…
Cancel
Save