InvoiceItem, OrderItem, DeliveryOrderItem: diverse Fremdschlüssel eingeführt
[kivitendo-erp.git] / SL / MoreCommon.pm
index ded6ddf..13d421b 100644 (file)
@@ -4,7 +4,7 @@ require Exporter;
 our @ISA = qw(Exporter);
 
 our @EXPORT    = qw(save_form restore_form compare_numbers any cross);
 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;
 
 use List::MoreUtils qw(zip);
 use YAML;
@@ -61,8 +61,7 @@ sub compare_numbers {
 
   my ($a, $a_unit, $b, $b_unit) = @_;
 
 
   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();
 
   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);
 }
 
   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__
 1;
 
 __END__
@@ -172,7 +192,7 @@ SL::MoreCommon.pm - helper functions
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-this is a collection of helper functions used in Lx-Office.
+this is a collection of helper functions used in kivitendo.
 Most of them are either obvious or too obscure to care about unless you really have to.
 The exceptions are documented here.
 
 Most of them are either obvious or too obscure to care about unless you really have to.
 The exceptions are documented here.
 
@@ -181,6 +201,7 @@ The exceptions are documented here.
 =over 4
 
 =item save_form
 =over 4
 
 =item save_form
+
 =item restore_form
 
 A lot of the old sql-ledger routines are strictly procedural. They search for params in the $form object, do stuff with it, and return a status code.
 =item restore_form
 
 A lot of the old sql-ledger routines are strictly procedural. They search for params in the $form object, do stuff with it, and return a status code.