From c785474fb4679bf1e3bc1fcb32d56f5c3e158cec Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 11 Feb 2010 08:50:40 -0800 Subject: [PATCH] Fix pagination isses in Active Sessions when a session is deleted. Fixes bug #11400 --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Operation/ActiveSessions.pm | 53 ++++++++++++-------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index aba9c4555..2141bba4e 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -11,6 +11,7 @@ - fixed #11336: Duplicate Version Tag Created. - fixed #11398: Recent post information keeps disappearing from my forums - fixed #11394: Map points does not show all the data that was entered + - fixed #11400: Active Sessions Deletion 7.8.11 - fixed #11362: Unable to checkout with ITransact plugin diff --git a/lib/WebGUI/Operation/ActiveSessions.pm b/lib/WebGUI/Operation/ActiveSessions.pm index dbe351855..2000397c4 100644 --- a/lib/WebGUI/Operation/ActiveSessions.pm +++ b/lib/WebGUI/Operation/ActiveSessions.pm @@ -72,35 +72,30 @@ delete (kill) each one via www_killSession sub www_viewActiveSessions { my $session = shift; return $session->privilege->adminOnly unless canView($session); - my ($output, $p, @row, $i, $sth, %data); - tie %data, 'Tie::CPHash'; - $sth = $session->db->read("select users.username,users.userId,userSession.sessionId,userSession.expires, - userSession.lastPageView,userSession.lastIP from users,userSession where users.userId=userSession.userId - and users.userId<>1 order by users.username,userSession.lastPageView desc"); - while (%data = $sth->hash) { - $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; - $row[$i] .= ''.$data{sessionId}.''; - $row[$i] .= ''.$session->datetime->epochToHuman($data{expires}).''; - $row[$i] .= ''.$session->datetime->epochToHuman($data{lastPageView}).''; - $row[$i] .= ''.$data{lastIP}.''; - $row[$i] .= ''.$session->icon->delete("op=killSession;sid=$data{sessionId}").''; - $i++; - } - $sth->finish; - $p = WebGUI::Paginator->new($session,$session->url->page('op=viewActiveSessions')); - $p->setDataByArrayRef(\@row); - my $i18n = WebGUI::International->new($session); - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= $p->getPage($session->form->process("pn")); - $output .= '
'.$i18n->get(428).''.$i18n->get(435).''.$i18n->get(432).''.$i18n->get(430).''.$i18n->get(431).''.$i18n->get(436).'
'; - $output .= $p->getBarTraditional($session->form->process("pn")); - return WebGUI::AdminConsole->new($session,"activeSessions")->render($output); + my $i18n = WebGUI::International->new($session); + my $output = ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + my $p = WebGUI::Paginator->new($session,$session->url->page('op=viewActiveSessions')); + $p->setDataByQuery("select users.username,users.userId,userSession.sessionId,userSession.expires, + userSession.lastPageView,userSession.lastIP from users,userSession where users.userId=userSession.userId + and users.userId<>1 order by users.username,userSession.lastPageView desc"); + my $pn = $p->getPageNumber; + foreach my $data (@{ $p->getPageData() }) { + $output = ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } + $output .= '
'.$i18n->get(428).''.$i18n->get(435).''.$i18n->get(432).''.$i18n->get(430).''.$i18n->get(431).''.$i18n->get(436).'
'.$data->{username}.' ('.$data->{userId}.')'.$data->{sessionId}.''.$session->datetime->epochToHuman($data->{expires}).''.$session->datetime->epochToHuman($data->{lastPageView}).''.$data->{lastIP}.''.$session->icon->delete("op=killSession;sid=".$data->{sessionId}.";pn=$pn").'
'; + $output .= $p->getBarTraditional(); + return WebGUI::AdminConsole->new($session,"activeSessions")->render($output); } 1;