diff options
Diffstat (limited to 'LedgerSMB/DBObject.pm')
-rw-r--r-- | LedgerSMB/DBObject.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/LedgerSMB/DBObject.pm b/LedgerSMB/DBObject.pm index 2a8d976b..0691489a 100644 --- a/LedgerSMB/DBObject.pm +++ b/LedgerSMB/DBObject.pm @@ -29,6 +29,11 @@ arguments. =item __validate__ is called on every new() invocation. It is blank in this module but can be overridden in decendant modules. +=item _db_array_scalars(@elements) creates a db array from scalars. + +=item _db_array_literal(@elements) creates a multiple dimension db array from + preparsed db arrays or other data which does not need to be escaped. + =back =head1 Copyright (C) 2007, The LedgerSMB core team. @@ -274,4 +279,31 @@ sub _parse_array { return @return_array; } +sub _db_array_scalars { + my $self = shift @_; + my @args = @_; + for my $arg (@args){ + $arg =~ s/(["{},])/\\$1/g; + if ($arg =~ /(\s|\\)/){ + $arg = qq|"$arg"|; + } + } + return _db_array_literal(@args); +} + +sub _db_array_literal { + my $self = shift @_; + my @args = @_; + my $return_string = '{}'; + for my $arg (@args){ + if ($return_string eq '{}'){ + $return_string = "{$arg}"; + } + else { + $return_string =~ s/\}$/,$arg\}/ + } + } + return $return_string; +} + 1; |