X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_broadband.pm;h=d1235246ea50f980a0be9cd64ca9a071898e6531;hb=e3dffa23a03cd9f88946ceb78bc75ada29bc013a;hp=07821f9f572918820895f125c29f18cde3a0a320;hpb=d573497e75bd5bbc65915be4b441b6f162cc9808;p=freeside.git diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index 07821f9f5..d1235246e 100755 --- a/FS/FS/svc_broadband.pm +++ b/FS/FS/svc_broadband.pm @@ -97,7 +97,13 @@ sub table_info { 'speed_down' => 'Maximum download speed for this service in Kbps. 0 denotes unlimited.', 'speed_up' => 'Maximum upload speed for this service in Kbps. 0 denotes unlimited.', 'ip_addr' => 'IP address. Leave blank for automatic assignment.', - 'blocknum' => 'Address block.', + 'blocknum' => { 'label' => 'Address block', + 'type' => 'select', + 'select_table' => 'addr_block', + 'select_key' => 'blocknum', + 'select_label' => 'cidr', + 'disable_inventory' => 1, + }, }, }; } @@ -114,6 +120,10 @@ sub search_sql { my( $class, $string ) = @_; if ( $string =~ /^(\d{1,3}\.){3}\d{1,3}$/ ) { $class->search_sql_field('ip_addr', $string ); + }elsif ( $string =~ /^([a-fA-F0-9]{12})$/ ) { + $class->search_sql_field('mac_addr', uc($string)); + }elsif ( $string =~ /^(([a-fA-F0-9]{1,2}:){5}([a-fA-F0-9]{1,2}))$/ ) { + $class->search_sql_field('mac_addr', uc("$2$3$4$5$6$7") ); } else { '1 = 0'; #false } @@ -200,8 +210,8 @@ sub check { || $self->ut_ipn('ip_addr') || $self->ut_hexn('mac_addr') || $self->ut_hexn('auth_key') - || $self->ut_sfloatn('latitude') - || $self->ut_sfloatn('longitude') + || $self->ut_coordn('latitude', -90, 90) + || $self->ut_coordn('longitude', -180, 180) || $self->ut_sfloatn('altitude') || $self->ut_textn('vlan_profile') ; @@ -210,13 +220,6 @@ sub check { if($self->speed_up < 0) { return 'speed_up must be positive'; } if($self->speed_down < 0) { return 'speed_down must be positive'; } - if($self->latitude < -90 || $self->latitude > 90) { - return 'latitude must be between -90 and 90'; - } - if($self->longitude < -180 || $self->longitude > 180) { - return 'longitude must be between -180 and 180'; - } - if (not($self->ip_addr) or $self->ip_addr eq '0.0.0.0') { my $next_addr = $self->addr_block->next_free_addr; if ($next_addr) { @@ -256,7 +259,7 @@ is /32. sub NetAddr { my $self = shift; - return new NetAddr::IP ($self->ip_addr); + new NetAddr::IP ($self->ip_addr); } =item addr_block @@ -267,8 +270,7 @@ Returns the FS::addr_block record (i.e. the address block) for this broadband se sub addr_block { my $self = shift; - - return qsearchs('addr_block', { blocknum => $self->blocknum }); + qsearchs('addr_block', { blocknum => $self->blocknum }); } =back @@ -281,8 +283,7 @@ Returns a list of allowed FS::router objects. sub allowed_routers { my $self = shift; - - return map { $_->router } qsearch('part_svc_router', { svcpart => $self->svcpart }); + map { $_->router } qsearch('part_svc_router', { svcpart => $self->svcpart }); } =head1 BUGS