]> git.imager.perl.org - bse.git/blame - site/cgi-bin/modules/BSE/Report.pm
add version numbers to all modules
[bse.git] / site / cgi-bin / modules / BSE / Report.pm
CommitLineData
988d8721
TC
1package BSE::Report;
2use strict;
3
cb7fd78d
TC
4our $VERSION = "1.000";
5
988d8721
TC
6use base 'DevHelp::Report';
7
8sub 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
26sub 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
43sub 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
9615cff6
TC
60sub url_show_args {
61 s_show => 1
62}
63
988d8721 641;