Выборочный менеджер загрузок в Moodle - PullRequest
0 голосов
/ 12 апреля 2010

В Moodle 1.9.7 , можно ли как-то указать белый список разрешенных расширений для загружаемых пользователем файлов?

1 Ответ

0 голосов
/ 15 июля 2010

Глядя на источник, нет встроенного способа ограничения типов файлов, когда модули используют upload_manager для обработки загруженных файлов. Там также нет никакой пользы от обнаружения mimetype на основе содержимого файлов. Библиотеки filelib в moodle основывают свой mimetype на расширении файла.

Удобный способ сделать это для модуля, использующего объект менеджера загрузки moodle, - написать новый класс, который расширяет существующий класс upload_manager, и добавить некоторую проверку на основе содержимого файла.

Что-то вроде следующего - вам нужно немного привести в порядок это и дополнить его собственным кодом проверки.

class upload_manager_strict extends upload_manager {
  var $allowed_types
  function upload_manager_strict($inputname='', $deleteothers=false, $handlecollisions=false, $course=null, $recoverifmultiple=false, $modbytes=0, $silent=false, $allownull=false, $allownullmultiple=true, $allowed_types=null) {
    $this->allowed_types = $allowed_types;
    parent::upload_manager_strict($inputname, $deleteothers, $handlecollisions, $course, $recoverifmultiple, $modbytes, $silent, $allownull, $allownullmultiple)
  }

  function validate_file(&$file) {
     $status = parent::validate_file(&$file);
     if ($status) {
         // do some mimetype checking and validation on the file $file['tmp_name'] 
         // could use $this->allowedtypes 
     }
     return $status;
  }
}
...