[Rt-commit] rt branch, 4.4/use-status-active, updated. rt-4.4.0-60-g1f058e0

Shawn Moore shawn at bestpractical.com
Wed Feb 24 16:02:24 EST 2016


The branch, 4.4/use-status-active has been updated
       via  1f058e09d9ce360b829ac211b0dfe8d30bf73195 (commit)
      from  8f1c412b39c66c92708403dd0e417a1b877db279 (commit)

Summary of changes:
 lib/RT/Tickets.pm | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

- Log -----------------------------------------------------------------
commit 1f058e09d9ce360b829ac211b0dfe8d30bf73195
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Wed Feb 24 20:56:49 2016 +0000

    Quote lifecycle and status names for Status = '__Active__'

diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index 2e930cc..38c7609 100644
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -2980,6 +2980,12 @@ sub _parser {
 
     state ( $active_status_node, $inactive_status_node );
 
+    my $escape_quotes = sub {
+        my $text = shift;
+        $text =~ s{(['\\])}{\\$1}g;
+        return $text;
+    };
+
     $tree->traverse(
         sub {
             my $node = shift;
@@ -3001,15 +3007,16 @@ sub _parser {
 
                     my $sql;
                     if ( keys %lifecycle == 1 ) {
-                        $sql = join ' OR ', map { qq{ Status = "$_" } } map { @$_ } values %lifecycle;
+                        $sql = join ' OR ', map { qq{ Status = '$_' } } map { $escape_quotes->($_) } map { @$_ } values %lifecycle;
                     }
                     else {
                         my @inactive_sql;
                         for my $name ( keys %lifecycle ) {
+                            my $escaped_name = $escape_quotes->($name);
                             my $inactive_sql =
-                                qq{Lifecycle = "$name"}
+                                qq{Lifecycle = '$escaped_name'}
                               . ' AND ('
-                              . join( ' OR ', map { qq{ Status = "$_" } } @{ $lifecycle{ $name } } ) . ')';
+                              . join( ' OR ', map { qq{ Status = '$_' } } map { $escape_quotes->($_) } @{ $lifecycle{ $name } } ) . ')';
                             push @inactive_sql, qq{($inactive_sql)};
                         }
                         $sql = join ' OR ', @inactive_sql;
@@ -3040,15 +3047,16 @@ sub _parser {
 
                     my $sql;
                     if ( keys %lifecycle == 1 ) {
-                        $sql = join ' OR ', map { qq{ Status = "$_" } } map { @$_ } values %lifecycle;
+                        $sql = join ' OR ', map { qq{ Status = '$_' } } map { $escape_quotes->($_) } map { @$_ } values %lifecycle;
                     }
                     else {
                         my @active_sql;
                         for my $name ( keys %lifecycle ) {
+                            my $escaped_name = $escape_quotes->($name);
                             my $active_sql =
-                                qq{Lifecycle = "$name"}
+                                qq{Lifecycle = '$escaped_name'}
                               . ' AND ('
-                              . join( ' OR ', map { qq{ Status = "$_" } } @{ $lifecycle{ $name } } ) . ')';
+                              . join( ' OR ', map { qq{ Status = '$_' } } map { $escape_quotes->($_) } @{ $lifecycle{ $name } } ) . ')';
                             push @active_sql, qq{($active_sql)};
                         }
                         $sql = join ' OR ', @active_sql;

-----------------------------------------------------------------------


More information about the rt-commit mailing list