diff options
| author | 3D-I <480857+3D-I@users.noreply.github.com> | 2019-10-28 21:11:42 +0100 |
|---|---|---|
| committer | 3D-I <480857+3D-I@users.noreply.github.com> | 2019-10-28 21:11:42 +0100 |
| commit | d136a8a9078b02433f4be08420486ad05c8129bd (patch) | |
| tree | 4d3c720253ed2edef075bec7152a0ce66db16e10 /phpBB/phpbb/plupload/plupload.php | |
| parent | 41728f2258c409480b9c3d4c1753b6eb1b47c677 (diff) | |
| parent | e95e387188b050c163edcce3141c957d259810c9 (diff) | |
| download | forums-d136a8a9078b02433f4be08420486ad05c8129bd.tar forums-d136a8a9078b02433f4be08420486ad05c8129bd.tar.gz forums-d136a8a9078b02433f4be08420486ad05c8129bd.tar.bz2 forums-d136a8a9078b02433f4be08420486ad05c8129bd.tar.xz forums-d136a8a9078b02433f4be08420486ad05c8129bd.zip | |
Merge branch '3.2.x' into ticket/16153
Diffstat (limited to 'phpBB/phpbb/plupload/plupload.php')
| -rw-r--r-- | phpBB/phpbb/plupload/plupload.php | 73 |
1 files changed, 43 insertions, 30 deletions
diff --git a/phpBB/phpbb/plupload/plupload.php b/phpBB/phpbb/plupload/plupload.php index eb698fb35d..5a5b8a1874 100644 --- a/phpBB/phpbb/plupload/plupload.php +++ b/phpBB/phpbb/plupload/plupload.php @@ -216,38 +216,36 @@ class plupload } /** - * Looks at the list of allowed extensions and generates a string - * appropriate for use in configuring plupload with - * - * @param \phpbb\cache\service $cache - * @param string $forum_id The ID of the forum - * - * @return string - */ + * Looks at the list of allowed extensions and generates a string + * appropriate for use in configuring plupload with + * + * @param \phpbb\cache\service $cache Cache service object + * @param string $forum_id The forum identifier + * + * @return string + */ public function generate_filter_string(\phpbb\cache\service $cache, $forum_id) { + $groups = []; + $filters = []; + $attach_extensions = $cache->obtain_attach_extensions($forum_id); unset($attach_extensions['_allowed_']); - $groups = array(); // Re-arrange the extension array to $groups[$group_name][] foreach ($attach_extensions as $extension => $extension_info) { - if (!isset($groups[$extension_info['group_name']])) - { - $groups[$extension_info['group_name']] = array(); - } - - $groups[$extension_info['group_name']][] = $extension; + $groups[$extension_info['group_name']]['extensions'][] = $extension; + $groups[$extension_info['group_name']]['max_file_size'] = (int) $extension_info['max_filesize']; } - $filters = array(); - foreach ($groups as $group => $extensions) + foreach ($groups as $group => $group_info) { $filters[] = sprintf( - "{title: '%s', extensions: '%s'}", + "{title: '%s', extensions: '%s', max_file_size: %s}", addslashes(ucfirst(strtolower($group))), - addslashes(implode(',', $extensions)) + addslashes(implode(',', $group_info['extensions'])), + $group_info['max_file_size'] ); } @@ -276,22 +274,37 @@ class plupload } /** - * Checks various php.ini values and the maximum file size to determine - * the maximum size chunks a file can be split up into for upload - * - * @return int - */ + * Checks various php.ini values to determine the maximum chunk + * size a file should be split into for upload. + * + * The intention is to calculate a value which reflects whatever + * the most restrictive limit is set to. And to then set the chunk + * size to half that value, to ensure any required transfer overhead + * and POST data remains well within the limit. Or, if all of the + * limits are set to unlimited, the chunk size will also be unlimited. + * + * @return int + * + * @access public + */ public function get_chunk_size() { - $max = min( + $max = 0; + + $limits = [ + $this->php_ini->getBytes('memory_limit'), $this->php_ini->getBytes('upload_max_filesize'), $this->php_ini->getBytes('post_max_size'), - max(1, $this->php_ini->getBytes('memory_limit')), - $this->config['max_filesize'] - ); + ]; + + foreach ($limits as $limit_type) + { + if ($limit_type > 0) + { + $max = ($max !== 0) ? min($limit_type, $max) : $limit_type; + } + } - // Use half of the maximum possible to leave plenty of room for other - // POST data. return floor($max / 2); } |
