Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
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...
commit a0dc7da9b4e249d19acbb6399c47d56134e0b03f 1 parent 9da506c
@pauln pauln authored
Showing with 4 additions and 2 deletions.
  1. +2 −1  lib/form/dndupload.js
  2. +2 −1  lib/form/filemanager.php
View
3  lib/form/dndupload.js
@@ -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
3  lib/form/filemanager.php
@@ -332,7 +332,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;
}
}
Please sign in to comment.
Something went wrong with that request. Please try again.