Merge branch 'wip-MDL-52100-master' of git://github.com/abgreeve/moodle
authorDavid Monllao <davidm@moodle.com>
Mon, 18 Dec 2017 09:07:46 +0000 (10:07 +0100)
committerDavid Monllao <davidm@moodle.com>
Mon, 18 Dec 2017 09:07:46 +0000 (10:07 +0100)
lib/filelib.php
lib/tests/filelib_test.php

index 6b4f1dc..4eeab3d 100644 (file)
@@ -904,6 +904,7 @@ function file_save_draft_area_files($draftitemid, $contextid, $component, $filea
 
         $newhashes = array();
         $filecount = 0;
+        $context = context::instance_by_id($contextid, MUST_EXIST);
         foreach ($draftfiles as $file) {
             if (!$options['subdirs'] && $file->get_filepath() !== '/') {
                 continue;
@@ -912,8 +913,11 @@ function file_save_draft_area_files($draftitemid, $contextid, $component, $filea
                 continue;
             }
             if (!$file->is_directory()) {
-                if ($options['maxbytes'] and $options['maxbytes'] < $file->get_filesize()) {
-                    // oversized file - should not get here at all
+                // Check to see if this file was uploaded by someone who can ignore the file size limits.
+                $fileusermaxbytes = get_user_max_upload_file_size($context, $options['maxbytes'], 0, 0, $file->get_userid());
+                if ($fileusermaxbytes != USER_CAN_IGNORE_FILE_SIZE_LIMITS
+                        && ($options['maxbytes'] and $options['maxbytes'] < $file->get_filesize())) {
+                    // Oversized file.
                     continue;
                 }
                 if ($options['maxfiles'] != -1 and $options['maxfiles'] <= $filecount) {
index b6109d9..b6a1b7e 100644 (file)
@@ -1046,7 +1046,6 @@ EOF;
     public static function create_draft_file($filedata = array()) {
         global $USER;
 
-        self::setAdminUser();
         $fs = get_file_storage();
 
         $filerecord = array(
@@ -1208,7 +1207,9 @@ EOF;
         global $USER;
 
         $this->resetAfterTest(true);
-        $this->setAdminUser();
+        // The admin has no restriction for max file uploads, so use a normal user.
+        $user = $this->getDataGenerator()->create_user();
+        $this->setUser($user);
         $fs = get_file_storage();
 
         $file = self::create_draft_file();