X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fradius_usergroup.pm;h=cf3cdfa01a9726a1315122194f19c8e01b2ab047;hp=9bba057c959fbdfb7e3d3e2249cbd247425c0d07;hb=3adb46fccf9f631e188ea5383bd147b340477639;hpb=673b9a458d9138523026963df6fa3b4683e09bae diff --git a/FS/FS/radius_usergroup.pm b/FS/FS/radius_usergroup.pm index 9bba057c9..cf3cdfa01 100644 --- a/FS/FS/radius_usergroup.pm +++ b/FS/FS/radius_usergroup.pm @@ -1,11 +1,10 @@ package FS::radius_usergroup; +use base qw(FS::Record); use strict; -use vars qw( @ISA ); use FS::Record qw( qsearch qsearchs ); use FS::svc_acct; - -@ISA = qw(FS::Record); +use FS::radius_group; =head1 NAME @@ -29,8 +28,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 +37,7 @@ fields are currently supported: =item svcnum - Account (see L). -=item groupname - group name +=item groupnum - RADIUS group (see L). =back @@ -95,35 +94,69 @@ 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 -=head1 BUGS +Returns the RADIUS group associated with this record (see L). + +=cut -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