+20.99
333 читателя, 272 топика

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

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

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

При создании фотосета более чем из 30 фото - исчезают превьюшки во всплывающем окне

Обнаружил непонятное явление. Если создать фотосет более чем из 30 фотографий — пропадает полосочка с превьюшками, которая находится во всплывающем окне с большой фотографией. Буквально — выкладываю 31 фотографию, смотрю — полоски с превьюшками нету. Удаляю одну — появляется. При этом в конфиге максимальное количество фотографий установлено в 50:

$config['module']['topic']['photoset']['count_photos_min'] = 3; // минимальное количество фоток
$config['module']['topic']['photoset']['count_photos_max'] = 50; // максимальное количество фоток
$config['module']['topic']['photoset']['per_page'] = 50; // число фоток для одновременной загрузки


Похоже, что есть какая-то проблема с prettyPhoto: Или где-то жестко забито ограничение в 30 фотографий, или не передается параметр из конфига…

Топик исчезает из блока прямого эфира

Не самый критичный баг.
Отредактировал топик, сохранил в черновики, потом снова опубликовал. После этого комментарии к топику исчезли из блока прямого эфира.
Здесь все комментарии на своих местах и отображаются корректно.

Добавление видео из YouTube

Заметил, что при вставки в пост видео из YouTube (через кнопку «видео») иногда оно не вставляется. Вначале думал, что из-за каких-то своих последних ошибок, но потом заметил закономерность. На YouTube ссылки бывают, грубо-говоря, двух типов:
http://www.youtube.com/watch?v=kOXNOYTLYR8&feature=player_embedded
и
http://www.youtube.com/watch?feature=player_embedded&v=kOXNOYTLYR8
Первый вариант работает, второй — нет. Видео просто не вставляет. Пытался разобраться сам, но опыта не хватает.

Не отображается длинный нераздельный текст.

Например:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111122222222222222222222222222222222222222222222222222222222222222333333333333333333333333444444444444444444444444455555555555555555555556666666666666666666677777777777777777

Самым последним символом вы скорее всего увидите 0 или 1, в лучшем случае 2. На самом деле последний символ — 7, но LS не переносит символы на новую строчку, если не был использован пробел. В шаблонах где контент не резиновый и ширина под контент относительно небольшая это может стать проблемой, например, при линке длинных ссылок. Можно ли это исправить?

Пересчет счетчиков избранного

Установил проект из Гитхаба. Добавил 1 топик, добавил его в избранное и нажал в админке: «Пересчитать счетчики избранных» в ответ мне выдало:

SQL Error: Unknown column 'c.comment_count_favourite' in 'field list' at /home/p45425/www/site.ru/classes/modules/comment/mapper/Comment.mapper.class.php line 668
Array ( [code] => 1054 [message] => Unknown column 'c.comment_count_favourite' in 'field list' [query] => UPDATE ls_comment c SET c.comment_count_favourite = ( SELECT count(f.user_id) FROM ls_favourite f WHERE f.target_id = c.comment_id AND f.target_publish = 1 AND f.target_type = 'comment' ) [context] => /home/p45425/www/site.ru/classes/modules/comment/mapper/Comment.mapper.class.php line 668 )


Решение: Запустить из папки /install/ файл convert_0.5.1_to_0.5.2.sql

eregi is deprecated

Deprecated: Function eregi() is deprecated in /var/www/html/engine/lib/external/phpMailer/class.phpmailer.php on line 594

Версия 5.0, на 5.1 не проверял. Наверное надо переходить на «preg_match».

В OpenId не работает кнопка Facebook

установил на 0.5.1 вчера. кнопка «фейсбук» не реагирует.
остальные — вроде работают исправно.

ещё хотелось бы вместо OpenId желтого логотипа, вывести что-нибудь более понятное, сразу вид кнопок например. как это сделать? (в каком файле ковыряться? а то я например никогда бы не нажал OpenId а «выберите как зайти» нажал бы :)

[решено] после перехода на 0.5.1 не работает активность

не знаю что точнее послужило причиной ошибки (обновление до 0.5.1 или ещё что-то). Первый раз я увидел её, когда редактировал статью в коллективном блоге (это одна из первых моих статей таких). При сохранении каждый раз выходит (то же самое выходит при создании топика в любом месте)

SQL Error: Unknown column 'publish' in 'field list' at /classes/modules/stream/mapper/Stream.mapper.class.php line 22
Array ( [code] => 1054 [message] => Unknown column 'publish' in 'field list' [query] => INSERT INTO stream_event SET `event_type`='add_topic', `user_id`='1', `target_id`='9', `date_added`='2011-10-04 12:45:57', `publish`='1' [context] => /classes/modules/stream/mapper/Stream.mapper.class.php line 22 )


Но я набираю другую страницу в адресе, и вижу, что статья сохранилась.

Зато когда нажимаю «Активность» выходит эта же ошибка.