kollapsminoriteten/wp-content/plugins/simple-user-avatar/public/class-sua-public.php

104 lines
2.6 KiB
PHP
Raw Normal View History

2022-01-14 13:13:03 +01:00
<?php
2022-04-02 10:26:41 +02:00
if ( !class_exists('SimpleUserAvatar_Public') ) {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
/**
* PHP class SimpleUserAvatar_Public
*
* @since 2.8
*/
class SimpleUserAvatar_Public {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
public function __construct() {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Override WordPress function get_avatar();
add_filter( 'get_avatar', [ $this, 'get_avatar_filter' ], 5, 5 );
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
public static function init() {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
new self;
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
/**
* Override of the original WordPress function get_avatar();
*
* @since 1.0
* @return string
*/
public function get_avatar_filter( $avatar, $id_or_email, $size, $default, $alt ) {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Get user ID, if is numeric
if ( is_numeric($id_or_email) ) {
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
$user_id = (int)$id_or_email;
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// If is string, maybe the user email
} elseif ( is_string($id_or_email) ) {
2022-04-02 10:26:41 +02:00
2023-12-07 09:44:11 +01:00
// Find user by email
$user = get_user_by( 'email', $id_or_email );
2022-04-02 10:26:41 +02:00
2023-12-07 09:44:11 +01:00
// If user doesn't exists or this is not an ID
if ( !isset($user->ID) || !is_numeric($user->ID) ) {
return $avatar;
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
$user_id = (int)$user->ID;
2023-01-25 20:43:46 +01:00
2023-12-07 09:44:11 +01:00
// If is an object
} elseif ( is_object($id_or_email) ) {
// If is an ID
if ( isset($id_or_email->ID) && is_numeric($id_or_email->ID) ) {
$user_id = (int)$id_or_email->ID;
// If this is an Comment Object
} elseif ( isset($id_or_email->comment_author_email) ) {
$user = get_user_by( 'email', $id_or_email->comment_author_email );
2023-01-25 20:43:46 +01:00
2023-12-07 09:44:11 +01:00
// If user doesn't exists or this is not an ID
if ( !isset($user->ID) || !is_numeric($user->ID) ) {
return $avatar;
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
$user_id = (int)$user->ID;
} else {
return $avatar;
}
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Get attachment ID from user meta
$attachment_id = get_user_meta( $user_id, SUA_USER_META_KEY, true );
if ( empty($attachment_id) || !is_numeric($attachment_id) ) {
return $avatar;
}
2022-04-02 10:26:41 +02:00
2023-12-07 09:44:11 +01:00
// Get attachment image src
$attachment_src = wp_get_attachment_image_src( $attachment_id, 'medium' );
2022-04-02 10:26:41 +02:00
2023-12-07 09:44:11 +01:00
// Override WordPress src
if ( $attachment_src !== false ) {
$avatar = preg_replace( '/src=("|\').*?("|\')/', "src='{$attachment_src[0]}'", $avatar );
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Get attachment image srcset
$attachment_srcset = wp_get_attachment_image_srcset( $attachment_id );
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Override WordPress srcset
if( $attachment_srcset !== false ) {
$avatar = preg_replace( '/srcset=("|\').*?("|\')/', "srcset='{$attachment_srcset}'", $avatar );
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
return $avatar;
2022-01-14 13:13:03 +01:00
}
2023-12-07 09:44:11 +01:00
}
add_action( 'plugins_loaded', [ 'SimpleUserAvatar_Public', 'init' ] );
2022-01-14 13:13:03 +01:00
2022-04-02 10:26:41 +02:00
}