ACLs
[freeside.git] / httemplate / edit / process / router.cgi
1 %local $FS::UID::AutoCommit=0;
2 %
3 %sub check {
4 %  my $error = shift;
5 %  if($error) {
6 %    $cgi->param('error', $error);
7 %    print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
8 %    dbh->rollback;
9 %    exit;
10 %  }
11 %}
12 %
13 %my $error = '';
14 %my $routernum  = $cgi->param('routernum');
15 %my $routername = $cgi->param('routername');
16 %my $old = qsearchs('router', { routernum => $routernum });
17 %my @old_psr;
18 %
19 %my $new = new FS::router {
20 %  map {
21 %    ($_, scalar($cgi->param($_)));
22 %  } fields('router')
23 %};
24 %
25 %if($old) {
26 %  $error = $new->replace($old);
27 %} else {
28 %  $error = $new->insert;
29 %  $routernum = $new->routernum;
30 %}
31 %
32 %check($error);
33 %
34 %if ($old) {
35 %  @old_psr = $old->part_svc_router;
36 %  foreach my $psr (@old_psr) {
37 %    if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
38 %      # do nothing
39 %    } else {
40 %      $error = $psr->delete;
41 %    }
42 %  }
43 %  check($error);
44 %}
45 %
46 %foreach($cgi->param) {
47 %  if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) {
48 %    my $svcpart = $1;
49 %    if(grep {$_->svcpart == $svcpart} @old_psr) {
50 %      # do nothing
51 %    } else {
52 %      my $new_psr = new FS::part_svc_router { svcpart   => $svcpart,
53 %                                              routernum => $routernum };
54 %      $error = $new_psr->insert;
55 %    }
56 %    check($error);
57 %  }
58 %}
59 %
60 %
61 %# Yay, everything worked!
62 %dbh->commit or die dbh->errstr;
63 %print $cgi->redirect(popurl(3). "browse/router.cgi");
64 %
65 <%init>
66
67 die "access denied"
68   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
69
70 </%init>