diff options
-rw-r--r-- | FS/FS/Record.pm | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 8f75734..1b7ac8a 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -402,13 +402,31 @@ sub qsearch { get_real_fields($table, $record, \@real_fields)); } - $statement .= " $extra_sql" if defined($extra_sql); + if( defined($extra_sql) ){ + if( $statement =~ /\sWHERE\s/i ){ + if( $extra_sql =~ /^\s*AND /i ){ + # correct format + }elsif($extra_sql =~ /^\s*WHERE /i ){ + $extra_sql =~ s/WHERE /AND /i; + }else{ + $extra_sql = " AND $extra_sql"; + } + }else{ + if( $extra_sql =~ /^\s*AND /i ){ + $extra_sql =~ s/AND /WHERE /i; + }elsif($extra_sql =~ /^\s*WHERE /i ){ + # correct format + }else{ + $extra_sql = " WHERE $extra_sql"; + } + } + $statement .= " $extra_sql"; + } $statement .= " $order_by" if defined($order_by); push @statement, $statement; warn "[debug]$me $statement\n" if $DEBUG > 1 || $debug; - foreach my $field ( grep defined( $record->{$_} ) && $record->{$_} ne '', @real_fields |