%@ CodePage=65001 Language="VBScript"%>
<% Option Explicit %>
<% sBBSLangPage = "statistics"
BBS.SetupBBS
BBS.SetScheme(0)
dictEnvironment.item("V-LOCATIONLINKS") = dictEnvironment.item("V-LOCATIONLINKS") & " -> " & dictLanguage("GLOBAL-LOCATION2") & " -> " & dictLanguage("GLOBAL-LOCATION4")
if not(BBS.HasPermission(PERM_ViewBBS, -1)) then response.redirect sBBSForumRoot & "/logon.asp?error=needregistration"
if not (dictConfiguration("bGUESTSVIEWSTATISTICS") = 1 or iBBSUserlevel >= USERLEVEL_User) then response.redirect sBBSForumRoot & "/logon.asp?error=needregistration"
dim rank, sListUsername, sListPassword , itotalposts, dDateRegistered, iPage, iCurrentPage
dim SQL, dLastLogon, bdisablepostcount, sUserType, iEndCount, index, sOrdering
dim sOppositeUsernameOrdering, sOppositeLocationOrdering, sOppositePostsOrdering, sOppositeRegisteredOrdering, sOppositeLastlogonOrdering
dim iStart, iUserCount, sSortOrder, iRecordCount, sLocation, iColumns, iMove, iPageSize, sUserRank
iColumns = 8
iPageSize = 100
if dictConfiguration("bFORUMENABLEPOSTCOUNT") = 0 then iColumns = iColumns - 1
dictEnvironment("V-COLUMNS") = iColumns
' Retrieve querystrings
iStart = BBS.ValidateNumeric(request("start"))
iUserCount = 0
sSortOrder = request.form("sortorder")
sOrdering = request.form("ordering")
if len(trim(sSortOrder))=0 then sSortOrder = "username"
if len(trim(sOrdering))=0 then sOrdering = "ASC"
if sOrdering <> "DESC" then sOrdering = "ASC"
SQL = "select count(*) as usercount from members"
rsMaster.open SQL, dbConnection, adOpenForwardOnly, adLockReadOnly
BBS.AddQuery(SQL)
if not rsMaster.EOF then iRecordCount = rsMaster.fields(0).value
rsMaster.Close
' Generate the paging & sorting box
vbString.Append "
"
dictEnvironment("V-PAGINGBOX") = vbString.ToString()
vbString.Clear()
' Generate the ranks table
if isArray(vBBSRankArray) then
' Left side
vbString.Append ""
for index = 0 to ((ubound(vBBSRankArray, 2) \ 2)-1)
vbString.Append "| " & BBS.MBBSDecode(vBBSRankArray(2, index), 1) & " | "
if vBBSRankArray(0, index) > 0 or vBBSRankArray(1, index) > 0 then vbString.Append "- "
if vBBSRankArray(0, index) > 0 then vbString.Append vBBSRankArray(0, index) & " " & dictLanguage("STATS-POSTS") & " "
if vBBSRankArray(1, index) > 0 then vbString.Append vBBSRankArray(1, index) & " " & dictLanguage("STATS-DAYS")
vbString.Append " | "
next
vbString.Append " | "
for index = ubound(vBBSRankArray, 2) \ 2 to ubound(vBBSRankArray, 2)
vbString.Append "| " & BBS.MBBSDecode(vBBSRankArray(2, index), 1) & " | "
if vBBSRankArray(0, index) > 0 or vBBSRankArray(1, index) > 0 then vbString.Append "- "
if vBBSRankArray(0, index) > 0 then vbString.Append vBBSRankArray(0, index) & " " & dictLanguage("STATS-POSTS") & " "
if vBBSRankArray(1, index) > 0 then vbString.Append vBBSRankArray(1, index) & " " & dictLanguage("STATS-DAYS")
vbString.Append " | "
next
vbString.Append " |
"
dictEnvironment("V-RANKS") = vbString.ToString()
vbString.Clear()
end if
if IsArray(vBBSDecorationArray) then
' Left Side
vbString.Append ""
for index = 0 to ((ubound(vBBSDecorationArray, 2) \ 2)-1)
vbString.Append "| " & (vBBSDecorationArray(0, index)) & " | " & CRLF
vbString.Append "" & BBS.GetDecorations(vBBSDecorationArray(0, index)) & " | " & CRLF
next
vbString.Append " | "
for index = (ubound(vBBSDecorationArray, 2) \ 2) to ubound(vBBSDecorationArray,2)
vbString.Append "| " & (vBBSDecorationArray(0, index)) & " | " & CRLF
vbString.Append "" & BBS.GetDecorations(vBBSDecorationArray(0, index)) & " | " & CRLF
next
vbString.Append " |
"
dictEnvironment("V-DECORATIONS") = vbString.ToString()
vbString.Clear()
end if
' Create the userlisting
rank = iStart
SQL = "select username, location, totalposts, dateregistered, lastlogon, disablepostcount, memberid, usecustomrank, customrank, totalposts, dateregistered from members where active=1"
if sSortOrder="username" then
SQL = SQL & " order by username " & sOrdering
elseif sSortOrder="posts" then
SQL = SQL & " order by disablepostcount ASC, totalposts " & sOrdering
elseif sSortOrder="location" then
SQL = SQL & " order by location " & sOrdering
elseif sSortOrder="registered" then
SQL = SQL & " order by dateregistered " & sOrdering
elseif sSortOrder="lastlogon" then
SQL = SQL & " order by lastlogon " & sOrdering
end if
if ucase(sBBSDatabaseType) = "MYSQL" Then
rsMaster.CursorLocation = adUseClient
rsMaster.open SQL, dbConnection, adOpenForwardOnly, adLockReadOnly
else
rsMaster.open SQL, dbConnection, adOpenForwardOnly, adLockReadOnly
end if
BBS.AddQuery(SQL)
if not rsMaster.EOF then
vbString.Append "" & CRLF
vbString.Append "" & CRLF
vbString.Append "" & CRLF
vbString.Append "" & CRLF
vbString.Append "" & CRLF
if dictConfiguration("bFORUMENABLEPOSTCOUNT") = 1 then
vbString.Append "" & CRLF
end if
vbString.Append "" & CRLF
vbString.Append "
" & CRLF
end if
if not(rsMaster.EOF) then rsMaster.move (iStart)
do until rsMaster.EOF or (rank = (iStart + iPageSize))
rank = rank + 1
sListUsername = rsMaster.fields("username").value
sLocation = rsMaster.fields("location").value
itotalposts = rsMaster.fields("totalposts").value
dDateRegistered = rsMaster.fields("dateregistered").value
dLastLogon = rsMaster.fields("lastlogon").value
bdisablepostcount = rsMaster.fields("disablepostcount").value
vbString.Append "| " & rank & " | " & BBS.CreateUsernameLinkByID(rsMaster.fields("memberid").value) & BBS.ValidateField(sListUsername) & " | " & CRLF
' Find the user rank quickly without adding extra calls to the database
if rsMaster.fields("usecustomrank").value = 1 then
sUserRank = rsMaster.fields("customrank").value
else
sUserRank = BBS.GetRank(rsMaster.fields("totalposts").value, DateDiff("d", rsMaster.fields("dateregistered").value, now))
end if
vbString.Append "" & BBS.MBBSDecode(sUserRank, 1) & " | " & CRLF
vbString.Append "" & BBS.ValidateField(sLocation) & " | " & CRLF
if dictConfiguration("bFORUMENABLEPOSTCOUNT") = 1 then
if bDisablePostCount = 0 or iBBSUserLevel >= USERLEVEL_SupportAdministrator then
vbString.Append "" & iTotalPosts & " | " & CRLF
else
vbString.Append "" & dictLanguage("STATS-DISABLED") & " | " & CRLF
end if
end if
vbString.Append "" & BBS.GetShortDate(dDateRegistered) & " | " & CRLF
vbString.Append "" & BBS.GetShortDate(dLastLogon) & " |
" & CRLF
rsMaster.MoveNext
loop
rsMaster.Close
if ucase(sBBSDatabaseType) = "MYSQL" Then
rsMaster.CursorLocation = adUseServer
end if
vbString.Append "
"
dictEnvironment("V-USERLIST") = vbSTring.ToSTring()
vbString.Clear()
dictEnvironment.add "V-TITLE", dictLanguage.item("STATS-USERLISTING")
dictEnvironment.add "C-SHOWRANDOMQUOTES", dictConfiguration("bDISPLAYBBSQUOTES")
if iBBSUserLevel >= USERLEVEL_SupportAdministrator then dictEnvironment.add "C-SHOWADMINLINK", 1
%>
<% Filesystem.ExecuteBBSTemplate("/statistics/user-listing.asp") %>