Ограничение типов отправляемых файлов средствами API

Материал из Umicms
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 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/"