package WebGUI::Operation::Statistics; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2002 Plain Black LLC. #------------------------------------------------------------------- # Please read the legal notices (docs/legal.txt) and the license # (docs/license.txt) that came with this distribution before using # this software. #------------------------------------------------------------------- # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- use Exporter; use HTTP::Request; use HTTP::Headers; use LWP::UserAgent; use strict; use WebGUI::DateTime; use WebGUI::Icon; use WebGUI::International; use WebGUI::Paginator; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; our @ISA = qw(Exporter); our @EXPORT = qw(&www_viewStatistics &www_killSession &www_viewLoginHistory &www_viewActiveSessions); #------------------------------------------------------------------- sub www_killSession { if (WebGUI::Privilege::isInGroup(3)) { WebGUI::Session::end($session{form}{sid}); return www_viewActiveSessions(); } else { return WebGUI::Privilege::adminOnly(); } } #------------------------------------------------------------------- sub www_viewActiveSessions { my ($output, $p, @row, $i, $sth, %data); tie %data, 'Tie::CPHash'; if (WebGUI::Privilege::isInGroup(3)) { $output = '

'.WebGUI::International::get(425).'

'; $sth = WebGUI::SQL->read("select * from users,userSession where users.userId=userSession.userId"); while (%data = $sth->hash) { $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; $row[$i] .= ''.$data{sessionId}.''; $row[$i] .= ''.epochToHuman($data{expires},"%H:%n%p %M/%D/%y").''; $row[$i] .= ''.epochToHuman($data{lastPageView},"%H:%n%p %M/%D/%y").''; $row[$i] .= ''.$data{lastIP}.''; $row[$i] .= ''.deleteIcon("op=killSession&sid=$data{sessionId}").''; $i++; } $sth->finish; $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewActiveSessions'),\@row); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= $p->getPage($session{form}{pn}); $output .= '
'.WebGUI::International::get(428).''.WebGUI::International::get(435).''.WebGUI::International::get(432).''.WebGUI::International::get(430).''.WebGUI::International::get(431).''.WebGUI::International::get(436).'
'; $output .= $p->getBarTraditional($session{form}{pn}); } else { $output = WebGUI::Privilege::adminOnly(); } return $output; } #------------------------------------------------------------------- sub www_viewLoginHistory { my ($output, $p, @row, $i, $sth, %data); tie %data, 'Tie::CPHash'; if (WebGUI::Privilege::isInGroup(3)) { $output = '

'.WebGUI::International::get(426).'

'; $sth = WebGUI::SQL->read("select * from users,userLoginLog where users.userId=userLoginLog.userId order by userLoginLog.timeStamp desc"); while (%data = $sth->hash) { $data{username} = 'unknown user' if ($data{userId} == 0); $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; $row[$i] .= ''.$data{status}.''; $row[$i] .= ''.epochToHuman($data{timeStamp},"%H:%n%p %M/%D/%y").''; $row[$i] .= ''.$data{ipAddress}.''; $row[$i] .= ''.$data{userAgent}.''; $i++; } $sth->finish; $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewLoginHistory'),\@row); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= $p->getPage($session{form}{pn}); $output .= '
'.WebGUI::International::get(428).''.WebGUI::International::get(434).''.WebGUI::International::get(429).''.WebGUI::International::get(431).''.WebGUI::International::get(433).'
'; $output .= $p->getBar($session{form}{pn}); } else { $output = WebGUI::Privilege::adminOnly(); } return $output; } #------------------------------------------------------------------- sub www_viewStatistics { my ($output, $data, $header, $userAgent, $request, $response, $version, $referer); if (WebGUI::Privilege::isInGroup(3)) { $userAgent = new LWP::UserAgent; $userAgent->agent("WebGUI-Check/2.0"); $userAgent->timeout(10); $header = new HTTP::Headers; $referer = "http://webgui.web.getversion/".$session{env}{SERVER_NAME}.$session{env}{REQUEST_URI}; chomp $referer; $header->referer($referer); $request = new HTTP::Request (GET => "http://www.plainblack.com/downloads/latest-version.txt", $header); $response = $userAgent->request($request); $version = $response->content; chomp $version; $output .= helpIcon(12); $output .= '

'.WebGUI::International::get(437).'

'; $output .= ''; $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from userSession"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId>25"); $data++; $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from wobject"); $data--; $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from style where styleId>25"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from users where userId>25"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from groups where groupId>25"); $output .= ''; $output .= '
'.WebGUI::International::get(145).''.$WebGUI::VERSION.' ('.WebGUI::International::get(349).': '.$version.')
'.WebGUI::International::get(146).''.$data.' ('.WebGUI::International::get(423).' / '.WebGUI::International::get(424).')
'.WebGUI::International::get(147).''.$data.'
'.WebGUI::International::get(148).''.$data.'
'.WebGUI::International::get(427).''.$data.'
'.WebGUI::International::get(149).''.$data.'
'.WebGUI::International::get(89).''.$data.'
'; } else { $output = WebGUI::Privilege::adminOnly(); } return $output; } 1;