Drupal 7 guarda la imagen del usuario programáticamente

He encontrado este guionhttp://d.danylevskyi.com/node/7 que he utilizado como motor de arranque para el siguiente código.

El objetivo es poder guardar una foto de usuario:

<?php
define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$uid = 99;
$account = user_load($uid);

// get image information
$image_path = 'public://avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gif';
$image_info = image_get_info($image_path);

// create file object
$file = new StdClass();
$file->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);
}
?>

Se crea una imagen en sites / default / files / pictures / con el nombre picture-99-1362753611.gif

Todo parece correcto en la tabla file_managed excepto que:

el campo de nombre de archivo está vacíoel campo uri muestra public: //avatars/upload/b8f1e69e83aa12cdd3d2babfbcd1fe27_4.gifel campo de estado se establece en 0 (temporal)

El campo de imagen en la tabla de usuarios se actualiza con el fid de la entrada mencionada anteriormente.

Supongo que la tabla file_managed debería almacenar el archivo final (en sitios / predeterminado / imágenes) en lugar de la información del archivo original y que la tabla de usuarios también debería vincularse con la una.

¿Alguna idea de cómo puedo lograr eso? Soy bastante nuevo en la API de Drupal. Gracias.

Editar:

Entiendo que estoy entregando el archivo original a las funciones file_save y user_save. ¿Pero cuál crea el archivo en sites / default / pictures /?

Respuestas a la pregunta(1)

Su respuesta a la pregunta