348 | | // Fetch the avatar. |
349 | | $avatar = bp_core_fetch_avatar( array( |
350 | | 'item_id' => $blogs_template->blog->admin_user_id, |
351 | | 'title' => $r['title'], |
352 | | // 'avatar_dir' => 'blog-avatars', |
353 | | // 'object' => 'blog', |
354 | | 'type' => $r['type'], |
355 | | 'alt' => $r['alt'], |
356 | | 'css_id' => $r['id'], |
357 | | 'class' => $r['class'], |
358 | | 'width' => $r['width'], |
359 | | 'height' => $r['height'] |
360 | | ) ); |
| 348 | // Use site icon if available. |
| 349 | $avatar = ''; |
| 350 | if ( bp_is_active( 'blogs', 'site-icon' ) && function_exists( 'has_site_icon' ) ) { |
| 351 | $site_icon = bp_blogs_get_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}" ); |
| 352 | |
| 353 | // Never attempted to fetch site icon before; do it now! |
| 354 | if ( '' === $site_icon ) { |
| 355 | switch_to_blog( bp_get_blog_id() ); |
| 356 | |
| 357 | // Fetch the other size first. |
| 358 | if ( 'full' === $r['type'] ) { |
| 359 | $size = bp_core_avatar_thumb_width(); |
| 360 | $save_size = 'thumb'; |
| 361 | } else { |
| 362 | $size = bp_core_avatar_full_width(); |
| 363 | $save_size = 'full'; |
| 364 | } |
| 365 | |
| 366 | $site_icon = get_site_icon_url( $size ); |
| 367 | // Empty site icons get saved as integer 0. |
| 368 | if ( empty( $site_icon ) ) { |
| 369 | $site_icon = 0; |
| 370 | } |
| 371 | |
| 372 | // Sync site icon for other size to blogmeta. |
| 373 | bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$save_size}", $site_icon ); |
| 374 | |
| 375 | // Now, fetch the size we want. |
| 376 | if ( 0 !== $site_icon ) { |
| 377 | $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width(); |
| 378 | $site_icon = get_site_icon_url( $size ); |
| 379 | } |
| 380 | |
| 381 | // Sync site icon to blogmeta. |
| 382 | bp_blogs_update_blogmeta( bp_get_blog_id(), "site_icon_url_{$r['type']}", $site_icon ); |
| 383 | |
| 384 | restore_current_blog(); |
| 385 | } |
| 386 | |
| 387 | // We have a site icon. |
| 388 | if ( ! is_numeric( $site_icon ) ) { |
| 389 | if ( empty( $r['width'] ) && ! isset( $size ) ) { |
| 390 | $size = 'full' === $r['type'] ? bp_core_avatar_full_width() : bp_core_avatar_thumb_width(); |
| 391 | } else { |
| 392 | $size = (int) $r['width']; |
| 393 | } |
| 394 | |
| 395 | $avatar = sprintf( '<img src="%1$s" class="%2$s" width="%3$s" height="%3$s" alt="%4$s" title="%4$s" />', |
| 396 | esc_url( $site_icon ), |
| 397 | esc_attr( "{$r['class']} avatar-{$size}" ), |
| 398 | esc_attr( $size ), |
| 399 | sprintf( esc_attr__( 'Site icon for %s', 'buddypress' ), bp_get_blog_name() ) |
| 400 | ); |
| 401 | } |
| 402 | } |
| 403 | |
| 404 | // Fallback to user ID avatar. |
| 405 | if ( '' === $avatar ) { |
| 406 | $avatar = bp_core_fetch_avatar( array( |
| 407 | 'item_id' => $blogs_template->blog->admin_user_id, |
| 408 | 'title' => $r['title'], |
| 409 | // 'avatar_dir' => 'blog-avatars', |
| 410 | // 'object' => 'blog', |
| 411 | 'type' => $r['type'], |
| 412 | 'alt' => $r['alt'], |
| 413 | 'css_id' => $r['id'], |
| 414 | 'class' => $r['class'], |
| 415 | 'width' => $r['width'], |
| 416 | 'height' => $r['height'] |
| 417 | ) ); |
| 418 | } |