diff options
Diffstat (limited to 'rt/lib/RT/Shredder/Plugin/Base.pm')
-rw-r--r-- | rt/lib/RT/Shredder/Plugin/Base.pm | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/rt/lib/RT/Shredder/Plugin/Base.pm b/rt/lib/RT/Shredder/Plugin/Base.pm deleted file mode 100644 index 3e3e73b27..000000000 --- a/rt/lib/RT/Shredder/Plugin/Base.pm +++ /dev/null @@ -1,188 +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 }}} - -package RT::Shredder::Plugin::Base; - -use strict; -use warnings FATAL => 'all'; - -=head1 NAME - -RT::Shredder::Plugin::Base - base class for Shredder plugins. - -=cut - -sub new -{ - my $proto = shift; - my $self = bless( {}, ref $proto || $proto ); - $self->_Init( @_ ); - return $self; -} - -sub _Init -{ - my $self = shift; - $self->{'opt'} = { @_ }; -} - -=head1 USAGE - -=head2 masks - -If any argument is marked with keyword C<mask> then it means -that this argument support two special characters: - -1) C<*> matches any non empty sequence of the characters. -For example C<*@example.com> will match any email address in -C<example.com> domain. - -2) C<?> matches exactly one character. -For example C<????> will match any string four characters long. - -=head1 METHODS - -=head2 for subclassing in plugins - -=head3 Type - is not supported yet - -See F<Todo> for more info. - -=cut - -sub Type { return '' } - -=head3 SupportArgs - -Takes nothing. -Returns list of the supported plugin arguments. - -Base class returns list of the arguments which all -classes B<must> support. - -=cut - -sub SupportArgs { return () } - -=head3 HasSupportForArgs - -Takes a list of argument names. Returns true if -all arguments are supported by plugin and returns -C<(0, $msg)> in other case. - -=cut - -sub HasSupportForArgs -{ - my $self = shift; - my @args = @_; - my @unsupported = (); - foreach my $a( @args ) { - push @unsupported, $a unless grep $_ eq $a, $self->SupportArgs; - } - return( 1 ) unless @unsupported; - return( 0, "Plugin doesn't support argument(s): @unsupported" ) if @unsupported; -} - -=head3 TestArgs - -Takes hash with arguments and thier values and returns true -if all values pass testing otherwise returns C<(0, $msg)>. - -Stores arguments hash in C<$self->{'opt'}>, you can access this hash -from C<Run> method. - -Method should be subclassed if plugin support non standard arguments. - -=cut - -sub TestArgs -{ - my $self = shift; - my %args = @_; - if ( $self->{'opt'} ) { - $self->{'opt'} = { %{$self->{'opt'}}, %args }; - } else { - $self->{'opt'} = \%args; - } - return 1; -} - -=head3 Run - -Takes no arguments. -Executes plugin and return C<(1, @objs)> on success or -C<(0, $msg)> if error had happenned. - -Method B<must> be subclassed, this class always returns error. - -Method B<must> be called only after C<TestArgs> method in other -case values of the arguments are not available. - -=cut - -sub Run { return (0, "This is abstract plugin, you couldn't use it directly") } - -=head2 utils - -=head3 ConvertMaskToSQL - -Takes one argument - mask with C<*> and C<?> chars and -return mask SQL chars. - -=cut - -sub ConvertMaskToSQL { - my $self = shift; - my $mask = shift || ''; - $mask =~ s/\*/%/g; - $mask =~ s/\?/_/g; - return $mask; -} - -1; |