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

114 lines
2.8 KiB
PHP
Raw Normal View History

2022-01-14 13:13:03 +01:00
<?php
2025-02-28 08:42:11 +01: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();
2025-02-28 08:42:11 +01:00
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
*/
2025-02-28 08:42:11 +01:00
public function get_avatar_filter($avatar, $id_or_email, $size, $default_value, $alt) {
// Global $pagenow
global $pagenow;
// If pagenow is "Discussion" in WP Admin return default avatar
if ($pagenow === 'options-discussion.php') {
return $avatar;
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Get user ID, if is numeric
2025-02-28 08:42:11 +01:00
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
2025-02-28 08:42:11 +01:00
} 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
2025-02-28 08:42:11 +01:00
$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
2025-02-28 08:42:11 +01:00
if (!isset($user->ID) || !is_numeric($user->ID)) {
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
$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
2025-02-28 08:42:11 +01:00
} elseif (is_object($id_or_email)) {
2023-12-07 09:44:11 +01:00
// If is an ID
2025-02-28 08:42:11 +01:00
if (isset($id_or_email->ID) && is_numeric($id_or_email->ID)) {
2023-12-07 09:44:11 +01:00
$user_id = (int)$id_or_email->ID;
2025-02-28 08:42:11 +01:00
// If this is an Comment Object
} elseif (isset($id_or_email->comment_author_email)) {
// Get user by 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
2025-02-28 08:42:11 +01:00
if (!isset($user->ID) || !is_numeric($user->ID)) {
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
$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
2025-02-28 08:42:11 +01:00
$attachment_id = get_user_meta($user_id, SUA_USER_META_KEY, true);
if (empty($attachment_id) || !is_numeric($attachment_id)) {
2023-12-07 09:44:11 +01:00
return $avatar;
}
2022-04-02 10:26:41 +02:00
2023-12-07 09:44:11 +01:00
// Get attachment image src
2025-02-28 08:42:11 +01:00
$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
2025-02-28 08:42:11 +01:00
if ($attachment_src !== false) {
$avatar = preg_replace('/src=("|\').*?("|\')/', "src='{$attachment_src[0]}'", $avatar);
2023-12-07 09:44:11 +01:00
}
2022-01-14 13:13:03 +01:00
2023-12-07 09:44:11 +01:00
// Get attachment image srcset
2025-02-28 08:42:11 +01:00
$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
2025-02-28 08:42:11 +01:00
$avatar = preg_replace('/srcset=("|\').*?("|\')/', $attachment_srcset !== false ? "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
}
2025-02-28 08:42: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
}