diff options
Diffstat (limited to 'rt/lib/RT/URI')
-rw-r--r-- | rt/lib/RT/URI/base.pm | 129 | ||||
-rw-r--r-- | rt/lib/RT/URI/freeside.pm | 188 | ||||
-rw-r--r-- | rt/lib/RT/URI/fsck_com_rt.pm | 246 |
3 files changed, 0 insertions, 563 deletions
diff --git a/rt/lib/RT/URI/base.pm b/rt/lib/RT/URI/base.pm deleted file mode 100644 index a599f3ad8..000000000 --- a/rt/lib/RT/URI/base.pm +++ /dev/null @@ -1,129 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> -# -# (Except where explictly superceded by other copyright notices) -# -# 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK -package RT::URI::base; - -use strict; -use base qw(RT::Base); - -=head1 NAME - -RT::URI::base - -=head1 DESCRIPTION - -A baseclass (and fallback) RT::URI handler. Every URI handler needs to -handle the API presented here - -=cut - - -=head1 API - -=head2 new - -Create a new URI handler - -=cut - -sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - my $self = {}; - bless( $self, $class ); - $self->CurrentUser(@_); - return ($self); -} - -sub ParseObject { - my $self = shift; - my $obj = shift; - $self->{'uri'} = "unknown-object:".ref($obj); - - -} - - - -sub ParseURI { - my $self = shift; - my $uri = shift; - - if ($uri =~ /^(.*?):/) { - $self->{'scheme'} = $1; - } - $self->{'uri'} = $uri; - - -} - - -sub Object { - my $self = shift; - return undef; - -} - -sub URI { - my $self = shift; - return($self->{'uri'}); -} - -sub Scheme { - my $self = shift; - return($self->{'scheme'}); - -} - -sub HREF { - my $self = shift; - return($self->{'href'} || $self->{'uri'}); -} - -sub IsLocal { - my $self = shift; - return undef; -} - -=head2 AsString - -Return a "pretty" string representing the URI object. - -This is meant to be used like this: - - % $re = $uri->Resolver; - <A HREF="<% $re->HREF %>"><% $re->AsString %></A> - -=cut - -sub AsString { - my $self = shift; - return $self->URI; -} - -eval "require RT::URI::base_Vendor"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Vendor.pm}); -eval "require RT::URI::base_Local"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Local.pm}); - -1; diff --git a/rt/lib/RT/URI/freeside.pm b/rt/lib/RT/URI/freeside.pm deleted file mode 100644 index bfb514df8..000000000 --- a/rt/lib/RT/URI/freeside.pm +++ /dev/null @@ -1,188 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 2004 Kristian Hoffmann <khoff@fire2wire.com> -# Based on the original RT::URI::base and RT::URI::fsck_com_rt. -# -# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> -# -# (Except where explictly superceded by other copyright notices) -# -# 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK -package RT::URI::freeside; - -use RT::URI::base; -use strict; -use vars qw(@ISA); - -@ISA = qw/RT::URI::base/; - - -=head1 NAME - -RT::URI::base - -=head1 DESCRIPTION - -URI handler for freeside URIs. See http://www.sisd.com/freeside/ for -more information on freeside. - -=cut - - -sub FreesideURIPrefix { - - my $self = shift; - return($self->Scheme . '://freeside'); - -} - -sub FreesideURILabel { - - my $self = shift; - - return(undef) unless (exists($self->{'fstable'}) and - exists($self->{'fspkey'})); - - my $label; - my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); - - eval { - use FS::UID qw(dbh); - use FS::Record qw(qsearchs qsearch dbdef); - eval "use FS::$table;"; - use FS::cust_svc; - - my $dbdef = dbdef or die "No dbdef"; - my $pkeyfield = $dbdef->table($table)->primary_key - or die "No primary key for table $table"; - - my $rec = qsearchs($table, { $pkeyfield => $pkey }) - or die "Record with $pkeyfield == $pkey does not exist in table $table"; - - if ($table =~ /^svc_/) { - if ($rec->can('cust_svc')) { - my $cust_svc = $rec->cust_svc or die '$rec->cust_svc failed'; - my ($svc, $tag, $svcdb) = $cust_svc->label; - $label = "Freeside service ${svc}: ${tag}"; - } - } elsif ($table eq 'cust_main') { - my ($last, $first, $company) = map { $rec->getfield($_) } - qw(last first company); - $label = "Freeside customer ${last}, ${first}"; - $label .= ($company ne '') ? " with ${company}" : ''; - } else { - $label = "Freeside ${table}, ${pkeyfield} == ${pkey}"; - } - - #... other cases - - }; - - if ($label and !$@) { - return($label); - } else { - return(undef); - } - - -} - -sub ParseURI { - my $self = shift; - my $uri = shift; - my ($table, $pkey); - - my $uriprefix = $self->FreesideURIPrefix; - if ($uri =~ /^$uriprefix\/(\w+)\/(\d+)$/) { - $table = $1; - $pkey = $2; - $self->{'scheme'} = $self->Scheme; - } else { - return(undef); - } - - $self->{'uri'} = "${uriprefix}/${table}/${pkey}"; - $self->{'fstable'} = $table; - $self->{'fspkey'} = $pkey; - - my $p; - - eval { - use FS::UID qw(dbh); - use FS::CGI qw(popurl); - - if (dbh) { - $p = popurl(3); - } - - }; - - if ($@ or (!$p)) { - $self->{'href'} = $self->{'uri'}; - } else { - $self->{'href'} = "${p}view/${table}.cgi?${pkey}"; - } - - $self->{'uri'}; - -} - -sub Scheme { - my $self = shift; - return('freeside'); - -} - -sub HREF { - my $self = shift; - return($self->{'href'} || $self->{'uri'}); -} - -sub IsLocal { - my $self = shift; - return undef; -} - -=head2 AsString - -Return a "pretty" string representing the URI object. - -This is meant to be used like this: - - % $re = $uri->Resolver; - <A HREF="<% $re->HREF %>"><% $re->AsString %></A> - -=cut - -sub AsString { - my $self = shift; - my $prettystring; - if ($prettystring = $self->FreesideURILabel) { - return $prettystring; - } else { - return $self->URI; - } -} - -eval "require RT::URI::base_Vendor"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Vendor.pm}); -eval "require RT::URI::base_Local"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Local.pm}); - -1; diff --git a/rt/lib/RT/URI/fsck_com_rt.pm b/rt/lib/RT/URI/fsck_com_rt.pm deleted file mode 100644 index 4035776ef..000000000 --- a/rt/lib/RT/URI/fsck_com_rt.pm +++ /dev/null @@ -1,246 +0,0 @@ -# BEGIN LICENSE BLOCK -# -# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> -# -# (Except where explictly superceded by other copyright notices) -# -# 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. -# -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -# -# -# END LICENSE BLOCK -package RT::URI::fsck_com_rt; - -use RT::Ticket; - -use RT::URI::base; - -use strict; -use vars qw(@ISA); -@ISA = qw/RT::URI::base/; - - - - -=head2 LocalURIPrefix - -Returns the prefix for a local ticket URI - -=begin testing - -use_ok("RT::URI::fsck_com_rt"); -my $uri = RT::URI::fsck_com_rt->new($RT::SystemUser); - -ok(ref($uri)); - -use Data::Dumper; - - -ok (UNIVERSAL::isa($uri,RT::URI::fsck_com_rt), "It's an RT::URI::fsck_com_rt"); - -ok ($uri->isa('RT::URI::base'), "It's an RT::URI::base"); -ok ($uri->isa('RT::Base'), "It's an RT::Base"); - -is ($uri->LocalURIPrefix , 'fsck.com-rt://example.com/ticket/'); - -=end testing - - - -=cut - -sub LocalURIPrefix { - my $self = shift; - my $prefix = $self->Scheme. "://$RT::Organization/ticket/"; - return ($prefix); -} - - - - - -=head2 URIForObject RT::Ticket - -Returns the RT URI for a local RT::Ticket object - -=begin testing - -my $ticket = RT::Ticket->new($RT::SystemUser); -$ticket->Load(1); -my $uri = RT::URI::fsck_com_rt->new($ticket->CurrentUser); -is($uri->LocalURIPrefix . "1" , $uri->URIForObject($ticket)); - -=end testing - -=cut - -sub URIForObject { - - my $self = shift; - - my $obj = shift; - return ($self->LocalURIPrefix. $obj->Id); -} - - -=head2 ParseObject $TicketObj - -When handed an RT::Ticekt object, figure out its URI - - -=cut - - - -=head2 ParseURI URI - -When handed an fsck.com-rt: URI, figures out things like whether its a local ticket -and what its ID is - -=cut - - -sub ParseURI { - my $self = shift; - my $uri = shift; - - my $ticket; - - if ($uri =~ /^(\d+)$/) { - $ticket = RT::Ticket->new($self->CurrentUser); - $ticket->Load($uri); - $self->{'uri'} = $ticket->URI; - } - else { - $self->{'uri'} = $uri; - } - - - - #If it's a local URI, load the ticket object and return its URI - if ( $self->IsLocal) { - - my $local_uri_prefix = $self->LocalURIPrefix; - if ($self->{'uri'} =~ /^$local_uri_prefix(\d+)$/i) { - my $id = $1; - - - $ticket = RT::Ticket->new( $self->CurrentUser ); - $ticket->Load($id); - - #If we couldn't find a ticket, return undef. - unless ( defined $ticket->Id ) { - return undef; - } - } else { - return undef; - } - } - - $self->{'object'} = $ticket; - if ( UNIVERSAL::can( $ticket, 'Id' ) ) { - return ( $ticket->Id ); - } - else { - return undef; - } -} - -=head2 IsLocal - -Returns true if this URI is for a local ticket. -Returns undef otherwise. - - - -=cut - -sub IsLocal { - my $self = shift; - my $local_uri_prefix = $self->LocalURIPrefix; - if ($self->{'uri'} =~ /^$local_uri_prefix/i) { - return 1; - } - else { - return undef; - } -} - - - -=head2 Object - -Returns the object for this URI, if it's local. Otherwise returns undef. - -=cut - -sub Object { - my $self = shift; - return ($self->{'object'}); - -} - -=head2 Scheme - -Return the URI scheme for RT tickets - -=cut - - -sub Scheme { - my $self = shift; - return "fsck.com-rt"; -} - -=head2 HREF - -If this is a local ticket, return an HTTP url to it. -Otherwise, return its URI - -=cut - - -sub HREF { - my $self = shift; - if ($self->IsLocal && $self->Object) { - return ( $RT::WebURL . "Ticket/Display.html?id=".$self->Object->Id); - } - else { - return ($self->URI); - } -} - -=head2 AsString - -Returns either a localized string 'ticket #23' or the full URI if the object is not local - -=cut - -sub AsString { - my $self = shift; - if ($self->IsLocal && $self->Object) { - return $self->loc("ticket #[_1]", $self->Object->Id); - } - else { - return $self->URI; - } -} - -eval "require RT::URI::fsck_com_rt_Vendor"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Vendor.pm}); -eval "require RT::URI::fsck_com_rt_Local"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Local.pm}); - -1; |