package WebGUI::Operation::Statistics; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2004 Plain Black Corporation. #------------------------------------------------------------------- # 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 strict; use WebGUI::AdminConsole; use WebGUI::Cache; use WebGUI::Grouping; use WebGUI::International; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; #------------------------------------------------------------------- sub _submenu { my $workarea = shift; my $title = shift; $title = WebGUI::International::get($title) if ($title); my $ac = WebGUI::AdminConsole->new("statistics"); if ($session{setting}{trackPageStatistics}) { $ac->addSubmenuItem( WebGUI::URL::page("op=viewPageReport"), WebGUI::International::get(796)); # $ac->addSubmenuItem( WebGUI::URL::page("op=viewTrafficReport"), WebGUI::International::get(797)); $ac->addSubmenuItem( WebGUI::URL::page('op=viewStatistics'), WebGUI::International::get(144)); } return $ac->render($workarea, $title); } #------------------------------------------------------------------- sub www_viewPageReport { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); my ($output, $count, $user, $data, $sth, %page, $pageId); tie %page, "Tie::IxHash"; unless ($session{setting}{trackPageStatistics}) { $output .= WebGUI::International::get(802); } else { $sth = WebGUI::SQL->read("select pageTitle,pageId,userId,ipAddress,wobjectId from pageStatistics order by pageTitle,userId,ipAddress"); while ($data = $sth->hashRef) { if ($data->{userId} eq '1') { $user = $data->{ipAddress}; } else { $user = $data->{userId}; } $page{$data->{pageId}}{pageTitle} = $data->{pageTitle}; $page{$data->{pageId}}{users}{$user}++; $page{$data->{pageId}}{views}++; $page{$data->{pageId}}{interact}++ if ($data->{wobjectId}); } $sth->finish; $output .= ''; foreach $pageId (keys %page) { $output .= ''; $output .= ''; $count = 0; foreach (keys %{$page{$pageId}{users}}) { $count++; } $output .= ''; $output .= ''; } $output .= '
'.WebGUI::International::get(798).' '.WebGUI::International::get(799).' '.WebGUI::International::get(800).' '.WebGUI::International::get(801).'
'.$page{$pageId}{pageTitle}.''.$page{$pageId}{views}.''.$count.''.$page{$pageId}{interact}.'
'; } return _submenu($output,"page statistics"); } #------------------------------------------------------------------- sub www_viewStatistics { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); my ($output, $data); my $url = "http://www.plainblack.com/downloads/latest-version.txt"; my $cache = WebGUI::Cache->new($url,"URL"); my $version = $cache->get; if (not defined $version) { $version = $cache->setByHTTP($url,43200); } chomp $version; $output .= ''; $output .= ''; if ($version ne $WebGUI::VERSION) { my @rev = split(/\./,$version); $version = ''.$version.''; } $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId<>3"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId=0"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId=5"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from wobject where pageId<>3"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from template where namespace='style'"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from template where namespace<>'style'"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from collateral"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from userSession"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from users"); $output .= ''; ($data) = WebGUI::SQL->quickArray("select count(*) from groups"); $output .= ''; $output .= '
'.WebGUI::International::get(145).':'.$WebGUI::VERSION.'-'.$WebGUI::STATUS.'
'.WebGUI::International::get(349).':'.$version.'
'.WebGUI::International::get(147).':'.$data.'
'.WebGUI::International::get(795).':'.$data.'
'.WebGUI::International::get(794).':'.$data.'
'.WebGUI::International::get(148).':'.$data.'
'.WebGUI::International::get(427).':'.$data.'
'.WebGUI::International::get(792).':'.$data.'
'.WebGUI::International::get(793).':'.$data.'
'.WebGUI::International::get(146).':'.$data.'
'.WebGUI::International::get(149).':'.$data.'
'.WebGUI::International::get(89).':'.$data.'
'; return _submenu($output); } #------------------------------------------------------------------- sub www_viewTrafficReport { return WebGUI::Privilege::adminOnly() unless (WebGUI::Grouping::isInGroup(3)); my ($output, $data); $output = '

Pages

'; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-2592000)); $output .= "Last 30 days: ".$data."
"; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-604800)); $output .= "Last 7 days: ".$data."
"; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-86400)); $output .= "Last 24 hours: ".$data."
"; $output .= '

Visitors

'; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-2592000) ." group by ipAddress,userId"); $output .= "Last 30 days: ".$data."
"; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-604800) ." group by ipAddress,userId"); $output .= "Last 7 days: ".$data."
"; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-86400) ." group by ipAddress,userId"); $output .= "Last 24 hours: ".$data."
"; return _submenu($output); } 1;