You are here

function commons_add_user_avatar in Drupal Commons 7.3

1 call to commons_add_user_avatar()
_commons_create_demo_users in ./commons.install_callbacks.inc
BatchAPI callback.

File

./commons.install, line 423
Install, update and uninstall functions for the Commons install profile.

Code

function commons_add_user_avatar($account) {
  global $base_url;
  if ($account->uid) {
    $picture_directory = file_default_scheme() . '://' . variable_get('user_picture_path', 'pictures');
    if (file_prepare_directory($picture_directory, FILE_CREATE_DIRECTORY)) {
      $picture_result = drupal_http_request($base_url . '/profiles/commons/images/avatars/avatar-' . commons_normalize_name($account->name) . '.png');
      $picture_path = file_stream_wrapper_uri_normalize($picture_directory . '/picture-' . $account->uid . '-' . REQUEST_TIME . '.jpg');
      $picture_file = file_save_data($picture_result->data, $picture_path, FILE_EXISTS_REPLACE);

      // Check to make sure the picture isn't too large for the site settings.
      $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,
        ),
      );

      // attach photo to user's account.
      $errors = file_validate($picture_file, $validators);
      if (empty($errors)) {

        // Update the user record.
        $picture_file->uid = $account->uid;
        $picture_file = file_save($picture_file);
        file_usage_add($picture_file, 'user', 'user', $account->uid);
        db_update('users')
          ->fields(array(
          'picture' => $picture_file->fid,
        ))
          ->condition('uid', $account->uid)
          ->execute();
        $account->picture = $picture_file->fid;
      }
    }
  }
}