Вот моё решение для модуля Веб-форм битрикса:
Этот код в init.php сделает так, что все файлы, которые выбрал пользователь попадут в атач письма (а не только как ссылка на скачивание).
Работает именно с вебформами.
Код |
---|
Bitrix\Main\EventManager::getInstance()->addEventHandler( "main", "OnBeforeEventAdd", ["MailEventHandler", "onBeforeEventAddHandler"] ); class MailEventHandler { static function onBeforeEventAddHandler(&$event, &$lid, &$arFields, &$message_id, &$files) { if (strpos($event, 'FORM_FILLING_') !== false) { if (!is_array($files)) $files = []; foreach ($arFields as $key => $field) { if ($link = self::getLinkFromField($field)) { if ($arFile = self::getFileFromLink($link)) { $files[] = $arFile['FILE_ID']; } } } } } static function getLinkFromField($field) { preg_match("/href=[\"'](.*form_show_file.*)[\"']/", $field, $out); return ($out[1] ?: false); } static function getFileFromLink($link) { $uri = new \Bitrix\Main\Web\Uri($link); parse_str($uri->getQuery(), $query); return CFormResult::GetFileByHash($query["rid"], $query["hash"]); } } |
Работает именно с вебформами.