]> git.imager.perl.org - bse.git/blob - site/cgi-bin/modules/BSE/Report.pm
add version numbers to all modules
[bse.git] / site / cgi-bin / modules / BSE / Report.pm
1 package BSE::Report;
2 use strict;
3
4 our $VERSION = "1.000";
5
6 use base 'DevHelp::Report';
7
8 sub new {
9   my ($class, $req_or_cfg) = @_;
10
11   my ($cfg, $req);
12   if ($req_or_cfg->isa('BSE::Cfg')) {
13     $cfg = $req_or_cfg;
14   }
15   else {
16     $cfg = $req_or_cfg->cfg;
17     $req = $req_or_cfg;
18   }
19   
20   my $work = $class->SUPER::new($cfg, 'reports');
21   $req and $work->{req} = $req;
22
23   return $work;
24 }
25
26 sub list_reports {
27   my ($self) = @_;
28
29   if ($self->{req}) {
30     my %entries = $self->SUPER::list_reports;
31     my @delete;
32     for my $key (keys %entries) {
33       $self->report_accessible($key) or push @delete, $key;
34     }
35     delete @entries{@delete};
36     return %entries;
37   }
38   else {
39     return;
40   }
41 }
42
43 sub report_accessible {
44   my ($self, $report) = @_;
45
46   $self->{req} or return;
47
48   my $rights = $self->report_entry($report, 'bse_rights');
49   defined $rights or $rights = '';
50   $rights =~ tr/ //d;
51   $rights eq '' and return 1; # no controls
52   for my $set (split /\|/, $rights) {
53     grep $self->{req}->user_can($_, -1), split /[,;]/, $set
54       and return 1;
55   }
56
57   return;
58 }
59
60 sub url_show_args {
61   s_show => 1
62 }
63
64 1;