From: C.J. Adams-Collier Date: Mon, 8 Sep 2014 20:25:10 +0000 (-0700) Subject: ensuring that WHERE or AND is correctly used in "$extra_sql" snippit - FS RT #884 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=b853ec09fb19df91fe0188c5dde9d759333a2503;hp=61c4e7640f905d326b36e61ad3ce81d22a9a663a ensuring that WHERE or AND is correctly used in "$extra_sql" snippit - FS RT #884 --- 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