mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-05 00:13:29 +02:00
Merge branch '3.3.x'
This commit is contained in:
commit
8f6c2507a8
@ -463,6 +463,44 @@ phpbb.plupload.fileError = function(file, error) {
|
||||
phpbb.plupload.uploader = new plupload.Uploader(phpbb.plupload.config);
|
||||
phpbb.plupload.initialize();
|
||||
|
||||
/**
|
||||
* Add a file filter to check for max file sizes per mime type.
|
||||
*/
|
||||
plupload.addFileFilter('mime_types_max_file_size', function(types, file, callback) {
|
||||
if (file.size !== 'undefined') {
|
||||
$(types).each(function(i, type) {
|
||||
let extensions = [],
|
||||
extsArray = type.extensions.split(',');
|
||||
|
||||
$(extsArray).each(function(i, extension) {
|
||||
/^\s*\*\s*$/.test(extension) ? extensions.push("\\.*") : extensions.push("\\." + extension.replace(new RegExp("[" + "/^$.*+?|()[]{}\\".replace(/./g, "\\$&") + "]", "g"), "\\$&"));
|
||||
});
|
||||
|
||||
let regex = new RegExp("(" + extensions.join("|") + ")$", "i");
|
||||
|
||||
if (regex.test(file.name)) {
|
||||
if (type.max_file_size !== 'undefined' && type.max_file_size) {
|
||||
if (file.size > type.max_file_size) {
|
||||
phpbb.plupload.uploader.trigger('Error', {
|
||||
code: plupload.FILE_SIZE_ERROR,
|
||||
message: plupload.translate('File size error.'),
|
||||
file: file
|
||||
});
|
||||
|
||||
callback(false);
|
||||
} else {
|
||||
callback(true);
|
||||
}
|
||||
} else {
|
||||
callback(true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
var $fileList = $('#file-list');
|
||||
|
||||
/**
|
||||
|
@ -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']
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,14 @@ phpbb.plupload = {
|
||||
max_file_size: '{FILESIZE}b',
|
||||
chunk_size: '{CHUNK_SIZE}b',
|
||||
unique_names: true,
|
||||
filters: [{FILTERS}],
|
||||
filters: {
|
||||
mime_types: [
|
||||
{FILTERS}
|
||||
],
|
||||
mime_types_max_file_size: [
|
||||
{FILTERS}
|
||||
],
|
||||
},
|
||||
{S_RESIZE}
|
||||
headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'},
|
||||
file_data_name: 'fileupload',
|
||||
|
Loading…
x
Reference in New Issue
Block a user