Писал функцию работы с аватарами для своего модуля. В качестве основы использовал работу с аватарами из класса Blog. Долго не мог понять почему не работает и нашел ошибку в функции.
Файл classes/modules/blog/entity/Blog.entity.class.php
public function getAvatarPath($iSize=48) {
if ($sPath=$this->getAvatar()) {
return preg_replace("#_\d{1,3}x\d{1,3}(\.\w{3,4})$#",(($iSize==0)?"":"_{$iSize}x{$iSize}\\1"),$sPath);
} else {
return Config::Get('path.static.skin').'/images/avatar_blog_'.$iSize.'x'.$iSize.'.gif';
Вместо кода (($iSize==0)?"":"_{$iSize}x{$iSize}\\1",
должно быть (($iSize==0)?"
\\1":"_{$iSize}x{$iSize}\\1"
В результате ошибки при размере аватара 0, отрезается расширение файла, и функция удаления получает неправильное имя из-за чего файл не удаляется. Потом приходится запускать всякие пылесосы и т.д.
Аналогичный код нашел в функции
getProfileAvatarPath класса
User.entity.class.php
Наличие бага не проверял, но по логике должен быть результат аналогичный блогам.