CPAN-Testers-WWW-Reports

 view release on metacpan or  search on metacpan

vhost/cgi-bin/view-report.cgi  view on Meta::CPAN

#    for my $key (keys %rules) {
#        my $val = $cgi->param("${key}_pref");
#        $cgiparams{$key} = $1   if($val =~ $rules{$key});
#    }

    LogDebug('DEBUG: cgiparams=',Dumper(\%cgiparams));
    audit("AUDIT[$$]: stop init_options");
}

sub process_report {
    audit("AUDIT[$$]: start retrieve_report - $cgiparams{id}");
    retrieve_report();
    audit("AUDIT[$$]: stop retrieve_report");
    audit("AUDIT[$$]: start print_report");
    print_report();
    audit("AUDIT[$$]: stop print_report");
}

sub retrieve_report {
    $tvars{body}{result} = '""';

    if($cgiparams{id} =~ /^\d+$/) {
        my @rows = $dbi->GetQuery('hash','GetStatReport',$cgiparams{id});

        if(@rows) {
            if($rows[0]->{guid} =~ /^[0-9]+\-[-\w]+$/) {
                my $id = guid_to_nntp($rows[0]->{guid});
                _parse_nntp_report($id);
            } else {
                $cgiparams{id} = $rows[0]->{guid};
                _parse_guid_report();
            }
        } else {
            #$tvars{errcode} = 'NEXT';
            #$tvars{command} = 'cpan-distunk';
        }
   } elsif($cgiparams{id} =~ /^[\w-]+$/) {
        my $id = guid_to_nntp($cgiparams{id});
        if($id) {
            _parse_nntp_report($id);
        } else {
            _parse_guid_report();
        }
    } else {
        $cgiparams{id} =~ s/[\w-]+//g;
    }

    unless($tvars{article}{article}) {
        if($cgiparams{id} =~ /^\d+$/) {
            $tvars{article}{id} = $cgiparams{id};
        } else {
            $tvars{article}{guid} = $cgiparams{id};
        }
    }

    if($cgiparams{json}) {
        $tvars{body}{success} = $tvars{body}{result} && $tvars{body}{result} ne '""' ? 1 : 0;
        $tvars{layout}  = 'public/layout.json';
    } elsif($cgiparams{raw}) {
        $tvars{article}{raw} = $cgiparams{raw};
        $tvars{layout} = 'public/popup.html'
    } else {
        $tvars{layout} = 'public/layout-wide.html'
    }
}

sub print_report {
    $tvars{content}     = 'cpan/report-view.html';
    $tvars{siteversion} = $VERSION;
    $tvars{labversion}  = $Labyrinth::VERSION;
    Publish();
}

#----------------------------------------------------------------------------
# Private Interface Functions

sub _parse_nntp_report {
    my $nntpid = shift;
    my @rows;

    unless($nntpid) {
       @rows = $dbi->GetQuery('hash','GetStatReport',$cgiparams{id});
       return  unless(@rows);
       $nntpid = guid_to_nntp($rows[0]->{guid});
    }

    @rows = $dbi->GetQuery('hash','GetArticle',$nntpid);
       return  unless(@rows);

    if($rows[0]->{article} =~ /Content-Transfer-Encoding: quoted-printable/is) {
        my ($head,$body) = split(/\n\n/,$rows[0]->{article},2);
        $body = decode_qp($body);
        $rows[0]->{article} = $head . "\n\n" . $body;
    }

    $rows[0]->{article} = demoroniser($rows[0]->{article});
    $rows[0]->{article} = SafeHTML($rows[0]->{article});
    $tvars{article} = $rows[0];
    ($tvars{article}{head},$tvars{article}{body}) = split(/\n\n/,$rows[0]->{article},2);

    my $object = CPAN::Testers::Common::Article->new($rows[0]->{article});
    return  unless($object);

    $tvars{article}{nntp}    = 1;
    $tvars{article}{id}      = $cgiparams{id};
    $tvars{article}{body}    = $object->body;
    $tvars{article}{subject} = $object->subject;
    $tvars{article}{from}    = $object->from;
    $tvars{article}{from}    =~ s/\@.*//;
    $tvars{article}{post}    = $object->postdate;

    my @date = $object->date =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/;
    $tvars{article}{date}    = sprintf "%04d-%02d-%02dT%02d:%02d:00Z", @date;

    return      if($tvars{article}{subject} =~ /Re:/i);
    return      unless($tvars{article}{subject} =~ /(CPAN|FAIL|PASS|NA|UNKNOWN)\s+/i);

    my $state = lc $1;

    if($state eq 'cpan') {
        if($object->parse_upload()) {



( run in 0.587 second using v1.01-cache-2.11-cpan-364913b4093 )