Tickets и статус авторов (тикета и комментариев)
Здравствуйте! Хочу вывести статус авторов тикета и комментариев рядом с их [[+fullname]]вот так:
Нашла чанк tpl.Tickets.comment.one.auth, где можно указать статус автора комментария.
А также в интернете нашла следующий код, который проверяет, авторизован ли пользователь на сайте:
Но не знаю, как связать автора комментария и проверку на авторизацию чтобы рядом с именем автором вывести сообщение:
Спасибо!
Нашла чанк tpl.Tickets.comment.one.auth, где можно указать статус автора комментария.
А также в интернете нашла следующий код, который проверяет, авторизован ли пользователь на сайте:
<?php
if (!$modx->user->isAuthenticated('web')) {
echo '<i class="icon-square" style="color:green"></i> онлайн';
}
Сохранила этот код как сниппет useronline.Но не знаю, как связать автора комментария и проверку на авторизацию чтобы рядом с именем автором вывести сообщение:
<i class="icon-square" style="color:green"></i> онлайн
Если вы знаете как определить автора комментария и привязать проверку на авторизацию, пожалуйста, поделитесь информацией.Спасибо!
Комментарии: 5
Возможно это дополнение поможет.
Добрый день, Артур. В документации UsersOnline написано:
Для плейсхолдера [[+fullname]] от Tickets, как использовать UsersOnline чтобы показать статус автора комментария, подскажите пожалуйста. Спасибо!
Для вывода списка пользователей онлайн используется сниппет getOnlineUsers, который является оберткой над pdoUsers. Соответственно, оформлением результатов занимается pdoUsers, которому передаются все параметры вызова.Но примера запроса нет.
Для плейсхолдера [[+fullname]] от Tickets, как использовать UsersOnline чтобы показать статус автора комментария, подскажите пожалуйста. Спасибо!
Очевидно же документация на UsersOnline отсылает к документации на pdoUsers.
Артур, я изучала документацию pdoUsers, но сейчас снова изучила. Но и там нет примеров как совместить getOnlineUsers и pdoUsers. И в документации pdoUsers тоже нет информации о том, что getOnlineUsers и pdoUsers можно использовать вместе.
В общем, я установил UsersOnline и он не работает. Я посмотрел ошибки и завёл его. Вот код сниппета getOnlineUsers.
<?php
/** @var array $scriptProperties */
/** @var UsersOnline $UsersOnline */
if (!$UsersOnline = $modx->getService('usersonline', 'UsersOnline', $modx->getOption('usersonline_core_path', null,
$modx->getOption('core_path') . 'components/usersonline/') . 'model/usersonline/', $scriptProperties)
) {
return 'Could not load UsersOnline class!';
}
if (!$pdo = $modx->getService('pdoTools')) {
return $modx->lexicon('no_pdo');
}
$interval = $modx->getOption('timeInterval', $scriptProperties, -1);
if ($interval == -1) {
$interval = $modx->getOption('usersonline_time_span');
}
$contexts = $modx->getOption('contexts', $scriptProperties, null);
$innerJoin = array();
/*$innerJoin = $modx->getOption('innerJoin', $scriptProperties, '');
$innerJoin = $modx->fromJSON($innerJoin);*/
$innerJoin['UsersOnline'] = array(
'class' => 'userOnline',
'on' => 'modUser.id = UsersOnline.user_id',
);
$select = array();
/*if($select = $modx->getOption('select', $scriptProperties, '')){
$select = $modx->fromJSON($select);
}*/
$select['UsersOnline'] = '*';
$time = time();
$startTime = $time - $interval;
$where = array();
/*if($where = $modx->getOption('where', $scriptProperties, '')){
$where = $modx->fromJSON($where);
}*/
$where[] = array(
'UsersOnline.lastvisit:>=' => $startTime,
'UsersOnline.lastvisit:<=' => $time,
);
$contextsArray = array();
if($contexts != null){
$contextsArray = explode(',', $contexts);
}
if (!empty($contextsArray)) {
$where[] = array(
'UsersOnline.context_key:IN' => $contextsArray,
);
}
$scriptProperties['where'] = $modx->toJSON($where);
$scriptProperties['innerJoin'] = $modx->toJSON($innerJoin);
$scriptProperties['select'] = $modx->toJSON($select);
$output = $modx->runSnippet('pdoUsers', $scriptProperties);
return $output;
Вот вызов.[[!getOnlineUsers?
&contexts=`web`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.