X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMoreCommon.pm;h=9be3bc8a16c9ef66e096ccb26904d0216f400cc3;hb=0b542b2592c077957d9ccc08ca0cf84886e2b1d2;hp=ded6ddf3253bd93add278775d1082e12b7d335ee;hpb=258bf9ae10f4ad1130e0b5a0a2d834ceb0877d6b;p=kivitendo-erp.git diff --git a/SL/MoreCommon.pm b/SL/MoreCommon.pm index ded6ddf32..9be3bc8a1 100644 --- a/SL/MoreCommon.pm +++ b/SL/MoreCommon.pm @@ -4,7 +4,7 @@ require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(save_form restore_form compare_numbers any cross); -our @EXPORT_OK = qw(ary_union ary_intersect ary_diff listify ary_to_hash); +our @EXPORT_OK = qw(ary_union ary_intersect ary_diff listify ary_to_hash uri_encode uri_decode); use List::MoreUtils qw(zip); use YAML; @@ -61,8 +61,7 @@ sub compare_numbers { my ($a, $a_unit, $b, $b_unit) = @_; - $main::all_units ||= AM->retrieve_units(\%main::myconfig, $main::form); - my $units = $main::all_units; + my $units = AM->retrieve_all_units; if (!$units->{$a_unit} || !$units->{$b_unit} || ($units->{$a_unit}->{base_unit} ne $units->{$b_unit}->{base_unit})) { $main::lxdebug->leave_sub(); @@ -162,6 +161,27 @@ sub ary_to_hash { return zip(@indexes, @values); } +sub uri_encode { + my ($str) = @_; + + $str = Encode::encode('utf-8-strict', $str) if $::locale->is_utf8; + $str =~ s/([^a-zA-Z0-9_.:-])/sprintf("%%%02x", ord($1))/ge; + + return $str; +} + +sub uri_decode { + my ($str) = @_; + + $str =~ tr/+/ /; + $str =~ s/\\$//; + + $str =~ s/%([0-9a-fA-Z]{2})/pack("C",hex($1))/eg; + $str = Encode::decode('utf-8-strict', $str) if $::locale->is_utf8; + + return $str; +} + 1; __END__