Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2017-07-04 11:01:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
верхний пост - 2014
Архив верхнего поста.

Архивы:
[ 2013 | 2012 | 2011 | 2007-2010 | 2006 ]


(Читать комментарии) - (Добавить комментарий)


[info]weary
2015-11-10 14:33 (ссылка)
Так то от соседнего коммента под юзером, а в коде же проверяется posterid == 0. А в комменте анона всё чисто.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 14:34 (ссылка)
а, я осел, пардон
действительно

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-10 14:39 (ссылка)
осталось понять, как бы там резать openid, а не одних анонов

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-10 15:28 (ссылка)
Где-то здесь на 1014-й внутри цикла достаётся полное описание юзера из базы, и в том массиве ($post->{'upost'}) может лежать что-то, что показывает, что юзер пришел через openid. У меня локально openid вообще не работает почему-то, проверить не могу, потому предположу, что определить можно то ли по имени юзера (если там есть какой-нибудь ext_), то ли по какому-нибудь свойству из данного массива.

Если на том этапе получится определить openid, то можно будет воткнуть туда похожий код.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-10 16:50 (ссылка)
openid определяется такой проверкой
но это ад, конечно

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-10 23:35 (ссылка)
Похоже, что openid - это $user->{'journaltype'} == 'I', а у обычного юзера там 'P'. 'I' включает в себя всех, в том числе и ЖЖ, хотя в некоторых местах оно обрабатывается по-разному, например, в userinfo.bml.

Соответственно, если пользователя уже вытащили из базы, то достаточно проверять journaltype. В talklib.pl это можно сделать на 1017-й, где $up это тот юзер, а не-юзеры уже пропущены в next unless $up строчкой выше.

if ($up->{'journaltype'} == 'I') {
Encode::...
$post->{'body'} =~ ....
# etc
}

Либо, как вариант, чтобы не размазывать всё это по коду, можно воткнуть между my $up и next unless что-то вроде такого, что сработает и на анонимуса, и ликвидировать вставленный ранее блок:

if (($post->{'posterid'} == 0) || ($up && ($up->{'journaltype'} == 'I'))) {
#...
}

По идее второй вариант адекватнее, хотя начать можно с первого (если оно вообще заработает).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2015-11-11 00:48 (ссылка)
Спасибо! Сделаю

(Ответить) (Уровень выше)


[info]tiphareth
2015-11-13 14:26 (ссылка)
туплю несколько
а чего писать в #... ?

Encode::_utf8_on($posts->{$talkid}->{'subject'});
Encode::_utf8_on($posts->{$talkid}->{'body'});
$posts->{$talkid}->{'subject'} =~ s/[\p{Mn}\p{Me}]{5,}//g;
$posts->{$talkid}->{'body'} =~ s/[\p{Mn}\p{Me}]{5,}//g;
$posts->{$talkid}->{'body'} =~ s/\n{8,}//g;
Encode::_utf8_off($posts->{$talkid}->{'subject'});
Encode::_utf8_off($posts->{$talkid}->{'body'});

Или encode-decode на этом этапе ненужно?
опасаюсь засрать что-то постороннее, поэтому спрашиваю

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]weary
2015-11-13 15:03 (ссылка)
Да, вроде так.

Перед применением того юникодного регэкспа всегда нужно делать utf8_on, а после - utf8_off. По идее, даже если сделать это два раза, то ничего не сломается (не проверю сейчас, увы).

(Ответить) (Уровень выше)


[info]weary
2015-11-13 15:13 (ссылка)
И тут тоже в условии $up->{'journaltype'} eq 'I' вместо ==, иначе всегда срабатывать будет.

(Ответить) (Уровень выше)


(Читать комментарии) -