Блок с пользователи в онлайне для Drupal 7

Главные вкладки

Аватар пользователя iNFerNo iNFerNo 30 декабря 2011 в 18:07

Может кто-то переделывал код для 6 го друпала для вывода он лайн зарегистрированных юзеров в блоке ДЛЯ 7 друпала?

код ниже..

<?php
if (user_access('access content')) {

    $max_users = 1000; // Максимальное количество отображаемых пользователей
 
 
    $output = '';
 
          $interval = time() - variable_get('user_block_seconds_online', 900);
 
 
 
          $authenticated_users = db_query('SELECT DISTINCT u.uid, u.name, s.timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= %d AND s.uid > 0 ORDER BY s.timestamp DESC', $interval);
          $authenticated_count = 0;
 
          $items = array();
          while ($account = db_fetch_object($authenticated_users)) {
            if (!isset($items[$account->uid])) {
              if ($max_users > 0) {
              $items[$account->uid] = $account;
              $max_users--;
              }
              $authenticated_count++;
            }
          }
 
 
          if ($authenticated_count == 1) {
            $output = t('Сейчас на сайте %members.', array('%members' => format_plural($authenticated_count, '1 user', 'count users')));
          }
          else {
            $output = t('Сейчас на сайте %members.', array('%members' => format_plural($authenticated_count, '1 user', 'count users')));
          }
 
 
          // Display a list of currently online users.
          $max_users = variable_get('user_block_max_list_count', 10);
          if ($authenticated_count && $max_users) {
        $output .= '<div id="my_block_users_online">'."\n";
        $i = 0;
        foreach ($items as $item) {
            if ($i != 0) {$output .= ', ';}
            $output .= theme('username', $item);
        $i++;
        }
            $output .= '.';
        $output .= '</div>'."\n";
          }
 
    // Максимальное нашествие online пользователей
   $output .= '<div id="my_block_users_maximum">'."\n";
    $umax = variable_get('user_online_max', array('count' => 0, 'date' => '0'));
    if ($umax['count'] == 0 || $umax['count'] <= ($authenticated_count)) {
        $umax['count'] = $authenticated_count;
        $umax['date'] = time();
        variable_set('user_online_max', $umax);
    }
    $output .= 'Пик посещаемости <strong>'.$umax['count'].'</strong>, это было <span class="date">'.format_date($umax['date'], 'custom', 'd.m.Y в H:i', NULL).'</span>.';
    $output .= '</div>'."\n";
 
 
    // Вывод блока
    print $output;
}
?>

Комментарии

Аватар пользователя imarat imarat 30 декабря 2011 в 18:55

вроде и самому тож можно, представление Пользователи, фильтр последнее посещение, в настройках Смещение от текущего времени -15 minutes
количество агрегацией, пик посещаемости хз

Аватар пользователя ser_house ser_house 10 ноября 2015 в 11:47

Я взял код отсюда. С учетом комментариев от Dmitry - работает в 7-ке.
Даже модуль сделал (не полноценный, а так - зачатки) - показывает пользователей, гостей и роботов.
Пика посещаемости нет - только кто онлайн.

Аватар пользователя safin safin 11 апреля 2013 в 19:52

а у меня выдает ошибку

Recoverable fatal error: Argument 2 passed to db_query() must be an array, integer given, called in /var/www/proff/data/www/modules/php/php.module(80) : eval()'d code on line 13 and defined в функции db_query() (строка 2313 в файле /var/www/proff/data/www/includes/database/database.inc).