Не всегда удаляются файлы аватаров

Писал функцию работы с аватарами для своего модуля. В качестве основы использовал работу с аватарами из класса 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

Наличие бага не проверял, но по логике должен быть результат аналогичный блогам.

1 комментарий

avatar
я эту ошибку уже исправил в девелоперской версии движка.
сейчас посмотрю в модуль юзера.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.