Drupal 7 сохраняет картинку пользователя программно

Я нашел этот скриптhttp://d.danylevskyi.com/node/7 который я использовал как стартер для кода ниже.

Цель состоит в том, чтобы иметь возможность сохранить изображение пользователя:

uid = $uid;
$file->uri = $image_path;
$file->filemime = $image_info['mime_type'];
$file->status = 0; // Yes! Set status to 0 in order to save temporary file.
$file->filesize = $image_info['file_size'];

// standard Drupal validators for user pictures
$validators = array(
    'file_validate_is_image' => array(),
    'file_validate_image_resolution' => array(variable_get('user_picture_dimensions', '85x85')),
    'file_validate_size' => array(variable_get('user_picture_file_size', '30') * 1024),
);

// here all the magic :) 
$errors = file_validate($file, $validators);
if (empty($errors)) {

    file_save($file);
    $edit['picture'] = $file;
    user_save($account, $edit);
}
?>

Картинка создается в сайтах / default / files / pictures / с именем picture-99-1362753611.gif

В таблице file_managed все выглядит правильно, за исключением того, что:

поле имени файла пустоеполе uri показывает public: //avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gifполе состояния установлено на 0 (временно)

Поле изображения в таблице пользователей обновляется с помощью указанной выше записи.

Я бы предположил, что таблица file_managed должна хранить окончательный файл (в sites / default / pictures) вместо информации об исходном файле, и что таблица users должна ссылаться на нее тоже.

Есть идеи, как мне этого добиться? Я довольно новичок в Drupal API. Спасибо.

Редактировать:

Я понимаю, что передаю исходный файл функциям file_save и user_save. Но какой из них на самом деле создает файл в сайтах / default / pictures /?

Ответы на вопрос(1)

Ваш ответ на вопрос