/** * 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); }
/** * 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'; }