Drupal - создание записей в file_managed - PullRequest
6 голосов
/ 01 ноября 2011

У меня есть пользовательский тип контента с 2 пользовательскими полями: файл (файл) и список (статус).

Я могу установить значение статуса, выполнив:

 $node = node_load($n, $r);
 $node->field_status[$node->language][0]['value'] = 1;
 node_save($node);

Iхотите создать записи для field_file и file_managed (основная таблица) для файла, который уже находится на сервере.Я уже знаю MIME-тип, размер и путь к файлу.

Как правильно этого добиться?

1 Ответ

15 голосов
/ 01 ноября 2011

Я бы создал экземпляр объекта файла вручную и использовал бы file_save() для его фиксации (на примере файла изображения):

global $user;
$file = new stdClass;
$file->uid = $user->uid;
$file->filename = 'image.png';
$file->uri = 'public://path/to/file/image.png';
$file->status = 1;
$file->filemime = 'image/png';

file_save($file);

Затем вы должны вызвать file_usage_add(), чтобы сообщить Drupal, что ваш модуль лично заинтересован в этом файле (используя nid из вашего $node объекта):

file_usage_add($file, 'mymodule', 'node', $node->nid);

Наконец, вы можете добавить файл вузел:

$node->field_file[$node->language][] = array(
  'fid' => $file->fid
);

Надеюсь, что поможет

...