From b853ec09fb19df91fe0188c5dde9d759333a2503 Mon Sep 17 00:00:00 2001 From: "C.J. Adams-Collier" Date: Mon, 8 Sep 2014 13:25:10 -0700 Subject: [PATCH] ensuring that WHERE or AND is correctly used in "$extra_sql" snippit - FS RT #884 --- FS/FS/Record.pm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 8f7573443..1b7ac8a7c 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 -- 2.11.0