X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FREST%2F1.0%2Fsearch%2Fticket;h=f7b8f4c5a63bb7ae6dac3ff14d4a398d261176a3;hb=e9e0cf0989259b94d9758eceff448666a2e5a5cc;hp=46eb5ffcf18e8b8e08d3d4cca1f226f000871569;hpb=63a268637b2d51a8766412617724b9436439deb6;p=freeside.git diff --git a/rt/share/html/REST/1.0/search/ticket b/rt/share/html/REST/1.0/search/ticket index 46eb5ffcf..f7b8f4c5a 100755 --- a/rt/share/html/REST/1.0/search/ticket +++ b/rt/share/html/REST/1.0/search/ticket @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,7 +43,7 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} %# REST/1.0/search/ticket %# @@ -57,7 +57,7 @@ $fields => undef use RT::Interface::REST; my $output = ""; my $status = "200 Ok"; -my $tickets = new RT::Tickets $session{CurrentUser}; +my $tickets = RT::Tickets->new($session{CurrentUser}); # Parse and validate any field specifications. my $field = RT::Interface::REST->field_spec; @@ -69,7 +69,7 @@ if ($fields) { $output = "Invalid field specification: $fields"; goto OUTPUT; } - @fields = map lc, split /,/, $fields; + @fields = map lc, split /\s*,\s*/, $fields; @fields{@fields} = (); unless (exists $fields{id}) { unshift @fields, "id"; @@ -88,24 +88,29 @@ my ($n, $s); eval { ($n, $s) = $tickets->FromSQL($query); }; -my $sortstring = ""; + if ($orderby) { - $sortstring = 'FIELD => '; + my %args; + my $order = substr($orderby, 0, 1); if ($order eq '+' || $order eq '-') { - $sortstring .= 'substr($orderby, 1)'; - if ($order eq '+') { - $sortstring .= ", ORDER => 'ASC'"; - } elsif ($order eq '-') { - $sortstring .= ", ORDER => 'DESC'"; - } - } else { - $sortstring .= '$orderby'; + # remove the +/- sorting sigil + substr($orderby, 0, 1, ''); + + if ($order eq '+') { + $args{ORDER} = 'ASC'; + } + elsif ($order eq '-') { + $args{ORDER} = 'DESC'; + } } - my $foo = 'FIELD => '; - $foo .= '$orderby'; - $tickets->OrderBy(eval $sortstring); + + $tickets->OrderBy( + FIELD => $orderby, + %args, + ); } + if ($@ || $n == 0) { $s ||= $@; $status = "400 Bad request"; @@ -132,10 +137,11 @@ while (my $ticket = $tickets->Next) { } # Cut off the annoying ticket/ before the id; $key_values->{'id'} = $id; - $output .= join("\t", map {$key_values->{$_}} @$order)."\n"; - + $output .= join("\t", map { ref $key_values->{$_} eq 'ARRAY' ? +join( ', ', @{$key_values->{$_}} ) : $key_values->{$_} } @$order)."\n"; + - } else { + } else { $output .= $ticket->Id . ": ". $ticket->Subject . "\n"; } }