diff options
Diffstat (limited to 'rt/lib/RT/Attributes_Overlay.pm')
-rw-r--r-- | rt/lib/RT/Attributes_Overlay.pm | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/rt/lib/RT/Attributes_Overlay.pm b/rt/lib/RT/Attributes_Overlay.pm deleted file mode 100644 index ebe8c4cf1..000000000 --- a/rt/lib/RT/Attributes_Overlay.pm +++ /dev/null @@ -1,205 +0,0 @@ -# BEGIN BPS TAGGED BLOCK {{{ -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@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 }}} - -=head1 NAME - -RT::Attributes - collection of RT::Attribute objects - -=head1 SYNOPSIS - - use RT::Attributes; - my $Attributes = new RT::Attributes($CurrentUser); - -=head1 DESCRIPTION - - -=head1 METHODS - -=cut - - -package RT::Attributes; - -use strict; -no warnings qw(redefine); - - -sub _DoSearch { - my $self = shift; - $self->SUPER::_DoSearch(); - $self->_BuildAccessTable(); -} - - -sub _BuildAccessTable { - my $self = shift; - delete $self->{'attr'}; - while (my $attr = $self->Next) { - push @{$self->{'attr'}->{$attr->Name}}, $attr; - } -} - - -sub _AttrHash { - my $self = shift; - $self->_DoSearch if ($self->{'must_redo_search'}); - unless ($self->{'attr'}) { - $self->{'attr'}->{'__none'} = RT::Attribute->new($self->CurrentUser); - } - return ($self->{'attr'}); -} - -=head2 Names - -Returns a list of the Names of all attributes for this object. - -=cut - -sub Names { - my $self = shift; - my @keys = keys %{$self->_AttrHash}; - return(@keys); - - -} - -=head2 Named STRING - -Returns an array of all the RT::Attribute objects with the name STRING - -=cut - -sub Named { - my $self = shift; - my $name = shift; - my @attributes; - if ($self->_AttrHash) { - @attributes = @{($self->_AttrHash->{$name}||[])}; - } - return (@attributes); -} - -=head2 WithId ID - -Returns the RT::Attribute objects with the id ID - -XXX TODO XXX THIS NEEDS A BETTER ACL CHECK - -=cut - -sub WithId { - my $self = shift; - my $id = shift; - - my $attr = RT::Attribute->new($self->CurrentUser); - $attr->LoadByCols( id => $id ); - return($attr); -} - -=head2 DeleteEntry { Name => Content => , id => } - -Deletes attributes with - the matching name - and the matching content or id - -If Content and id are both undefined, delete all attributes with -the matching name. - -=cut - - -sub DeleteEntry { - my $self = shift; - my %args = ( - Name => undef, - Content => undef, - id => undef, - @_ - ); - my $found = 0; - foreach my $attr ( $self->Named( $args{'Name'} ) ) { - if ( ( !defined $args{'id'} and !defined $args{'Content'} ) - or ( defined $args{'id'} and $attr->id eq $args{'id'} ) - or ( defined $args{'Content'} and $attr->Content eq $args{'Content'} ) ) - { - my ($id, $msg) = $attr->Delete; - return ($id, $msg) unless $id; - $found = 1; - } - } - return (0, "No entry found") unless $found; - $self->RedoSearch; - # XXX: above string must work but because of bug in DBIx::SB it doesn't, - # to reproduce delete string below and run t/api/attribute-tests.t - $self->_DoSearch; - return (1, $self->loc('Attribute Deleted')); -} - - -# {{{ LimitToObject - -=head2 LimitToObject $object - -Limit the Attributes to rights for the object $object. It needs to be an RT::Record class. - -=cut - -sub LimitToObject { - my $self = shift; - my $obj = shift; - unless (defined($obj) && ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id) { - return undef; - } - $self->Limit(FIELD => 'ObjectType', OPERATOR=> '=', VALUE => ref($obj), ENTRYAGGREGATOR => 'OR'); - $self->Limit(FIELD => 'ObjectId', OPERATOR=> '=', VALUE => $obj->id, ENTRYAGGREGATOR => 'OR', QUOTEVALUE => 0); - -} - -# }}} - -1; |