Глядя на источник, нет встроенного способа ограничения типов файлов, когда модули используют 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;
}
}