1# BEGIN BPS TAGGED BLOCK {{{ 2# 3# COPYRIGHT: 4# 5# This software is Copyright (c) 1996-2021 Best Practical Solutions, LLC 6# <sales@bestpractical.com> 7# 8# (Except where explicitly superseded by other copyright notices) 9# 10# 11# LICENSE: 12# 13# This work is made available to you under the terms of Version 2 of 14# the GNU General Public License. A copy of that license should have 15# been provided with this software, but in any event can be snarfed 16# from www.gnu.org. 17# 18# This work is distributed in the hope that it will be useful, but 19# WITHOUT ANY WARRANTY; without even the implied warranty of 20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21# General Public License for more details. 22# 23# You should have received a copy of the GNU General Public License 24# along with this program; if not, write to the Free Software 25# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 26# 02110-1301 or visit their web page on the internet at 27# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. 28# 29# 30# CONTRIBUTION SUBMISSION POLICY: 31# 32# (The following paragraph is not intended to limit the rights granted 33# to you to modify and distribute this software under the terms of 34# the GNU General Public License and is only of importance to you if 35# you choose to contribute your changes and enhancements to the 36# community by submitting them to Best Practical Solutions, LLC.) 37# 38# By intentionally submitting any modifications, corrections or 39# derivatives to this work, or any other work intended for use with 40# Request Tracker, to Best Practical Solutions, LLC, you confirm that 41# you are the copyright holder for those contributions and you grant 42# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, 43# royalty-free, perpetual, license to use, copy, create derivative 44# works based on those contributions, and sublicense and distribute 45# those contributions and any derivatives thereof. 46# 47# END BPS TAGGED BLOCK }}} 48 49use strict; 50use warnings; 51no warnings qw(redefine); 52 53package RT::Topics; 54use base 'RT::SearchBuilder'; 55 56sub Table {'Topics'} 57 58 59# {{{ LimitToObject 60 61=head2 LimitToObject OBJ 62 63Find all Topics hung off of the given Object 64 65=cut 66 67sub LimitToObject { 68 my $self = shift; 69 my $object = shift; 70 71 my $subclause = "limittoobject"; 72 73 $self->_OpenParen($subclause); 74 $self->Limit(FIELD => 'ObjectId', 75 VALUE => $object->Id, 76 SUBCLAUSE => $subclause); 77 $self->Limit(FIELD => 'ObjectType', 78 VALUE => ref($object), 79 SUBCLAUSE => $subclause, 80 ENTRYAGGREGATOR => 'AND'); 81 $self->_CloseParen($subclause); 82} 83 84# }}} 85 86 87# {{{ LimitToKids 88 89=head2 LimitToKids TOPIC 90 91Find all Topics which are immediate children of Id TOPIC. Note this 92does not do the recursive query of their kids, etc. 93 94=cut 95 96sub LimitToKids { 97 my $self = shift; 98 my $topic = shift; 99 100 $self->Limit(FIELD => 'Parent', 101 VALUE => $topic); 102} 103 104# }}} 105 106RT::Base->_ImportOverlays(); 107 1081; 109