Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for 'bp_core_fetch_avatar'

Viewing 8 results - 251 through 258 (of 258 total)
  • Author
    Search Results
  • #58159

    You shouldn’t have to edit the core files at all. I had to whip up something similar today for a client which you may find helpful.

    What it does is replace the email that is used to access the gravatar with a different one. I recommend you replace the default email template with your domain, so, the gravatar will remain persistant if it’s an identicon or wavatar:

    class DisableUserGravatar {

    var $email_template = "member.%USER%@yourwebsite.com";

    function DisableUserGravatar(){
    add_filter('get_avatar', array(&$this, 'wp_avatar'), 1, 5);
    add_filter( 'bp_core_fetch_avatar', array(&$this, 'bp_avatar'), 1, 3);
    }

    function wp_avatar( $content, $id_or_email){
    if( preg_match( "/gravatar.com/", $content ) ){
    if ( is_numeric($id_or_email) ) {
    $id = (int) $id_or_email;
    $user = get_userdata($id);
    } elseif ( is_object($id_or_email) ) {
    if ( !empty($id_or_email->user_id) ) {
    $id = (int) $id_or_email->user_id;
    $user = get_userdata($id);
    } elseif ( !empty($id_or_email->comment_author_email) ) {
    return $content; //Commenters not logged in don't need filtering
    }
    } else {
    $user = get_user_by_email($id_or_email);
    }
    if(!$user) return $content;
    $username = $user->user_login;
    $email = md5( str_replace('%USER%', $username, $this->email_template) );
    return preg_replace("/gravatar.com\/avatar\/(.+)\?/", "gravatar.com/avatar/{$email}?", $content);
    }
    return $content;
    }

    function bp_avatar( $content, $params ){
    if( is_array($params) && $params['object'] == 'user' ){
    return $this->wp_avatar($content, $params['item_id']);
    }
    return $content;
    }

    }

    global $DisableUserGravatar;
    $DisableUserGravatar = new DisableUserGravatar();

    Create a file in wp-content/mu-plugins with the content above.

    I’ll put this up on wordpress.org as a plugin.

    #58089
    buddypresser
    Participant

    Ok finally fixed it with some core code hacking :P

    Here’s my patch solution for anyone wanting to replace default avatars and disable gravatars:

    in bp-core-avatars.php, function bp_core_fetch_avatar():

    I replaced this:

    $gravatar = apply_filters( 'bp_gravatar_url', 'https://secure.gravatar.com/avatar/' ) . md5( $grav_email ) . '?d=' . $default_grav . '&s=' . $grav_size;

    with this line:

    $gravatar = get_bloginfo('template_directory') . '/images/new-default.jpg';

    then in bp-core-templatetags.php, function bp_get_signup_avatar():

    replaced this line:

    return apply_filters( 'bp_get_signup_avatar', '<img src="' . $gravatar_url . md5( $_POST['signup_email'] ) . '?d=' . $default_grav . '&s=' . $size ) . '" width="' . $size . '" height="' . $size . '" alt="' . $alt . '" class="' . $class . '" />';

    with these:

    $default_grav = get_bloginfo('template_directory') . '/images/new-default.jpg';
    return apply_filters( 'bp_get_signup_avatar', '<img src="' . $default_grav . '"' ) . '" width="' . $size . '" height="' . $size . '" alt="' . $alt . '" class="' . $class . '" />';

    Also added a filter to functions.php as it was sometimes returning an image tag with an empty src (broken avatars) – it checks for the empty tag and replaces it with the default:

    Note: BP_AVATAR_DEFAULT was defined in my bp-custom.php file.

    function no_empty_avatar($avatar_link) {
    if ( strpos( $avatar_link, "src=''" ) ) {
    $avatar_link = str_replace("src=''", "src='" . BP_AVATAR_DEFAULT . "'", $avatar_link );
    }
    return $avatar_link;
    }
    add_filter( 'bp_core_fetch_avatar', 'no_empty_avatar' );

    Hope this helps someone in future..

    If anyone has a better solution without hacking the core files, please let me know!

    #57009
    Brajesh Singh
    Participant

    For avatar, you can specify custom avatar size using bp_core_fetch_avatar() function,but in that case either you will have to edit the sitewide activity widget(Not a good idea) or use custom loops.

    for images inside activity content,I will suggest,use css for that.You can target images inside activity using css and set a height/width.

    It is just an easy workaround,I can recall for now.There may be other approaches using php.

    #56389
    Sven Lehnert
    Participant

    @ John James Jacoby,

    I had a look in the bp-events-avatar.php to understand more what’s going on there.

    I’m thinking the avatar part could be like it is now.

    It would be enough, if the original resized image would be available.

    I did some changes to the bp-events-avatar.php and make a plugin from it.

    For the moment, I will use the modified functions in custom components until you offer a better way to do it. I think it would be really great if the original resized image would be saved by the core.

    Be careful!

    This Plugin is just a play around on a fun buddypress installation.

    <?php
    /*
    Plugin Name:bp-events-avatar
    Description: This plugin add a template tag bp_event_flyer() to display the event flyer
    Version: 0.0.1
    License: GPL
    */

    function bp_event_flyer( $args = '' ) {
    echo bp_get_event_flyer( $args );
    }
    function bp_get_event_flyer( $args = '' ) {
    global $bp, $events_template;

    $defaults = array(
    'type' => 'org',
    'width' => 'auto',
    'height' => 'auto',
    'class' => 'avatar',
    'id' => false,
    'alt' => __( 'Event avatar', 'bp-events' )
    );

    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );

    /* Fetch the avatar from the folder, if not provide backwards compat. */
    if ( !$avatar = bp_event_fetch_avatar( array( 'item_id' => $events_template->event->id, 'object' => 'event', 'type' => $type, 'avatar_dir' => 'event-avatars', 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height ) ) )
    $avatar = '<img src="' . attribute_escape( $events_template->event->avatar_thumb ) . '" class="avatar" alt="' . attribute_escape( $events_template->event->name ) . '" />';

    return apply_filters( 'bp_get_event_flyer', $avatar );
    }

    /*
    Based on contributions from: Beau Lebens - http://www.dentedreality.com.au/
    Modified for BuddyPress by: Andy Peatling - http://apeatling.wordpress.com/
    */

    /***
    * Set up the constants we need for avatar support
    */

    if ( !defined( 'BP_AVATAR_THUMB_WIDTH' ) )
    define( 'BP_AVATAR_THUMB_WIDTH', 50 );

    if ( !defined( 'BP_AVATAR_THUMB_HEIGHT' ) )
    define( 'BP_AVATAR_THUMB_HEIGHT', 50 );

    if ( !defined( 'BP_AVATAR_FULL_WIDTH' ) )
    define( 'BP_AVATAR_FULL_WIDTH', 150 );

    if ( !defined( 'BP_AVATAR_FULL_HEIGHT' ) )
    define( 'BP_AVATAR_FULL_HEIGHT', 150 );

    if ( !defined( 'BP_AVATAR_ORIGINAL_MAX_WIDTH' ) )
    define( 'BP_AVATAR_ORIGINAL_MAX_WIDTH', 450 );

    if ( !defined( 'BP_AVATAR_ORIGINAL_MAX_FILESIZE' ) )
    define( 'BP_AVATAR_ORIGINAL_MAX_FILESIZE', get_site_option( 'fileupload_maxk' ) * 1024 );

    if ( !defined( 'BP_AVATAR_DEFAULT' ) )
    define( 'BP_AVATAR_DEFAULT', BP_PLUGIN_URL . '/bp-xprofile/images/none.gif' );

    if ( !defined( 'BP_AVATAR_DEFAULT_THUMB' ) )
    define( 'BP_AVATAR_DEFAULT_THUMB', BP_PLUGIN_URL . '/bp-xprofile/images/none-thumbnail.gif' );

    function bp_event_fetch_avatar( $args = '' ) {
    global $bp, $current_blog;

    $defaults = array(
    'item_id' => false,
    'object' => 'user', // user OR group OR blog OR custom type (if you use filters)
    'type' => 'thumb',
    'avatar_dir' => false,
    'width' => false,
    'height' => false,
    'class' => 'avatar',
    'css_id' => false,
    'alt' => __( 'Avatar Image', 'buddypress' ),
    'no_grav' => false // If there is no avatar found, return false instead of a grav?
    );

    $params = wp_parse_args( $args, $defaults );
    extract( $params, EXTR_SKIP );

    if ( !$item_id ) {
    if ( 'user' == $object )
    $item_id = $bp->displayed_user->id;
    else if ( 'group' == $object )
    $item_id = $bp->groups->current_group->id;
    else if ( 'blog' == $object )
    $item_id = $current_blog->id;

    $item_id = apply_filters( 'bp_core_avatar_item_id', $item_id, $object );

    if ( !$item_id ) return false;
    }

    if ( !$avatar_dir ) {
    if ( 'user' == $object )
    $avatar_dir = 'avatars';
    else if ( 'group' == $object )
    $avatar_dir = 'group-avatars';
    else if ( 'blog' == $object )
    $avatar_dir = 'blog-avatars';

    $avatar_dir = apply_filters( 'bp_core_avatar_dir', $avatar_dir, $object );

    if ( !$avatar_dir ) return false;
    }

    if ( !$css_id )
    $css_id = $object . '-' . $item_id . '-avatar';

    if ( $width )
    $html_width = " width='{$width}'";
    else
    $html_width = ( 'thumb' == $type ) ? ' width="' . BP_AVATAR_THUMB_WIDTH . '"' : ' width="' . BP_AVATAR_FULL_WIDTH . '"';

    if ( $height )
    $html_height = " height='{$height}'";
    else
    $html_height = ( 'thumb' == $type ) ? ' height="' . BP_AVATAR_THUMB_HEIGHT . '"' : ' height="' . BP_AVATAR_FULL_HEIGHT . '"';

    $avatar_folder_url = apply_filters( 'bp_core_avatar_folder_url', get_blog_option( BP_ROOT_BLOG, 'siteurl' ) . '/' . basename( WP_CONTENT_DIR ) . '/blogs.dir/' . BP_ROOT_BLOG . '/files/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir );
    $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', WP_CONTENT_DIR . '/blogs.dir/' . BP_ROOT_BLOG . '/files/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir );

    /* If no avatars have been uploaded for this item, display a gravatar */
    if ( !file_exists( $avatar_folder_dir ) && !$no_grav ) {

    if ( empty( $bp->grav_default->{$object} ) )
    $default_grav = 'wavatar';
    else if ( 'mystery' == $bp->grav_default->{$object} )
    $default_grav = BP_PLUGIN_URL . '/bp-core/images/mystery-man.jpg';
    else
    $default_grav = $bp->grav_default->{$object};

    if ( $width ) $grav_size = $width;
    else if ( 'full' == $type ) $grav_size = BP_AVATAR_FULL_WIDTH;
    else if ( 'thumb' == $type ) $grav_size = BP_AVATAR_THUMB_WIDTH;

    if ( 'user' == $object ) {
    $ud = get_userdata( $item_id );
    $grav_email = $ud->user_email;
    } else if ( 'group' == $object || 'blog' == $object ) {
    $grav_email = "{$item_id}-{$object}@{$bp->root_domain}";
    }

    $grav_email = apply_filters( 'bp_core_gravatar_email', $grav_email, $item_id, $object );
    $gravatar = apply_filters( 'bp_gravatar_url', 'https://secure.gravatar.com/avatar/' ) . md5( $grav_email ) . '?d=' . $default_grav . '&s=' . $grav_size;

    return apply_filters( 'bp_core_fetch_avatar', "<img src='{$gravatar}' alt='{$alt}' id='{$css_id}' class='{$class}'{$html_width}{$html_height} />", $params );

    } else if ( !file_exists( $avatar_folder_dir ) && $no_grav )
    return false;

    /* Set the file names to search for to select the full size or thumbnail image. */
    $avatar_name = ( 'org' == $type ) ? '-bporg' : '-bpthumb';
    $avatar_name = ( 'full' == $type ) ? '-bpfull' : $avatar_name;
    $legacy_user_avatar_name = ( 'full' == $type ) ? '-avatar2' : '-avatar1';
    $legacy_group_avatar_name = ( 'full' == $type ) ? '-groupavatar-full' : '-groupavatar-thumb';

    if ( $av_dir = opendir( $avatar_folder_dir ) ) {
    while ( false !== ( $avatar_file = readdir($av_dir) ) ) {
    if ( preg_match( "/{$avatar_name}/", $avatar_file ) || preg_match( "/{$legacy_user_avatar_name}/", $avatar_file ) || preg_match( "/{$legacy_group_avatar_name}/", $avatar_file ) )
    $avatar_url = $avatar_folder_url . '/' . $avatar_file;
    }
    }
    closedir($av_dir);

    return apply_filters( 'bp_core_fetch_avatar', "<img src='{$avatar_url}' alt='{$alt}' id='{$css_id}' class='{$class}'{$html_width}{$html_height} />", $params );
    }

    function bp_events_delete_existing_avatar( $args = '' ) {
    global $bp;

    $defaults = array(
    'item_id' => false,
    'object' => 'user', // user OR group OR blog OR custom type (if you use filters)
    'avatar_dir' => false
    );

    $args = wp_parse_args( $args, $defaults );
    extract( $args, EXTR_SKIP );

    if ( !$item_id ) {
    if ( 'user' == $object )
    $item_id = $bp->displayed_user->id;
    else if ( 'group' == $object )
    $item_id = $bp->groups->current_group->id;
    else if ( 'blog' == $object )
    $item_id = $current_blog->id;

    $item_id = apply_filters( 'bp_core_avatar_item_id', $item_id, $object );

    if ( !$item_id ) return false;
    }

    if ( !$avatar_dir ) {
    if ( 'user' == $object )
    $avatar_dir = 'avatars';
    else if ( 'group' == $object )
    $avatar_dir = 'group-avatars';
    else if ( 'blog' == $object )
    $avatar_dir = 'blog-avatars';

    $avatar_dir = apply_filters( 'bp_core_avatar_dir', $avatar_dir, $object );

    if ( !$avatar_dir ) return false;
    }

    if ( 'user' == $object ) {
    /* Delete any legacy meta entries if this is a user avatar */
    delete_usermeta( $item_id, 'bp_core_avatar_v1_path' );
    delete_usermeta( $item_id, 'bp_core_avatar_v1' );
    delete_usermeta( $item_id, 'bp_core_avatar_v2_path' );
    delete_usermeta( $item_id, 'bp_core_avatar_v2' );
    }

    $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', WP_CONTENT_DIR . '/blogs.dir/' . BP_ROOT_BLOG . '/files/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir );

    if ( !file_exists( $avatar_folder_dir ) )
    return false;

    if ( $av_dir = opendir( $avatar_folder_dir ) ) {
    while ( false !== ( $avatar_file = readdir($av_dir) ) ) {
    if ( ( preg_match( "/-bpfull/", $avatar_file ) || preg_match( "/-bpthumb/", $avatar_file ) || preg_match( "/-bporg/", $avatar_file ) ) && '.' != $avatar_file && '..' != $avatar_file )
    @unlink( $avatar_folder_dir . '/' . $avatar_file );
    }
    }
    closedir($av_dir);

    @rmdir( $avatar_folder_dir );

    do_action( 'bp_core_delete_existing_avatar', $args );

    return true;
    }

    function bp_events_avatar_handle_crop( $args = '' ) {
    global $bp;
    $defaults = array(
    'object' => 'user',
    'avatar_dir' => 'avatars',
    'item_id' => false,
    'original_file' => false,
    'crop_w' => BP_AVATAR_FULL_WIDTH,
    'crop_h' => BP_AVATAR_FULL_HEIGHT,
    'crop_x' => 0,
    'crop_y' => 0
    );

    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );

    if ( !$original_file )
    return false;

    if ( !file_exists( WP_CONTENT_DIR . '/' . $original_file ) )
    return false;

    if ( !$item_id )
    $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', WP_CONTENT_DIR . dirname( $original_file ), $item_id, $object, $avatar_dir );
    else
    $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', WP_CONTENT_DIR . '/blogs.dir/' . BP_ROOT_BLOG . '/files/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir );

    if ( !file_exists( $avatar_folder_dir ) )
    return false;

    require_once( ABSPATH . '/wp-admin/includes/image.php' );
    require_once( ABSPATH . '/wp-admin/includes/file.php' );

    /* Delete the existing avatar files for the object */
    bp_core_delete_existing_avatar( array( 'object' => $object, 'avatar_path' => $avatar_folder_dir ) );

    /* Make sure we at least have a width and height for cropping */
    if ( !(int)$crop_w )
    $crop_w = BP_AVATAR_FULL_WIDTH;

    if ( !(int)$crop_h )
    $crop_h = BP_AVATAR_FULL_HEIGHT;

    /* Set the full and thumb filenames */
    $full_filename = wp_hash( $original_file . time() ) . '-bpfull.jpg';
    $thumb_filename = wp_hash( $original_file . time() ) . '-bpthumb.jpg';
    $org_filename = wp_hash( $original_file . time() ) . '-bporg.jpg';

    /* Crop the image */
    $full_cropped = wp_crop_image( WP_CONTENT_DIR . $original_file, (int)$crop_x, (int)$crop_y, (int)$crop_w, (int)$crop_h, BP_AVATAR_FULL_WIDTH, BP_AVATAR_FULL_HEIGHT, false, $avatar_folder_dir . '/' . $full_filename );
    $thumb_cropped = wp_crop_image( WP_CONTENT_DIR . $original_file, (int)$crop_x, (int)$crop_y, (int)$crop_w, (int)$crop_h, BP_AVATAR_THUMB_WIDTH, BP_AVATAR_THUMB_HEIGHT, false, $avatar_folder_dir . '/' . $thumb_filename );
    rename (WP_CONTENT_DIR . $original_file, $avatar_folder_dir . '/' . $org_filename );
    /* Remove the original */
    @unlink( WP_CONTENT_DIR . $original_file );

    return true;
    }
    ?>

    #56130
    Sven Lehnert
    Participant

    In the moment, I do what Andy has offered above.

    Members:

    <?php echo bp_core_fetch_avatar(
    'item_id=' . get_the_author_id() . '&type=full&width=100&height=100' ) ?>

    Groups:

    <?php echo bp_core_fetch_avatar( 'item_id=' . bp_get_the_site_group_id()
    . '&object=group&type=full&width=100&height=100' ) ?>

    Just I think this is the same as doing it in the css.

    I like to know how to change the original size at the moment when its created.

    But I don’t want to define these with custom values in wp-config.php.

    I’m looking for a solution to have control of the Avatar size in custom components.

    for example: In the bp-events Plugin, I would like to change the Avatar format to a Flyer format.

    Most of the Event Flyer, people want to upload, do not feed the Avatar size from Buddypress.

    So they just get a cuted piece of there flayer.

    I relay would like to change this.

    #56081
    Andy Peatling
    Keymaster

    <?php echo bp_core_fetch_avatar( 'item_id=' . get_the_author_id() . '&type=full&width=125&height=125' ) ?>

    BuddyPress 1.1.x only.

    #55836
    Brajesh Singh
    Participant

    hi Andy

    You were right.I just changed one line in bp_core_fetch_avatar and it worked .No more ids ,no more problem :)

    I changed

    return apply_filters( 'bp_core_fetch_avatar', "<img src='{$avatar_url}' alt='{$alt}' id='{$css_id}' class='{$class}'{$html_width}{$html_height} />", $params );

    to

    return apply_filters( 'bp_core_fetch_avatar', "<img src='{$avatar_url}' alt='{$alt}' class='{$class}'{$html_width}{$html_height} />", $params );

    Thanks

    Brajesh

    #55825
    Brajesh Singh
    Participant

    Thanks for the suggestion DJPaul

    I will take another look at the bp_core_fetch_avatar and see if I can implement the code to remove id and upload to trac if done.

    and yeh David,I agree with you,the ids should not be used for things which are supposed to exist multiple time on the page.

Viewing 8 results - 251 through 258 (of 258 total)
Skip to toolbar