X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fradius_usergroup.pm;h=2de142397b9c3a7e12baba5c0b2730e66420ef25;hb=b79a8cb932946c849328a3c117c35821d9d21e66;hp=9bba057c959fbdfb7e3d3e2249cbd247425c0d07;hpb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15;p=freeside.git diff --git a/FS/FS/radius_usergroup.pm b/FS/FS/radius_usergroup.pm index 9bba057c9..2de142397 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 @@ -96,10 +97,11 @@ and replace methods. sub check { my $self = shift; + 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('groupnum','radius_group','groupnum') || $self->SUPER::check ; } @@ -115,15 +117,49 @@ sub svc_acct { qsearchs('svc_acct', { svcnum => $self->svcnum } ); } -=back +=item radius_group + +Returns the RADIUS group associated with this record (see L). + +=cut -=head1 BUGS +sub radius_group { + my $self = shift; + qsearchs('radius_group', { 'groupnum' => $self->groupnum } ); +} -Don't let 'em get you down. +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