Permalink
Browse files

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.
  • Loading branch information...
pauln committed Nov 28, 2012
1 parent 10ad21d commit 18a5b8c72e83611a364216feb58c0b0ba33ec07f
Showing with 4 additions and 2 deletions.
  1. +2 −1 lib/form/dndupload.js
  2. +2 −1 lib/form/filemanager.php
View
@@ -521,7 +521,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
@@ -323,7 +323,8 @@ public function __construct(stdClass $options) {
$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;
}
}

0 comments on commit 18a5b8c

Please sign in to comment.