steve-iv
08-05-2010, 06:37 PM
Hi guys,
I?m not sure that I?m posting in the right subforum :D i just want to show a small "workaround" for sorting (desc/asc) ip addresses in the online.php (whoisonline).
By default, it?s not possible to sort the ip address column. You can modify the sort parameter to host (in a prepared hyperlink) but you won?t by able to get a great result ;)
Just have a deeper look into the online.php file:
switch ($sortfield)
{
case 'location':
$sqlsort = 'session.location';
break;
case 'time':
$sqlsort = 'session.lastactivity';
break;
case 'host':
$sqlsort = 'session.host';
break;
default:
$sqlsort = 'user.username';
$sortfield = 'username';
}
You can see, an extra switch for "host" is already implemented. But it won?t work properly - for sorting ip addresses i recommended to use the "inet_aton" function in mysql. inet_aton does only return the numeric value of an ip address, have a closer look here (http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton)!
Just change the line to:
$sqlsort = 'inet_aton(session.host)';
(Tested under Mysql version 5.xx)
Then you will be able to sort the column ip addresses by a prepared link.
Now we want to implement a "gui" functionality by clicking on the column header. Just go to your vbulletin templates, search for "whosonline"!
Replace line:
<vb:if condition="$show['ip']"><th><span class="blocksubhead">{vb:rawphrase ip_address}</span></th></vb:if>
to
<th><a class="blocksubhead" href="{vb:raw sorturl}{vb:if !$show['sorturlnoargs'], '&'}<vb:if condition="$sortarrow['host']">order={vb:raw sortarrow.oppositesort}&</vb:if>sort=host&pp={vb:raw perpage}&page={vb:raw pagenumber}">{vb:rawphrase ip_address} {vb:raw sortarrow.host}</a></th>
Now you will be able to sort the whoisonline list via clicking on the column header!
Greetings,
steve
I?m not sure that I?m posting in the right subforum :D i just want to show a small "workaround" for sorting (desc/asc) ip addresses in the online.php (whoisonline).
By default, it?s not possible to sort the ip address column. You can modify the sort parameter to host (in a prepared hyperlink) but you won?t by able to get a great result ;)
Just have a deeper look into the online.php file:
switch ($sortfield)
{
case 'location':
$sqlsort = 'session.location';
break;
case 'time':
$sqlsort = 'session.lastactivity';
break;
case 'host':
$sqlsort = 'session.host';
break;
default:
$sqlsort = 'user.username';
$sortfield = 'username';
}
You can see, an extra switch for "host" is already implemented. But it won?t work properly - for sorting ip addresses i recommended to use the "inet_aton" function in mysql. inet_aton does only return the numeric value of an ip address, have a closer look here (http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton)!
Just change the line to:
$sqlsort = 'inet_aton(session.host)';
(Tested under Mysql version 5.xx)
Then you will be able to sort the column ip addresses by a prepared link.
Now we want to implement a "gui" functionality by clicking on the column header. Just go to your vbulletin templates, search for "whosonline"!
Replace line:
<vb:if condition="$show['ip']"><th><span class="blocksubhead">{vb:rawphrase ip_address}</span></th></vb:if>
to
<th><a class="blocksubhead" href="{vb:raw sorturl}{vb:if !$show['sorturlnoargs'], '&'}<vb:if condition="$sortarrow['host']">order={vb:raw sortarrow.oppositesort}&</vb:if>sort=host&pp={vb:raw perpage}&page={vb:raw pagenumber}">{vb:rawphrase ip_address} {vb:raw sortarrow.host}</a></th>
Now you will be able to sort the whoisonline list via clicking on the column header!
Greetings,
steve