From 25217cca99ca6471ed976c5328b1d9a402b19657 Mon Sep 17 00:00:00 2001 From: Daniel Tiefnig Date: Thu, 4 Mar 2010 01:15:22 +0000 Subject: [PATCH] some more number normalizing fixes for CF, CLI and SD --- lib/admin/Controller/subscriber.pm | 32 +++++++++++++----------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 2bc253c..71291d7 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -560,16 +560,16 @@ sub preferences : Local { $$preferences{$$pref{attribute}} = 'fax2mail'; } else { $$preferences{$$pref{attribute}} =~ s/^sip://i; - if($$preferences{$$pref{attribute}} =~ /^\+?\d+\@/) { - $$preferences{$$pref{attribute}} =~ s/\@.*$//; + if($$preferences{$$pref{attribute}} =~ /^\+?\d+$/) { + my $scc = $c->session->{subscriber}{cc}; + $$preferences{$$pref{attribute}} =~ s/^\+*/+/; + $$preferences{$$pref{attribute}} =~ s/^\+$scc/0/; } } } } elsif($$pref{attribute} eq 'cli') { if(defined $$preferences{$$pref{attribute}} and length $$preferences{$$pref{attribute}}) { $$preferences{$$pref{attribute}} =~ s/^sip://i; - $$preferences{$$pref{attribute}} =~ s/\@.*$// - if $$preferences{$$pref{attribute}} =~ /^\+?\d+\@/; } } elsif(!$c->stash->{ncos_levels} and ($$pref{attribute} eq 'ncos' or $$pref{attribute} eq 'adm_ncos')) { my $ncoslvl; @@ -601,9 +601,8 @@ sub preferences : Local { if (eval { @$speed_dial_slots }) { foreach my $sdentry (sort {$a->{id} <=> $b->{id}} @$speed_dial_slots) { $$sdentry{destination} =~ s/^sip://i; - if($$sdentry{destination} =~ /^\+?\d+\@/ or $$sdentry{destination} =~ /^\+?\d+$/) { + if($$sdentry{destination} =~ /^\+?\d+$/) { my $scc = $c->session->{subscriber}{cc}; - $$sdentry{destination} =~ s/\@.*$//; $$sdentry{destination} =~ s/^\+*/+/; $$sdentry{destination} =~ s/^\+$scc/0/; } @@ -629,7 +628,7 @@ sub preferences : Local { ref $c->session->{subscriber}{fax_preferences}{destinations} eq 'ARRAY') { for(@{$c->session->{subscriber}{fax_preferences}{destinations}}) { - if($$_{destination} =~ /^\d+$/) { + if($$_{destination} =~ /^\+?\d+$/) { my $scc = $c->session->{subscriber}{cc}; $$_{destination} =~ s/^\+*/+/; $$_{destination} =~ s/^\+$scc/0/; @@ -723,13 +722,11 @@ sub update_preferences : Local { if($fw_target =~ /^\+?\d+$/) { if($fw_target =~ /^\+[1-9][0-9]+$/) { - $fw_target = 'sip:'. $fw_target .'@'. $c->session->{subscriber}{domain}; + $fw_target =~ s/^\+//; } elsif($fw_target =~ /^00[1-9][0-9]+$/) { - $fw_target =~ s/^00/+/; - $fw_target = 'sip:'. $fw_target .'@'. $c->session->{subscriber}{domain}; + $fw_target =~ s/^00//; } elsif($fw_target =~ /^0[1-9][0-9]+$/) { - $fw_target =~ s/^0/'+'.$c->session->{subscriber}{cc}/e; - $fw_target = 'sip:'. $fw_target .'@'. $c->session->{subscriber}{domain}; + $fw_target =~ s/^0/$c->session->{subscriber}{cc}/e; } else { $messages{$fwtype} = 'Client.Voip.MalformedNumber'; $fw_target = $c->request->params->{$fwtype .'_sipuri'}; @@ -762,8 +759,8 @@ sub update_preferences : Local { ### outgoing calls ### $$preferences{cli} = $c->request->params->{cli} or undef; - if(defined $$preferences{cli} and $$preferences{cli} =~ /^\d+$/) { - $$preferences{cli} = 'sip:'.$$preferences{cli}.'@'.$c->session->{subscriber}{domain}; + if(defined $$preferences{cli} and $$preferences{cli} =~ /^\+?\d+$/) { + $$preferences{cli} =~ s/^\++//; } $$preferences{clir} = $c->request->params->{clir} ? 1 : undef; @@ -1236,9 +1233,8 @@ sub edit_speed_dial_slots : Local { #delete $c->session->{updateerrmsg}; } else { $$sdentry{destination} =~ s/^sip://i; - if($$sdentry{destination} =~ /^\+?\d+\@/ or $$sdentry{destination} =~ /^\+?\d+$/) { + if($$sdentry{destination} =~ /^\+?\d+$/) { my $scc = $c->session->{subscriber}{cc}; - $$sdentry{destination} =~ s/\@.*$//; $$sdentry{destination} =~ s/^\+*/+/; $$sdentry{destination} =~ s/^\+$scc/0/; } @@ -1506,9 +1502,9 @@ sub edit_destlist : Local { my $bg = ''; my $i = 1; foreach my $entry (sort { $$a{destination} cmp $$b{destination} } @$destlist) { - if($$entry{destination} =~ /^\d+$/) { + if($$entry{destination} =~ /^\+?\d+$/) { my $scc = $c->session->{subscriber}{cc}; - $$entry{destination} = '+'.$$entry{destination}; + $$entry{destination} =~ s/^\+*/+/; $$entry{destination} =~ s/^\+$scc/0/; } push @{$c->stash->{list_data}}, { %$entry,