Profile picture for Admin

При работе с файлами в 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

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

Содержимое данного поля является приватным и не предназначено для показа.
 dP     dP   dP   dP   dP   88888888b  dP     dP   888888P 
88 88 88 88 88 88 88 88 88'
88aaaaa88a 88 .8P .8P a88aaaa 88aaaaa88a 88baaa.
88 88 88 d8' d8' 88 88 88 `88
88 88 88.d8P8.d8P 88 88 88 88
dP dP 8888' Y88' 88888888P dP dP d88888P

Введите код, изображенный в стиле ASCII-арт.