Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Gets max upload size from post_max_size and upload_max_filesize
- * Returns whichever is smaller
- *
- * @return int
- */
- function file_upload_max_size() {
- $max_size = convert_to_bytes(ini_get('post_max_size'));
- $upload_max = convert_to_bytes(ini_get('upload_max_filesize'));
- if ($upload_max > 0 && $upload_max < $max_size) {
- $max_size = $upload_max;
- }
- return $max_size;
- }
- /**
- * Converts KB (K) through GB (G) to bytes
- *
- * @param string $from
- * @return int bytes
- */
- function convert_to_bytes($from) {
- $number = filter_var($from, FILTER_SANITIZE_NUMBER_INT);
- if (empty($number)) {
- return 0;
- }
- $type = strtoupper(str_replace($number, '', $from));
- switch ($type) {
- case "KB":
- case "K":
- $number = $number * 1024;
- break;
- case "MB":
- case "M":
- $number = $number * pow(1024, 2);
- break;
- case "GB":
- case "G":
- $number = $number * pow(1024, 3);
- break;
- default:
- return 0;
- }
- return fix_integer_overflow($number);
- }
- /**
- * Converts bytes to KB (K) through GB (G)
- *
- * @param int $bytes
- * @param string $type Type to convert to
- * KB (K) through GB (G)
- * @return int bytes
- */
- function convert_bytes_to_type($bytes, $type = 'MB') {
- $number = filter_var($bytes, FILTER_SANITIZE_NUMBER_INT);
- if (empty($number)) {
- return 0;
- }
- $type = strtoupper(str_replace($number, '', $type));
- switch ($type) {
- case "KB":
- case "K":
- $divisor = 1024;
- break;
- case "MB":
- case "M":
- $divisor = pow(1024, 2);
- break;
- case "GB":
- case "G":
- $divisor = pow(1024, 3);
- break;
- default:
- return 0;
- }
- return $bytes / $divisor;
- }
- /**
- * Converts bytes into human readable form
- *
- * @param string || File
- * @param int precision round precision
- * @return int rounded bytes in units
- */
- function human_readable_bytes($bytes, $precision = 2) {
- $CI = & get_instance();
- $CI->lang->load('number');
- if (is_file($bytes)) {
- $bytes = fix_integer_overflow(filesize($bytes));
- }
- $units = array(
- $CI->lang->line('bytes'),
- $CI->lang->line('kilobyte_abbr'),
- $CI->lang->line('megabyte_abbr'),
- $CI->lang->line('gigabyte_abbr'),
- $CI->lang->line('terabyte_abbr')
- );
- $bytes = max($bytes, 0);
- $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
- $pow = min($pow, count($units) - 1);
- $bytes /= pow(1024, $pow);
- return round($bytes, $precision) . ' ' . $units[$pow];
- }
- /**
- * Fixes integer overflow
- *
- * @param int $size
- * @return int
- */
- function fix_integer_overflow($size) {
- if ($size < 0) {
- $size += 2.0 * (PHP_INT_MAX + 1);
- }
- return $size;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement