Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
06/10/2010 08:36:08 PM (15 years ago)
Author:
johnjamesjacoby
Message:

Better avatar file handling. Should improve performance slightly and handle situations where avatars with deprecated file names still exist on the server and cannot be overwritten.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.2/bp-core/bp-core-avatars.php

    r3026 r3034  
    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 (skip directories)
     133                if ( 2 < strlen( $avatar_file ) )
     134                    $avatar_files[] = $avatar_file;
     135            }
     136
     137            // Check for array
     138            if ( 0 < count( $avatar_files ) ) {
     139
     140                // Check for current 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                }
    128161            }
    129162        }
    130         closedir($av_dir);
    131 
     163
     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 );
     170
    134171    }
    135172
Note: See TracChangeset for help on using the changeset viewer.