Меняю тип поля файла в вебформе с помощью hook_form_alter()
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'my_webform') {
$form['submitted']['requisites']['#type'] = 'file';
}
}
При сабмите формы, файл будет отправляться. Теперь в hook_webform_submission_presave() сохраняю этот файл
function mymodule_webform_submission_presave($node, &$submission) {
if (isset($_FILES['files']['tmp_name']['submitted']) && is_file($_FILES['files']['tmp_name']['submitted'])) {
$pathinfo = pathinfo($_FILES['files']['name']['submitted']);
$pathinfo['extension'] = strtolower($pathinfo['extension']);
$tmp_name = $_FILES['files']['tmp_name']['submitted'] . '.' . $pathinfo['extension'];
rename($_FILES['files']['tmp_name']['submitted'], $tmp_name );
$file = (object) array(
'uid' => 1,
'uri' => $tmp_name,
'filemime' => file_get_mimetype($tmp_name ),
'status' => 1,
);
$file = file_copy($file, 'public://');
$position = 4; // это ид компонента (поля) в вебформе
$submission->data[$position][0] = $file->fid;
}
}
- Log in to post comments