X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FURI.pm;h=8d6af457ab298f7738de0bfc69ffd82a9c659066;hb=HEAD;hp=c0958ca36f1c3aa737568ba4795fae5c27212072;hpb=7588a4ac90a9b07c08a3107cd1107d773be1c991;p=freeside.git diff --git a/rt/lib/RT/URI.pm b/rt/lib/RT/URI.pm index c0958ca36..8d6af457a 100644 --- a/rt/lib/RT/URI.pm +++ b/rt/lib/RT/URI.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -141,33 +141,33 @@ Returns true if everything is ok, otherwise false sub FromURI { my $self = shift; - my $uri = shift; + my $uri = shift; return undef unless ($uri); my $scheme; # Special case: integers passed in as URIs must be ticket ids if ($uri =~ /^(\d+)$/) { - $scheme = "fsck.com-rt"; + $scheme = "fsck.com-rt"; } elsif ($uri =~ /^((?!javascript|data)(?:\w|\.|-)+?):/i) { - $scheme = $1; + $scheme = $1; } else { $self->{resolver} = RT::URI::base->new( $self->CurrentUser ); # clear resolver $RT::Logger->warning("Could not determine a URI scheme for $uri"); return (undef); } - - # load up a resolver object for this scheme + + # load up a resolver object for this scheme $self->_GetResolver($scheme); - + unless ($self->Resolver->ParseURI($uri)) { $RT::Logger->warning( "Resolver " . ref( $self->Resolver ) . " could not parse $uri, maybe Organization config was changed?" ); $self->{resolver} = RT::URI::base->new( $self->CurrentUser ); # clear resolver - return (undef); + return (undef); } return(1); @@ -199,6 +199,8 @@ sub _GetResolver { if ($resolver) { $self->{'resolver'} = $resolver; } else { + RT->Logger->warning("Failed to create new resolver object for scheme '$scheme': $@") + if $@ !~ m{Can't locate RT/URI/\Q$scheme\E}; $self->{'resolver'} = RT::URI::base->new($self->CurrentUser); } @@ -285,6 +287,17 @@ sub Resolver { return ($self->{'resolver'}); } +=head2 AsString + +Returns a friendly display form of the object if Local, or the full URI + +=cut + +sub AsString { + my $self = shift; + return $self->Resolver->AsString; +} + RT::Base->_ImportOverlays(); 1;