Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
5 Апрель 2013

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

Из за косяка в Битрикс 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()); }
}

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

рубрики: Bitrix | Комментарии (1)