.
5 апреля 2013

Битрикс — не работает User::IsOnLine

posted in Bitrix |

Из за косяка в Битрикс API убил сегодня несколько часов своего драгоценного времени :(
И всё это на фоне «горящих» сроков по проекту :(

Итак, ТЗ:
Надыть сделать в Битрик форуме иконку присутствия пользователя на форуме.
C виду задача плёвая — кастомизируем шаблон на предмет текущей активности юзера и готово!

Первая проблема — нужная область вывода находится не в скопированном для кастомизации шаблоне, а в шаблоне «секретного» компонента самого битрикса.
/bitrix/components/forum.message.template/templates/.default/template.php
который копирую в свой дабы не затёрся при обновлении движка
/bitrix/components/forum.message.template/templates/portal/template.php

так же уже в шаблоне компонента заменяем шаблон в вызове метода forum.message.template
это .../forum.topic.read/.default комплексного компонента forum
(искать соответственно в шаблоне комплексного компонента)

Вторая проблема:
CUser::IsOnLine — нихера не работат! На что отдельное Спасибо разработчикам ...

Чтобы фукнция заработала в init.d пихаем следующий код:
AddEventHandler('main', 'OnBeforeProlog', 'CustomSetLastActivityDate');
function CustomSetLastActivityDate() {
if($GLOBALS['USER']->IsAuthorized()) { CUser::SetLastActivityDate($GLOBALS['USER']->GetID()); }
}

Дальше вроде всё просто ...

Яндекс.Метрика