Ограничение типов отправляемых файлов средствами API
Материал из Umicms
Версия от 12:39, 31 марта 2014; Mad grant (обсуждение | вклад) (переименовал «Ограничение списка типов файлов, которые пользователи могут послать через обратную связь, с помощью API» в «[[Ограничение т�)
Актуально для версии 2.9.5
Если необходимо задать уникальный список типов файлов, которые можно отправлять через форму обратной связи пользователям, то это можно сделать несколькими путями. В данной статье мы рассмотрим реализацию данного функционала с помощью API.
%webforms checkExtension()% — проверяет расширение файла.
Для применения этого макроса скопируйте код макроса в файл /classes/modules/webforms/__custom.php.
Код макроса
public function checkExtension() {
$name = array_shift($arr = $_FILES['data']['name']['new']);
$extension = strtolower(substr($name, strrpos($name, '.') + 1));
$allowedFileTypes = array(
'txt', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pps', 'ppsx', 'odt', 'sxw', 'ods', 'odg', 'pdf', 'csv', 'html', 'js',
'tpl', 'xsl', 'xml', 'css', 'zip', 'rar', '7z', 'tar', 'gz', 'tar.gz', 'exe', 'msi', 'rtf', 'chm', 'ico', 'psd', 'flv', 'mp4',
'swf', 'mp3', 'wav', 'wma', 'ogg', 'aac', 'jpg', 'jpeg', 'gif', 'bmp', 'png'
);
if (in_array($extension, $allowedFileTypes)) {
if ($oWebformsMdl = cmsController::getInstance()->getModule("webforms")) {
$oWebformsMdl->send($_POST, $_FILES);
}
}
$this->errorNewMessage(getLabel('errors_wrong_file_extension'));
}
Теперь в файле classes/modules/i18n.php необходимо добавить строку
"errors_wrong_file_extension" => "Запрещенный тип файла"
После этого осталось только в форме обратной связи прописать
action="{$lang-prefix}/webforms/checkExtension/"
вместо
action="{$lang-prefix}/webforms/send/"