Подскажите пожалуйста, можно ли добавить колонки в журнал "Топ посетителей", не влезая в код модуля статистики?
Я хочу, чтобы там всегда выводился hostname, даже для зарегистрированных пользователей. Плюс нужна возможность сортировки по данному полю.
Из-за этого переопределение theme_table не подходит - сортировку будет не сделать.
Я пока сделал вот так:
* Menu callback; presents the "top visitors" page.
*/
function statistics_top_visitors() {
$header = array(
array('data' => t('Hits'), 'field' => 'hits', 'sort' => 'desc'),
array('data' => t('Visitor'), 'field' => 'u.name'),
array('data' => t('Mail'), 'field' => 'u.mail'),
array('data' => t('Ip'), 'field' => 'a.hostname'),
array('data' => t('Total page generation time'), 'field' => 'total'),
array('data' => t('Operations'))
);
$sql = "SELECT COUNT(a.uid) AS hits, a.uid, u.name, u.mail, a.hostname, SUM(a.timer) AS total, ac.aid FROM {accesslog} a LEFT JOIN {access} ac ON ac.type =\
'host' AND LOWER(a.hostname) LIKE (ac.mask) LEFT JOIN {users} u ON a.uid = u.uid GROUP BY a.hostname, a.uid, u.name, ac.aid". tablesort_sql($header);
$sql_cnt = "SELECT COUNT(DISTINCT(CONCAT(uid, hostname))) FROM {accesslog}";
$result = pager_query($sql, 30, 0, $sql_cnt);
while ($account = db_fetch_object($result)) {
$qs = drupal_get_destination();
$ban_link = $account->aid ? l(t('unban'), "admin/user/rules/delete/$account->aid", array(), $qs) : l(t('ban'), "admin/user/rules/add/$account->hostname/h\
ost", array(), $qs);
$rows[] = array($account->hits, ($account->uid ? theme('username', $account) : $account->hostname), $account->mail, $account->hostname, format_interval(r\
ound($account->total / 1000)), $ban_link);
}
drupal_set_title(t('Top visitors in the past %interval', array('%interval' => format_interval(variable_get('statistics_flush_accesslog_timer', 259200)))));
$output = theme('table', $header, $rows);
$output .= theme('pager', NULL, 30, 0);
return $output;
}
Может быть можно как-то переопределить функцию-обработчик этого пункта меню?
Или только отдельным модулем делать?
Комментарии
Во! Еще вопрос. Как-то можно регистрировать X_FORWARDED_FOR? Может есть такой модуль?
Хотелось бы и его в эту таблицу вставить