/**
  * Find WPUA, show get_avatar if empty
  * @since 1.0
  * @param int|string $id_or_email
  * @param int|string $size
  * @param string     $align
  * @param string     $alt
  * @uses array $_wp_additional_image_sizes
  * @uses array $all_sizes
  * @uses string $avatar_default
  * @uses int $blog_id
  * @uses object $post
  * @uses object $wpdb
  * @uses int $wpua_avatar_default
  * @uses object $wpua_functions
  * @uses apply_filters()
  * @uses get_the_author_meta()
  * @uses get_blog_prefix()
  * @uses get_user_by()
  * @uses get_query_var()
  * @uses is_author()
  * @uses wpua_attachment_is_image()
  * @uses wpua_get_attachment_image_src()
  * @uses get_option()
  * @uses get_avatar()
  * @return string $avatar
  */
 public function get_wp_user_avatar($id_or_email = '', $size = '96', $align = '', $alt = '')
 {
     global $all_sizes, $avatar_default, $blog_id, $post, $wpdb, $wpua_avatar_default, $wpua_functions, $_wp_additional_image_sizes, $wpua_upload_url, $wpua_upload_dir, $wp_user_avatar_thumbnail_w, $wp_user_avatar_thumbnail_h;
     $email = '*****@*****.**';
     // Checks if comment
     if (is_object($id_or_email)) {
         // Checks if comment author is registered user by user ID
         if ($id_or_email->user_id != 0) {
             $email = $id_or_email->user_id;
             // Checks that comment author isn't anonymous
         } elseif (!empty($id_or_email->comment_author_email)) {
             // Checks if comment author is registered user by e-mail address
             $user = get_user_by('email', $id_or_email->comment_author_email);
             // Get registered user info from profile, otherwise e-mail address should be value
             $email = !empty($user) ? $user->ID : $id_or_email->comment_author_email;
         }
         $alt = $id_or_email->comment_author;
     } else {
         if (!empty($id_or_email)) {
             // Find user by ID or e-mail address
             $user = is_numeric($id_or_email) ? get_user_by('id', $id_or_email) : get_user_by('email', $id_or_email);
         } else {
             // Find author's name if id_or_email is empty
             $author_name = get_query_var('author_name');
             if (is_author()) {
                 // On author page, get user by page slug
                 $user = get_user_by('slug', $author_name);
             } else {
                 // On post, get user by author meta
                 $user_id = get_the_author_meta('ID');
                 $user = get_user_by('id', $user_id);
             }
         }
         // Set user's ID and name
         if (!empty($user)) {
             $email = $user->ID;
             $alt = $user->display_name;
         }
     }
     // Checks if user has WPUA
     $wpua_meta = get_the_author_meta($wpdb->get_blog_prefix(wpua_get_main_blog_id()) . 'user_avatar', $email);
     // Add alignment class
     $alignclass = !empty($align) && ($align == 'left' || $align == 'right' || $align == 'center') ? ' align' . $align : ' alignnone';
     // User has WPUA, check if on excluded list and bypass get_avatar
     if (!empty($wpua_meta) && $wpua_functions->wpua_attachment_is_image($wpua_meta)) {
         // Numeric size use size array
         $get_size = is_numeric($size) ? array($size, $size) : $size;
         // Get image src
         $wpua_image = $wpua_functions->wpua_get_attachment_image_src($wpua_meta, $get_size);
         // Add dimensions to img only if numeric size was specified
         $dimensions = is_numeric($size) ? ' width="' . $wpua_image[1] . '" height="' . $wpua_image[2] . '"' : '';
         // Construct the img tag
         $avatar = '<img src="' . $wpua_image[0] . '"' . $dimensions . ' alt="' . $alt . '" class="avatar avatar-' . $size . ' wp-user-avatar wp-user-avatar-' . $size . $alignclass . ' photo" />';
     } else {
         $wpua_meta = maybe_unserialize($wpua_meta);
         if (isset($wpua_meta['avatar_url']) && !empty($wpua_meta['avatar_url'])) {
             $dimensions = is_numeric($size) ? ' width="' . $size . '" height="' . $size . '"' : '';
             $avatar = '<img src="' . $wpua_meta['avatar_url'] . '"' . $dimensions . ' alt="' . $alt . '" class="avatar avatar-' . $size . ' wp-user-avatar wp-user-avatar-' . $size . $alignclass . ' photo" />';
         } else {
             // Check for custom image sizes
             if (in_array($size, $all_sizes)) {
                 if (in_array($size, array('original', 'large', 'medium', 'thumbnail'))) {
                     $get_size = $size == 'original' ? get_option('large_size_w') : get_option($size . '_size_w');
                 } else {
                     $get_size = $_wp_additional_image_sizes[$size]['width'];
                 }
             } else {
                 // Numeric sizes leave as-is
                 $get_size = $size;
             }
             // User with no WPUA uses get_avatar
             $avatar = get_avatar($email, $get_size, $default = '', $alt = '');
             if (in_array($size, array('original', 'large', 'medium', 'thumbnail'))) {
                 $avatar = preg_replace('/(width|height)=\\"\\d*\\"\\s/', '', $avatar);
                 $avatar = preg_replace("/(width|height)=\\'\\d*\\'\\s/", '', $avatar);
             }
             $replace = array('wp-user-avatar ', 'wp-user-avatar-' . $get_size . ' ', 'wp-user-avatar-' . $size . ' ', 'avatar-' . $get_size, 'photo');
             $replacements = array('', '', '', 'avatar-' . $size, 'wp-user-avatar wp-user-avatar-' . $size . $alignclass . ' photo');
             $avatar = str_replace($replace, $replacements, $avatar);
         }
         // Remove width and height for non-numeric sizes
     }
     /**
      * Filter get_wp_user_avatar
      * @since 1.9
      * @param string $avatar
      * @param int|string $id_or_email
      * @param int|string $size
      * @param string $align
      * @param string $alt
      */
     return apply_filters('get_wp_user_avatar', $avatar, $id_or_email, $size, $align, $alt);
 }
