%# BEGIN BPS TAGGED BLOCK {{{
%#
%# COPYRIGHT:
%#
%# This software is Copyright (c) 1996-2026 Best Practical Solutions, LLC
%#                                          <sales@bestpractical.com>
%#
%# (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
%# you are the copyright holder for those contributions and you grant
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
%# 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 }}}
<%INIT>

if ( $BaseQuery && $Query ) {
    $Query = join ' AND ', map "( $_ )", $BaseQuery, $Query;
}
else {
    $Query ||= $BaseQuery;
}

$BaseURL = RT::IR->HREFTo("$BaseURL") unless $BaseURL =~ m{^/};
$BaseURL .= ( $BaseURL =~ /\?/ )? '&': '?' unless $BaseURL =~ m{[&?]$};

my $collection = RT::Tickets->new( $session{'CurrentUser'} );
$collection->FromSQL( $Query );

my $result = $m->scomp( '/Elements/CollectionList',
    %ARGS,
    Collection     => $collection,
    Query          => $Query,
    OrderBy        => $OrderBy,
    Order          => $Order,
    Rows           => $Rows,
    Page           => $Page,
    BaseURL        => $BaseURL,
    ShowNavigation => $ShowNavigation,
    AllowSorting   => $AllowSorting,
);

if ( $UpdateSession ) {
    $session{'tickets'} = $collection;
    $session{'CurrentSearchHash'} = {
        Format      => $Format,
        Query       => $Query,
        Page        => $Page,
        Order       => $Order,
        OrderBy     => $OrderBy,
        RowsPerPage => $Rows
    };
}

my $found = $collection->Count;
if ( $found || $ShowEmpty ) {
    $m->out( $result );
}
else {
    $m->out( $m->interp->apply_escapes($EmptyLabel, 'h') )
        if $EmptyLabel;
}
return $found;
</%INIT>
<%ARGS>
$BaseQuery       => ''
$Query           => ''
$Format          => ''
$Rows            => undef
$Page            => 1
$OrderBy         => RT->Config->Get('DefaultSearchResultOrderBy')
$Order           => RT->Config->Get('DefaultSearchResultOrder')

$BaseURL         => RT->Config->Get('WebPath') . '/Search/Results.html'

$ShowEmpty       => 0
$EmptyLabel      => ''
$ShowNavigation  => 0
$AllowSorting    => 1
$UpdateSession   => 0
</%ARGS>
