diff options
author | Ivan Kohler <ivan@freeside.biz> | 2016-02-09 21:07:57 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2016-02-09 21:07:57 -0800 |
commit | b06cbe907c8b7b655db21ca547b46f9f0241a443 (patch) | |
tree | 2d543d15b4e537657cce9650856978f12993bb6c | |
parent | 4b51d95adb7a3625d462cb60e4cb733749584d0a (diff) |
log statistics, RT#39822
-rw-r--r-- | httemplate/elements/menu.html | 2 | ||||
-rw-r--r-- | httemplate/search/access_user_log.html | 54 | ||||
-rw-r--r-- | httemplate/search/report_access_user_log.html | 37 |
3 files changed, 93 insertions, 0 deletions
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index ee4f17495..c385cb4c7 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -528,6 +528,8 @@ $tools_system{'Status'} = [ $fsurl.'view/Status.html', 'System status' ] if $curuser->access_right('Configuration'); # 'View system status'); $tools_system{'Job Queue'} = [ $fsurl.'search/queue.html', 'View pending job queue' ] if $curuser->access_right('Job queue'); +$tools_system{'Access log statistics'} = [ $fsurl.'search/report_access_user_log.html?group_by=path', '' ] + if $curuser->access_right('Configuration'); # 'View profiling data'); tie my %tools_menu, 'Tie::IxHash', (); $tools_menu{'Customers'} = [ \%tools_customers, 'Customer tools' ] diff --git a/httemplate/search/access_user_log.html b/httemplate/search/access_user_log.html new file mode 100644 index 000000000..529ae8698 --- /dev/null +++ b/httemplate/search/access_user_log.html @@ -0,0 +1,54 @@ +<& elements/search.html, + 'title' => 'Access Log', + 'name' => 'entries', + 'query' => $query, + 'count_query' => $count_query, + 'header' => [ + 'Path', + '#', + 'Avg time', + ], + 'fields' => [ sub { shift->path }, + sub { shift->num_entries }, + sub { shift->avg_render_seconds }, + ], + 'sort_fields' => [qw( path num_entries avg_render_seconds )], + +&> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my %hashref = (); +my @extra_sql = (); + +my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, '_date'); +push @extra_sql, "_date >= $beginning" if $beginning; +push @extra_sql, "_date <= $ending" if $ending; + +$hashref{usernum} = $cgi->param('usernum') if $cgi->param('usernum') =~ /^\d+$/; + +my $extra_sql = ''; +$extra_sql .= (keys(%hashref) ? ' AND ' : ' WHERE ' ). join(' AND ', @extra_sql) + if @extra_sql; +$extra_sql .= ' GROUP BY path ' + if $cgi->param('group_by') eq 'path'; +warn $extra_sql; + +my $query = { + 'select' => join(' , ', + 'path', + 'COUNT(*) AS num_entries', + 'ROUND(AVG(COALESCE(render_seconds,0)),1) '. + ' AS avg_render_seconds', + ), + 'table' => 'access_user_log', + 'hashref' => \%hashref, + 'extra_sql' => $extra_sql, +}; + +#uuh, no, need dates and usernum too, but whatever for now +my $count_query = 'SELECT COUNT(DISTINCT path) FROM access_user_log'; + +</%init> diff --git a/httemplate/search/report_access_user_log.html b/httemplate/search/report_access_user_log.html new file mode 100644 index 000000000..0c8acb35e --- /dev/null +++ b/httemplate/search/report_access_user_log.html @@ -0,0 +1,37 @@ +<& /elements/header.html, 'Access log' &> + +<FORM ACTION="access_user_log.html" METHOD="GET"> + +<TABLE BGCOLOR="#cccccc" CELLSPACING=0> + + <INPUT TYPE="hidden" NAME="group_by" VALUE="<% $group_by %>"> + + <TR> + <TH CLASS="background" COLSPAN=2 ALIGN="left"> + <FONT SIZE="+1">Search options</FONT> + </TH> + </TR> + + <& /elements/tr-input-beginning_ending.html &> + + <& /elements/tr-select-user.html &> + +</TABLE> + +<BR> +<INPUT TYPE="submit" VALUE="Get Report"> + +</FORM> + +<& /elements/footer.html &> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $group_by = ''; +if ( $cgi->param('group_by') =~ /^(\w+)$/ ) { + $group_by = $1; +} + +</%init> |