Ejemplo n.º 2
0
 /**
  * Update user meta
  * @since 1.4
  * @param int $user_id
  * @uses string $wpua_upload_dir
  * @uses int $wp_user_avatar_thumbnail_w
  * @uses int $wp_user_avatar_thumbnail_h
  * @uses object $wpua_admin
  * @uses array pathinfo()
  * @uses bool file_exists()
  * @uses bool rename()
  * @uses bool unlink()
  * @uses string serialize()
  * @uses array maybe_unserialize()
  * @uses get_option()
  * @uses add_option()
  * @uses update_option()
  * @uses wpua_has_gravatar()
  */
 public static function wpua_action_process_option_update($user_id)
 {
     global $wpua_upload_dir, $wpua_admin, $wpdb;
     if (isset($_POST['wpua_avatar']) && !empty($_POST['wpua_avatar'])) {
         if (wp_verify_nonce($_POST['wpua_avatar'], 'wpua_avatar_delete')) {
             delete_user_meta($user_id, $wpdb->get_blog_prefix(wpua_get_main_blog_id()) . 'user_avatar');
         }
     }
     if (isset($_POST['wp_user_avatar_url']) && !empty($_POST['wp_user_avatar_url'])) {
         $file_name = sanitize_file_name($_POST['wp_user_avatar_url']);
         $filepath = $wpua_upload_dir . 'cache/' . $file_name;
         wpua_avatar_upload($file_name, $filepath, $user_id);
     }
     // Check whether User as Gravatar-hosted image and update usermeta
     $wpua_admin->set_wpua_has_gravatar($user_id);
 }
 /**
  * User's meta name to save avatar name.
  * @return string Avatar meta name.
  */
 public function user_meta_name()
 {
     global $wpdb;
     return $wpdb->get_blog_prefix(wpua_get_main_blog_id()) . 'user_avatar';
 }