Profile picture for user admin_romcom

При работе с файлами в form api , есть несколько не очевидных тонкостей, которые превращаются в грабли.
 Во-первых, необходимо знать, что у файлов есть статус, $file->status, 0 - временный, 1 - коренной. То есть если вы загрузили через форму ваш файл, и не задали ему нужный статус, при первом запуске крона, он весело помашет вам ручкой, и удалиться в тар-тарары
 Во-вторых, у файла есть счетчик использования, назовем его так. Он нужен, чтобы не удалить файл используемые той или иной сущностью. И если вы к вашему загруженному файлу не прибавите единичку, при сохранение после редактирования, на русском языке, вылезет следующая ошибка, препятствующая спокойной жизни : Используемый в поле Attach Image файл не может быть использован.
 Далее, представим код, правильного обращения с файлами:

 


..._submit($form, &$form_state) {
$values = $form_state['values'];
//Допустим наш файл храниться в поле image
if(!empty($values['image')) {
$fid = $values['image'];
//Загружаем файл (его объект)
$img = file_load($fid);
//Задаем статус
$img->status = 1;
//Сохраняем изменения
file_save($img);
//Прибавляем единичку использования
/**
* $img - Объект файла
* второй аргумент - название модуля
* третий - тип сущности, node и т.д.
* четвертый - идентификатор
*/
file_usage_add($img, 'x_calendar_gallery', 'x_calendar_gallery', $id);
}
}

Источник: http://www.tsjee.ru/blog/68

Добавить комментарий

The content of this field is kept private and will not be shown publicly.
  • No HTML tags allowed.
 o--o  o--o   o--o    o-o  o--o  
| | | | / | |
O-o O--o O-o O O--o
| | | | \ | |
o--o o--o o--o o-o o--o

Enter the code depicted in ASCII art style.