Por alguna extraña razón, los campos de perfil en Drupal 7 ya no son lo que solían ser. Sin embargo, el objeto de perfil de usuario hace que los campos de perfil adicionales sean accesibles como elementos de matriz. Por ejemplo:
$profile->field_fieldname['und'][0]['value']
no está disponible, pero funcionará cuando se reescriba así:
$user_profile['field_fieldname']['#object']->field_fieldname['und'][0]['value'];
Así que simplemente hice lo siguiente en mi código:
/*
* Create simplified variables as shortcuts for all fields.
* Use these variables for read access lateron.
*/
$firstname = $user_profile['field_first_name']['#object']
->field_first_name['und'][0]['value'];
$middlename = $user_profile['field_middle_name']['#object']
->field_middle_name['und'][0]['value'];
$surname = $user_profile['field_surname']['#object']
->field_surname['und'][0]['value'];
$image = $user_profile['field_user_picture']['#object']
->field_user_picture['und'][0]['uri'];
Solo otra forma de hacer que las cosas funcionen, en lugar de llamar al $user
objeto una vez más.