MDL-29835: filemanager - zero means zero, not unlimited

The form_filemanager constructor was using empty() rather than !isset(),
so overwrote maxfiles=0 with the default (-1).  In addition, the JS UI
treated 0 as unlimited - but the non-JS fallback UI treated it as zero.
This would result in a file manager which allowed files to be
chosen/uploaded, which would then vanish into the void when the backend
saw that the maximum number of files was 0.
This commit is contained in:
Paul Nicholls 2012-11-28 15:50:42 +13:00
parent 9da506c2a3
commit a0dc7da9b4
2 changed files with 4 additions and 2 deletions

View File

@ -537,7 +537,8 @@ M.form_dndupload.init = function(Y, options) {
if (!overwrite) {
this.currentfilecount++;
}
if (this.options.maxfiles > 0 && this.currentfilecount > this.options.maxfiles) {
// The value for "unlimited files" is -1, so 0 should mean 0.
if (this.options.maxfiles >= 0 && this.currentfilecount > this.options.maxfiles) {
// Too many files - abort entire upload.
this.uploadqueue = [];
this.renamequeue = [];

View File

@ -332,7 +332,8 @@ class form_filemanager implements renderable {
$defaults['defaultlicense'] = $CFG->sitedefaultlicense;
}
foreach ($defaults as $key=>$value) {
if (empty($options->$key)) {
// Using !isset() prevents us from overwriting falsey values with defaults (as empty() did).
if (!isset($options->$key)) {
$options->$key = $value;
}
}