Обработчик формы настроек сохраняет файл, но не ставит ему статус FILE_STATUS_PERMANENT, кроме того не удаляет файл, если он был удален в форме. Поэтому приходится самостоятельно писать соответствующий обработчик.
Пример формы настроек
function mymodule_settings_form($form, $form_state) {
$form = array();
$form['mymodule_pricelist'] = array(
'#type' => 'managed_file',
'#title' => 'Прайс-лист',
'#default_value' => variable_get('mymodule_pricelist', ''),
'#upload_location' => 'public://',
);
$form['#submit'][] = 'mymodule_settings_form_submit';
return system_settings_form($form);
}
Собственно обработка сабмита
function mymodule_settings_form_submit($form, $form_state) {
// ставлю статус FILE_STATUS_PERMANENT для файлов загруженных в форму настроек,
// а так же обрабатываю удаление этих файлов
if ($form_state['values']['mymodule_pricelist']) {
$file = file_load($form_state['values']['mymodule_pricelist']);
if ($file) {
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
file_usage_add($file, 'mymodule', 'settings', 1);
}
}
else {
$file = file_load(variable_get('mymodule_pricelist', ''));
if ($file) {
file_delete($file, TRUE);
file_usage_delete($file, 'mymodule', 'settings', 1);
}
}
}
- Log in to post comments