summaryrefslogtreecommitdiff
path: root/rt/lib/RT/KeywordSelects.pm
blob: c220b39f935c8485f47c3348ab1c415bf460de18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#$Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Attic/KeywordSelects.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $



=begin testing

ok (require RT::TestHarness);
ok (require RT::Scrip);

=end testing

=cut


package RT::KeywordSelects;

use strict;
use vars qw( @ISA );
use RT::EasySearch;
use RT::KeywordSelect;

@ISA = qw( RT::EasySearch );

# {{{ _Init
sub _Init {
  my $self = shift;
  $self->{'table'} = 'KeywordSelects';
  $self->{'primary_key'} = 'id';
  return ($self->SUPER::_Init(@_));
}
# }}}

# {{{ sub _DoSearch 

=head2 _DoSearch

  A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled rows never get seen unless
we're explicitly trying to see them.

=cut

sub _DoSearch {
    my $self = shift;
    
    #unless we really want to find disabled rows, make sure we\'re only finding enabled ones.
    unless($self->{'find_disabled_rows'}) {
	$self->LimitToEnabled();
    }
    
    return($self->SUPER::_DoSearch(@_));
    
}

# }}}

# {{{ sub LimitToQueue
=head2 LimitToQueue 

Takes a queue id. Limits the returned set to KeywordSelects for that queue.
Repeated calls will be OR'd together.

=cut

sub LimitToQueue {
    my $self = shift;
    my $queue = shift;

    $self->Limit( FIELD => 'ObjectValue',
		  VALUE => $queue,
		  OPERATOR => '=',
		  ENTRYAGGREGATOR => 'OR'
		);

    $self->Limit( FIELD => 'ObjectType',
		  VALUE => 'Ticket',
		  OPERATOR => '=');

    $self->Limit( FIELD => 'ObjectField',
		  VALUE => 'Queue',
		  OPERATOR => '=');

    
}
# }}}

# {{{ sub LimitToGlobals

=head2 LimitToGlobals

Limits the returned set to KeywordSelects for all queues.
Repeated calls will be OR'd together.

=cut

sub LimitToGlobals {
    my $self = shift;

    $self->Limit( FIELD => 'ObjectType',
		  VALUE => 'Ticket',
		  OPERATOR => '=');

    $self->Limit( FIELD => 'ObjectField',
		  VALUE => 'Queue',
		  OPERATOR => '=');

    $self->Limit( FIELD => 'ObjectValue',
		  VALUE => '0',
		  OPERATOR => '=',
		  ENTRYAGGREGATOR => 'OR'
		);
    
}
# }}}

# {{{ sub IncludeGlobals
=head2 IncludeGlobals

Include KeywordSelects which apply globally in the set of returned results

=cut


sub IncludeGlobals {
    my $self = shift;
    $self->Limit( FIELD => 'ObjectValue',
		  VALUE => '0',
		  OPERATOR => '=',
		  ENTRYAGGREGATOR => 'OR'
		);
    

}
# }}}

# {{{ sub NewItem
sub NewItem {
    my $self = shift;
    #my $Handle = shift;
    return (new RT::KeywordSelect($self->CurrentUser));
}
# }}}
1;