Tickets и статус авторов (тикета и комментариев)

Здравствуйте! Хочу вывести статус авторов тикета и комментариев рядом с их [[+fullname]]вот так:
Нашла чанк 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> онлайн
Если вы знаете как определить автора комментария и привязать проверку на авторизацию, пожалуйста, поделитесь информацией.

Спасибо!
Zulya
04 сентября 2022, 15:56
modx.pro
1
491
0

Комментарии: 5

Артур Шевченко
04 сентября 2022, 22:54
0
Возможно это дополнение поможет.
    Zulya
    05 сентября 2022, 13:08
    0
    Добрый день, Артур. В документации UsersOnline написано:
    Для вывода списка пользователей онлайн используется сниппет getOnlineUsers, который является оберткой над pdoUsers. Соответственно, оформлением результатов занимается pdoUsers, которому передаются все параметры вызова.
    Но примера запроса нет.

    Для плейсхолдера [[+fullname]] от Tickets, как использовать UsersOnline чтобы показать статус автора комментария, подскажите пожалуйста. Спасибо!
      Артур Шевченко
      05 сентября 2022, 14:23
      0
      Очевидно же документация на UsersOnline отсылает к документации на pdoUsers.
        Zulya
        05 сентября 2022, 20:15
        0
        Артур, я изучала документацию pdoUsers, но сейчас снова изучила. Но и там нет примеров как совместить getOnlineUsers и pdoUsers. И в документации pdoUsers тоже нет информации о том, что getOnlineUsers и pdoUsers можно использовать вместе.
          Артур Шевченко
          05 сентября 2022, 21:01
          1
          0
          В общем, я установил 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`
          ]]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5