% if ( @error ) { <& /elements/errorpage-popup.html, @error &> % } else { <& /elements/header-popup.html, "Template ${actioned}" &> % } <%init> my $curuser = $FS::CurrentUser::CurrentUser; my $conf = FS::Conf->new; my @error; my $actioned; die "access denied" unless $curuser->access_right([ 'Edit templates', 'Edit global templates' ]); my $msgnum = $cgi->param('msgnum'); $msgnum =~ /^\d+$/ or die "bad msgnum '$msgnum'"; my $msg_template = qsearchs({ table => 'msg_template', hashref => { msgnum => $msgnum }, extra_sql => ' AND '. $curuser->agentnums_sql(null_right => 'Edit global templates'), }); die "unknown msgnum $msgnum" unless $msg_template; if ( $cgi->param('enable') ) { $actioned = 'enabled'; $msg_template->set('disabled' => ''); } else { $actioned = 'disabled'; # make sure it's not in use anywhere my @inuse; # notice, letter, notice_to events (if they're enabled) my @events = qsearch({ table => 'part_event_option', addl_from => ' JOIN part_event USING (eventpart)', hashref => { optionname => 'msgnum', optionvalue => $msgnum, }, extra_sql => ' AND disabled IS NULL', }); push @inuse, map {"Billing event #".$_->eventpart} @events; # send_email and rt_ticket exports my @exports = qsearch( 'part_export_option', { optionname => { op => 'LIKE', value => '%_template' }, optionvalue => $msgnum, }); push @inuse, map {"Export #".$_->exportnum} @exports; # payment_receipt_msgnum, decline_msgnum, etc. my @confs = qsearch( 'conf', { name => { op => 'LIKE', value => '%_msgnum' }, value => $msgnum, }); push @inuse, map {"Configuration setting ".$_->name} @confs; # XXX pending queue jobs? if (@inuse) { @error = ("This template is in use. Check the following settings:", @inuse); } # good to go $msg_template->set(disabled => 'Y'); } if (!@error) { my $error = $msg_template->replace; push @error, $error if $error; }