X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fradius_usergroup.pm;h=8085fe805b0d6610d5acc0aade6f2b1dd81ace63;hp=9bba057c959fbdfb7e3d3e2249cbd247425c0d07;hb=395cc72629d31c8dcd138acf423e66d2d73d89d2;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984 diff --git a/FS/FS/radius_usergroup.pm b/FS/FS/radius_usergroup.pm index 9bba057c9..8085fe805 100644 --- a/FS/FS/radius_usergroup.pm +++ b/FS/FS/radius_usergroup.pm @@ -4,6 +4,7 @@ use strict; use vars qw( @ISA ); use FS::Record qw( qsearch qsearchs ); use FS::svc_acct; +use FS::radius_group; @ISA = qw(FS::Record); @@ -29,8 +30,8 @@ FS::radius_usergroup - Object methods for radius_usergroup records =head1 DESCRIPTION An FS::radius_usergroup object links an account (see L) with a -RADIUS group. FS::radius_usergroup inherits from FS::Record. The following -fields are currently supported: +RADIUS group (see L). FS::radius_usergroup inherits from +FS::Record. The following fields are currently supported: =over 4 @@ -38,7 +39,7 @@ fields are currently supported: =item svcnum - Account (see L). -=item groupname - group name +=item groupnum - RADIUS group (see L). =back @@ -95,35 +96,74 @@ and replace methods. sub check { my $self = shift; + my $svcnum = $self->svcnum; + die "radius_usergroup.groupname is deprecated" if $self->groupname; $self->ut_numbern('usergroupnum') - || $self->ut_number('svcnum') - || $self->ut_foreign_key('svcnum','svc_acct','svcnum') - || $self->ut_text('groupname') + || ( $self->ut_foreign_key('svcnum','svc_acct','svcnum') + && $self->ut_foreign_key('svcnum','svc_broadband','svcnum') + && "Can't find radius_usergroup.svcnum $svcnum in svc_acct.svcnum or svc_broadband.svcnum" ) + || $self->ut_foreign_key('groupnum','radius_group','groupnum') || $self->SUPER::check ; } -=item svc_acct +=item svc_x -Returns the account associated with this record (see L). +Returns the account associated with this record (see L and +L). =cut sub svc_acct { my $self = shift; - qsearchs('svc_acct', { svcnum => $self->svcnum } ); + qsearchs('svc_acct', { svcnum => $self->svcnum } ) || + qsearchs('svc_broadband', { svcnum => $self->svcnum } ) } -=back +=item radius_group + +Returns the RADIUS group associated with this record (see L). -=head1 BUGS +=cut -Don't let 'em get you down. +sub radius_group { + my $self = shift; + qsearchs('radius_group', { 'groupnum' => $self->groupnum } ); +} + +sub _upgrade_data { #class method + my ($class, %opts) = @_; + + my %group_cache = map { $_->groupname => $_->groupnum } + qsearch('radius_group', {}); + + my @radius_usergroup = qsearch('radius_usergroup', {} ); + my $error = ''; + foreach my $rug ( @radius_usergroup ) { + my $groupname = $rug->groupname; + next unless $groupname; + unless(defined($group_cache{$groupname})) { + my $g = new FS::radius_group { + 'groupname' => $groupname, + 'description' => $groupname, + }; + $error = $g->insert; + die $error if $error; + $group_cache{$groupname} = $g->groupnum; + } + $rug->groupnum($group_cache{$groupname}); + $rug->groupname(''); + $error = $rug->replace; + die $error if $error; + } +} + +=back =head1 SEE ALSO -L, L, schema.html from the base documentation. +L, L, L, schema.html from the base documentation. =cut