sub table { 'part_svc'; }
-=item insert
+=item insert EXTRA_FIELDS_ARRAYREF
Adds this service definition to the database. If there is an error, returns
the error, otherwise returns false.
+TODOC:
+
=item I<svcdb>__I<field> - Default or fixed value for I<field> in I<svcdb>.
=item I<svcdb>__I<field>_flag - defines I<svcdb>__I<field> action: null, `D' for default, or `F' for fixed
+TODOC: EXTRA_FIELDS_ARRAYREF
+
=cut
sub insert {
my $self = shift;
+ my @fields = ();
+ @fields = @{shift(@_)} if @_;
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
foreach my $field (
grep { $_ ne 'svcnum'
&& defined( $self->getfield($svcdb.'__'.$_.'_flag') )
- } fields($svcdb)
+ } (fields($svcdb), @fields)
) {
my $part_svc_column = $self->part_svc_column($field);
my $previous = qsearchs('part_svc_column', {
# check & make sure the svcpart isn't in cust_svc or pkg_svc (in any packages)?
}
-=item replace OLD_RECORD
+=item replace OLD_RECORD [ '1.3-COMPAT' [ , EXTRA_FIELDS_ARRAYREF ] ]
Replaces OLD_RECORD with this one in the database. If there is an error,
returns the error, otherwise returns false.
+TODOC: 1.3-COMPAT
+
+TODOC: EXTRA_FIELDS_ARRAYREF
+
=cut
sub replace {
}
if ( @_ && $_[0] eq '1.3-COMPAT' ) {
+ shift;
+ my @fields = ();
+ @fields = @{shift(@_)} if @_;
+
my $svcdb = $new->svcdb;
foreach my $field (
grep { $_ ne 'svcnum'
&& defined( $new->getfield($svcdb.'__'.$_.'_flag') )
- } fields($svcdb)
+ } (fields($svcdb),@fields)
) {
my $part_svc_column = $new->part_svc_column($field);
my $previous = qsearchs('part_svc_column', {
=head1 VERSION
-$Id: part_svc.pm,v 1.10 2002-03-20 21:31:49 ivan Exp $
+$Id: part_svc.pm,v 1.11 2002-03-23 17:49:01 ivan Exp $
=head1 BUGS
$new->usergroup( [ grep { $groupname ne $_ } @{$new->usergroup} ] );
next;
}
- my $radius_usergroup = qsearch('radius_usergroup', {
+ my $radius_usergroup = qsearchs('radius_usergroup', {
svcnum => $old->svcnum,
groupname => $groupname,
} );
foreach my $group ( @all_groups ) {
$html .= '<OPTION';
- $html .= ' SELECTED' if $sel_groups{$group}--;
+ if ( $sel_groups{$group} ) {
+ $html .= ' SELECTED';
+ $sel_groups{$group} = 0;
+ }
$html .= ">$group</OPTION>\n";
}
foreach my $group ( grep { $sel_groups{$_} } keys %sel_groups ) {
<% foreach my $part_svc ( sort {
$a->getfield('svcpart') <=> $b->getfield('svcpart')
} @part_svc ) {
- my($hashref)=$part_svc->hashref;
- my($svcdb)=$hashref->{svcdb};
+ my $hashref = $part_svc->hashref;
+ my $svcdb = $hashref->{svcdb};
+ my @dfields = fields($svcdb);
+ push @dfields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge
my @fields =
grep { $_ ne 'svcnum' && $part_svc->part_svc_column($_)->columnflag }
- fields($svcdb);
+ @dfields;
- my($rowspan)=scalar(@fields) || 1;
+ my $rowspan = scalar(@fields) || 1;
my $url = "${p}edit/part_svc.cgi?$hashref->{svcpart}";
%>
select_key => 'svcnum',
select_label => 'domain',
},
- 'radius_groups' => {
- desc =>'ICRADIUS/FreeRADIUS groups',
- type =>'radius_usergroup_selector',
- },
+ 'usergroup' => {
+ desc =>'ICRADIUS/FreeRADIUS groups',
+ type =>'radius_usergroup_selector',
+ },
},
'svc_domain' => {
'domain' => 'Domain',
my @fields = defined( $FS::Record::dbdef->table($layer) )
? grep { $_ ne 'svcnum' } fields($layer)
: ();
+ push @fields, 'usergroup' if $layer eq 'svc_acct'; #kludge
foreach my $field (@fields) {
my $part_svc_column = $part_svc->part_svc_column($field);
my $value = $cgi->param('error')
$record->getfield($def->{select_label}). '</OPTION>';
}
$html .= '</SELECT>';
+ } elsif ( $def->{type} eq 'radius_usergroup_selector' ) {
+ $html .= FS::svc_acct::radius_usergroup_selector(
+ [ split(',', $value) ], "${layer}__${field}" );
} else {
$html .= '<font color="#ff0000">unknown type'. $def->{type};
}
my $old = qsearchs('part_svc',{'svcpart'=>$svcpart}) if $svcpart;
+$cgi->param( 'svc_acct__usergroup',
+ join(',', $cgi->param('svc_acct__usergroup') ) );
+
my $new = new FS::part_svc ( {
map {
$_, scalar($cgi->param($_));
# } qw(svcpart svc svcdb)
} ( fields('part_svc'),
map { my $svcdb = $_;
- map { ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' ) }
- fields($svcdb)
+ my @fields = fields($svcdb);
+ push @fields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge
+ map { ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' ) } @fields;
} grep defined( $FS::Record::dbdef->table($_) ),
qw( svc_acct svc_domain svc_acct_sm svc_forward svc_www )
)
my $error;
if ( $svcpart ) {
- $error = $new->replace($old, '1.3-COMPAT');
+ $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ] );
} else {
- $error = $new->insert;
+ $error = $new->insert( [ 'usergroup' ] );
$svcpart=$new->getfield('svcpart');
}