bira
12-30-2001, 10:00 PM
ok, I wrote this (very small) hack in online.php because I'd rather view the list
sorted by the Last Active time (latest first) than by the sorted by username a-z.
And, sometimes I want to view the list sorted by location - which gives
a very clear and nice picture of where people are currently crowding.
I went on and also added an option to sort by IP address - which allows me
to see if there are users from the same IP at the same time, etc.
This works exactly the same as the Forum Display sorting (where you can
click on "Threads" or "Replies" and the display listing gets sorted by that
field, and the sort/opposite sort arrow 'jumps' next to it).
Installation:
Open online.php and find:
$allusers= $DB_site->query("SELECT user.username,
ABOVE it ADD:
if ($order!='asc') {
$sqlorder='DESC';
} else {
$sqlorder='ASC';
}
if (!$sortby) {
$sortby = "username";
}
switch ($sortby) {
case username:
$sqlsort = "user.username";
break;
case location:
$sqlsort = "session.location";
break;
case time:
$sqlsort = "session.lastactivity";
break;
case host:
$sqlsort = "session.host";
break;
}
$sorturl="online.php?s=$session[sessionhash]";
$oppositesort=iif($order=='asc','desc','asc');
eval("\$sortarrow[$sortby] = \"".gettemplate('whosonline_sortarrow')."\";");
still in online.php, find:
ORDER BY user.username
REPLACE this with:
ORDER BY $sqlsort $sqlorder
Save and upload.
Templates:
ADD NEW templated called whosonline_sortarrow and place in it (remove spaces in { imagesfolder }):
<a href="$sorturl&order=$oppositesort&sortby=$sortby"><img src="{ imagesfolder }/sort$oppositesort.gif" border="0" alt="Reverse Sort Order" align="absmiddle"></a>
save.
OPEN template whosonline
Find (without the spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>User Name</b></smallfont></td>
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>Location</b></smallfont></td>
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>Last Active</b></smallfont></td>
REPLACE it with (removes spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=username"><smallfont color="{ tableheadtextcolor }"><b>User Name</b></smallfont></a> $sortarrow[username]</td>
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=location"><smallfont color="{ tableheadtextcolor }"><b>Location</b></smallfont></a> $sortarrow[location]</td>
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=desc&sortby=time"><smallfont color="{ tableheadtextcolor }"><b>Last Active</b></smallfont></a> $sortarrow[time]</td>
save.
OPEN template whosonline_ip.
REPLACE the ENTIRE content of the template with (removes spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=host"><smallfont color="{ tableheadtextcolor }"><b>IP</b></smallfont></a> $sortarrow[host]</td>
Save.
That's it.
Cheers,
Bira
sorted by the Last Active time (latest first) than by the sorted by username a-z.
And, sometimes I want to view the list sorted by location - which gives
a very clear and nice picture of where people are currently crowding.
I went on and also added an option to sort by IP address - which allows me
to see if there are users from the same IP at the same time, etc.
This works exactly the same as the Forum Display sorting (where you can
click on "Threads" or "Replies" and the display listing gets sorted by that
field, and the sort/opposite sort arrow 'jumps' next to it).
Installation:
Open online.php and find:
$allusers= $DB_site->query("SELECT user.username,
ABOVE it ADD:
if ($order!='asc') {
$sqlorder='DESC';
} else {
$sqlorder='ASC';
}
if (!$sortby) {
$sortby = "username";
}
switch ($sortby) {
case username:
$sqlsort = "user.username";
break;
case location:
$sqlsort = "session.location";
break;
case time:
$sqlsort = "session.lastactivity";
break;
case host:
$sqlsort = "session.host";
break;
}
$sorturl="online.php?s=$session[sessionhash]";
$oppositesort=iif($order=='asc','desc','asc');
eval("\$sortarrow[$sortby] = \"".gettemplate('whosonline_sortarrow')."\";");
still in online.php, find:
ORDER BY user.username
REPLACE this with:
ORDER BY $sqlsort $sqlorder
Save and upload.
Templates:
ADD NEW templated called whosonline_sortarrow and place in it (remove spaces in { imagesfolder }):
<a href="$sorturl&order=$oppositesort&sortby=$sortby"><img src="{ imagesfolder }/sort$oppositesort.gif" border="0" alt="Reverse Sort Order" align="absmiddle"></a>
save.
OPEN template whosonline
Find (without the spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>User Name</b></smallfont></td>
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>Location</b></smallfont></td>
<td bgcolor="{ tableheadbgcolor }"><smallfont color="{ tableheadtextcolor }"><b>Last Active</b></smallfont></td>
REPLACE it with (removes spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=username"><smallfont color="{ tableheadtextcolor }"><b>User Name</b></smallfont></a> $sortarrow[username]</td>
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=location"><smallfont color="{ tableheadtextcolor }"><b>Location</b></smallfont></a> $sortarrow[location]</td>
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=desc&sortby=time"><smallfont color="{ tableheadtextcolor }"><b>Last Active</b></smallfont></a> $sortarrow[time]</td>
save.
OPEN template whosonline_ip.
REPLACE the ENTIRE content of the template with (removes spaces in {}):
<td bgcolor="{ tableheadbgcolor }"><a href="$sorturl&order=asc&sortby=host"><smallfont color="{ tableheadtextcolor }"><b>IP</b></smallfont></a> $sortarrow[host]</td>
Save.
That's it.
Cheers,
Bira