SL::CTI::sanitize_number: nur Ziffern zurückliefern
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 25 Nov 2014 16:56:40 +0000 (17:56 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 26 Nov 2014 10:33:24 +0000 (11:33 +0100)
SL/CTI.pm
t/cti/call_link.t
t/cti/sanitize_number.t

index 8605ff1..3bc1386 100644 (file)
--- a/SL/CTI.pm
+++ b/SL/CTI.pm
@@ -40,9 +40,10 @@ sub sanitize_number {
   my $idp              = $config->{international_dialing_prefix} // '00';
 
   my $number           = $params{number} // '';
-  $number              =~ s/[^0-9+\.-]//g;                                     # delete unsupported characters
+  $number              =~ s/[^0-9+]//g;                                        # delete unsupported characters
   my $countrycode      = $number =~ s/^(?: $idp | \+ ) ( \d{2} )//x ? $1 : ''; # TODO: countrycodes can have more or less than 2 digits
   $number              =~ s/^0//x if $countrycode;                             # kill non standard optional zero after global identifier
+  $number              =~ s{[^0-9]+}{}g;
 
   return '' unless $number;
 
index ce76239..994a348 100644 (file)
@@ -12,11 +12,11 @@ use_ok 'SL::CTI';
 }
 
 is SL::CTI->call_link(number => '0371 5347 620'),        'controller.pl?action=CTI/call&number=03715347620';
-is SL::CTI->call_link(number => '0049(0)421-22232 22'),  'controller.pl?action=CTI/call&number=0049421-2223222';
-is SL::CTI->call_link(number => '+49(0)421-22232 22'),   'controller.pl?action=CTI/call&number=0049421-2223222';
+is SL::CTI->call_link(number => '0049(0)421-22232 22'),  'controller.pl?action=CTI/call&number=00494212223222';
+is SL::CTI->call_link(number => '+49(0)421-22232 22'),   'controller.pl?action=CTI/call&number=00494212223222';
 is SL::CTI->call_link(number => 'Tel: +49 40 809064 0'), 'controller.pl?action=CTI/call&number=0049408090640';
 
 is SL::CTI->call_link(number => '0371 5347 620',        internal => 1), 'controller.pl?action=CTI/call&number=03715347620&internal=1';
-is SL::CTI->call_link(number => '0049(0)421-22232 22',  internal => 1), 'controller.pl?action=CTI/call&number=0049421-2223222&internal=1';
-is SL::CTI->call_link(number => '+49(0)421-22232 22',   internal => 1), 'controller.pl?action=CTI/call&number=0049421-2223222&internal=1';
+is SL::CTI->call_link(number => '0049(0)421-22232 22',  internal => 1), 'controller.pl?action=CTI/call&number=00494212223222&internal=1';
+is SL::CTI->call_link(number => '+49(0)421-22232 22',   internal => 1), 'controller.pl?action=CTI/call&number=00494212223222&internal=1';
 is SL::CTI->call_link(number => 'Tel: +49 40 809064 0', internal => 1), 'controller.pl?action=CTI/call&number=0049408090640&internal=1';
index 639e716..c39aa9a 100644 (file)
@@ -12,6 +12,6 @@ use_ok 'SL::CTI';
 }
 
 is SL::CTI->sanitize_number(number => '0371 5347 620'),        '03715347620';
-is SL::CTI->sanitize_number(number => '0049(0)421-22232 22'),  '0049421-2223222';
-is SL::CTI->sanitize_number(number => '+49(0)421-22232 22'),   '0049421-2223222';
+is SL::CTI->sanitize_number(number => '0049(0)421-22232 22'),  '00494212223222';
+is SL::CTI->sanitize_number(number => '+49(0)421-22232 22'),   '00494212223222';
 is SL::CTI->sanitize_number(number => 'Tel: +49 40 809064 0'), '0049408090640';