Rev 1295 | Blame | Compare with Previous | Last modification | View Log | RSS feed
################################################################################ Copyright (c) 2003 Jason Remillard. All rights reserved.## This program is free software; you can redistribute it and modify it under# the terms of the GPL.# Action object for displaying a metrics report.package Codestriker::Action::MetricsReport;use strict;use Codestriker::Http::Template;use Codestriker::Model::Topic;use Codestriker::Model::MetricStats;# If the input is valid, produce a metrics report.sub process($$$) {my ($type, $http_input, $http_response) = @_;$http_response->generate_header(reload=>0, cache=>0);my $query = $http_response->get_query();my $url_builder = Codestriker::Http::UrlBuilder->new($query);my $vars = {};my @users_metrics =Codestriker::Model::MetricStats::get_basic_user_metrics();# Anti-spam the email addresses.foreach my $user (@users_metrics) {$user->{name} = Codestriker->filter_email($user->{name});}$vars->{user_metrics} = \@users_metrics;# Get the comment metrics.my @comment_metrics =Codestriker::Model::MetricStats::get_comment_metrics();$vars->{comment_metrics} = \@comment_metrics;$vars->{comment_metrics_month_names} =$comment_metrics[0]->{results}->[0]->{monthnames};# Get the topic metrics.my @topic_metrics = Codestriker::Model::MetricStats::get_topic_metrics();$vars->{topic_metrics} = \@topic_metrics;$vars->{topic_metrics_month_names} = $topic_metrics[0]->{monthnames};$vars->{download_url} = $url_builder->metric_report_download_raw_data();my $template = Codestriker::Http::Template->new("metricsreport");$template->process($vars);$http_response->generate_footer();}sub process_download($$$) {my ($type, $http_input, $http_response) = @_;my $query = $http_response->get_query();print $query->header(-type=>'text/plain',-charset=>"UTF-8",-attachment=>"metrics.csv",-filename=>"metrics.csv");my $columns = Codestriker::Model::MetricStats::get_download_headers();print join "\t", @{$columns->{base}},@{$columns->{comment}},@{$columns->{topic}}, @{$columns->{user}};print "\n";my @topicids = Codestriker::Model::MetricStats::get_topic_ids();foreach my $id (@topicids) {my @line = Codestriker::Model::MetricStats::get_raw_metric_data($id->[0], $columns);print join "\t", @line;print "\n";}}1;