feat(user): add local avatar management flow

This commit is contained in:
kate522 committed 2026-07-29 13:35:17 +08:00
1 parent 1b4ba8938a
commit e94437ef60
20 files changed
+289 -186

No files matched your search

-50
View File
@@ -20,56 +20,6 @@ add_filter('show_admin_bar', '__return_false');
add_filter('pre_option_link_manager_enabled', '__return_true');
// ============================================================
// Gravatar 头像源替换(4层拦截:get_avatar_url / pre_get_avatar_data / avatar_defaults / ob_start 兜底)
// ============================================================
function aksrt_get_gravatar_source() {
if (class_exists('\AKSRT\Settings\Settings')) {
return \AKSRT\Settings\Settings::avatar_source();
}
$source = aksrt_get_setting('avatar_source', 'cn.cravatar.com');
$allowed = array('cn.cravatar.com', 'cn.gravatar.com', 'gravatar.com');
return in_array($source, $allowed, true) ? $source : 'cn.cravatar.com';
}
function aksrt_replace_gravatar_domain($url) {
$source = aksrt_get_gravatar_source();
if ($source === 'gravatar.com') return $url;
return preg_replace('#^https?://([0-9]+\.)?(secure\.)?gravatar\.com#i', 'https://' . $source, $url);
}
add_filter('get_avatar_url', function ($url) {
return aksrt_replace_gravatar_domain($url);
});
add_filter('pre_get_avatar_data', function ($args) {
if (!empty($args['url'])) {
$args['url'] = aksrt_replace_gravatar_domain($args['url']);
}
return $args;
}, 10, 1);
add_filter('avatar_defaults', function ($defaults) {
foreach ($defaults as &$url) {
$url = aksrt_replace_gravatar_domain($url);
}
unset($url);
return $defaults;
});
// 全局输出缓冲兜底(覆盖 JS/API 直接请求的 URL)
add_action('init', function () {
if (is_admin()) ob_start(function ($html) {
return preg_replace_callback(
'#https?://([0-9]+\.)?(secure\.)?gravatar\.com#i',
function () { return 'https://' . aksrt_get_gravatar_source(); },
$html
);
});
});
// ============================================================
// SMTP 邮件配置注入
// ============================================================