Skip to:
Content

BuddyPress.org

Ticket #2400: fix-avatars.patch

File fix-avatars.patch, 2.5 KB (added by johnjamesjacoby, 16 years ago)

First pass at fixing broken avatars

  • bp-core-avatars.php

     
    116116         * Set the file names to search for, to select the full size
    117117         * or thumbnail image.
    118118         */
    119         $avatar_name = ( 'full' == $type ) ? '-bpfull' : '-bpthumb';
     119        $avatar_size = ( 'full' == $type ) ? '-bpfull' : '-bpthumb';
    120120        $legacy_user_avatar_name = ( 'full' == $type ) ? '-avatar2' : '-avatar1';
    121121        $legacy_group_avatar_name = ( 'full' == $type ) ? '-groupavatar-full' : '-groupavatar-thumb';
    122122
     123        // Check for directory
    123124        if ( file_exists( $avatar_folder_dir ) ) {
     125
     126                // Open directory
    124127                if ( $av_dir = opendir( $avatar_folder_dir ) ) {
     128
     129                        // Stash files in an array once to check for one that matches
     130                        $avatar_files = array();
    125131                        while ( false !== ( $avatar_file = readdir($av_dir) ) ) {
    126                                 if ( preg_match( "/{$avatar_name}/", $avatar_file ) || preg_match( "/{$legacy_user_avatar_name}/", $avatar_file ) || preg_match( "/{$legacy_group_avatar_name}/", $avatar_file ) )
    127                                         $avatar_url = $avatar_folder_url . '/' . $avatar_file;
     132                                // Only add files to the array
     133                                if ( 2 < strlen( $avatar_file ) )
     134                                        $avatar_files[] = $avatar_file;
    128135                        }
     136
     137                        // Check for array
     138                        if ( is_array( $avatar_files ) ) {
     139
     140                                // Check for avatar
     141                                foreach( $avatar_files as $key => $value ) {
     142                                        if ( strpos ( $value, $avatar_size )!== false )
     143                                                $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key];
     144                                }
     145
     146                                // Legacy avatar check
     147                                if ( !isset( $avatar_url ) ) {
     148                                        foreach( $avatar_files as $key => $value ) {
     149                                                if ( strpos ( $value, $legacy_user_avatar_name )!== false )
     150                                                        $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key];
     151                                        }
     152
     153                                        // Legacy group avatar check
     154                                        if ( !isset( $avatar_url ) ) {
     155                                                foreach( $avatar_files as $key => $value ) {
     156                                                        if ( strpos ( $value, $legacy_group_avatar_name )!== false )
     157                                                                $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key];
     158                                                }
     159                                        }
     160                                }
     161                        }
    129162                }
    130                 closedir($av_dir);
    131163
     164                // Close the avatar directory
     165                closedir( $av_dir );
     166
     167                // If we found an avatar, return it wrapped in an img element
    132168                if ( $avatar_url )
    133169                        return apply_filters( 'bp_core_fetch_avatar', "<img src='{$avatar_url}' alt='{$alt}' class='{$class}'{$css_id}{$html_width}{$html_height} />", $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
    134170        }