some updates to URL and content handlers to make them a bit more flexible

This commit is contained in:
JT Smith 2008-04-26 18:59:48 +00:00
parent c074fde72a
commit 17d6151832
9 changed files with 91 additions and 12 deletions

View file

@ -24,6 +24,7 @@ my $quiet; # this line required
my $session = start(); # this line required my $session = start(); # this line required
# upgrade functions go here # upgrade functions go here
addReferralHandler( $session );
addCalendarEventWorkflow( $session ); addCalendarEventWorkflow( $session );
addPurgeOldInboxActivity( $session ); addPurgeOldInboxActivity( $session );
addingInStoreCredit($session); addingInStoreCredit($session);
@ -45,6 +46,23 @@ mergeProductsWithCommerce($session);
finish($session); # this line required finish($session); # this line required
#----------------------------------------------------------------------------
sub addReferralHandler {
my $session = shift;
print "\tAdding a referral handler." unless $quiet;
my $config = $session->config;
my @handlers = ();
foreach my $element (@{$config->get("contentHandlers")}) {
if ($element eq "WebGUI::Content::Operation") {
push @handlers, "WebGUI::Content::Referral";
}
push @handlers, $element;
}
$config->set("contentHandlers", \@handlers);
print "DONE!\n" unless $quiet;
}
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Add the database column to select the workflow to approve Calendar Events # Add the database column to select the workflow to approve Calendar Events
sub addCalendarEventWorkflow { sub addCalendarEventWorkflow {

View file

@ -67,20 +67,27 @@ sub handler {
my $matchUri = $request->uri; my $matchUri = $request->uri;
my $gateway = $config->get("gateway"); my $gateway = $config->get("gateway");
$matchUri =~ s{^$gateway(.*)}{/$1}; $matchUri =~ s{^$gateway(.*)}{/$1};
my $gotMatch = 0;
foreach my $handler (@{$config->get("urlHandlers")}) { foreach my $handler (@{$config->get("urlHandlers")}) {
my ($regex) = keys %{$handler}; my ($regex) = keys %{$handler};
if ($matchUri =~ m{$regex}i) { if ($matchUri =~ m{$regex}i) {
my $output = eval { WebGUI::Pluggable::run($handler->{$regex}, "handler", [$request, $server, $config]) }; my $output = eval { WebGUI::Pluggable::run($handler->{$regex}, "handler", [$request, $server, $config]) };
if ($@) { if ($@) {
die $@ if ($@ =~ "^fatal:"); $error = $@;
# bad warn $@ if ($@ =~ "^fatal:");
return Apache2::Const::DECLINED; last;
} }
else { else {
return $output; $gotMatch = 1;
if ($output ne Apache2::Const::DECLINED) {
return $output;
}
} }
} }
} }
return Apache2::Const::DECLINED if ($gotMatch);
# can't handle the url due to error or misconfiguration
$request->push_handlers(PerlResponseHandler => sub { $request->push_handlers(PerlResponseHandler => sub {
print "This server is unable to handle the url '".$request->uri."' that you requested. ".$error; print "This server is unable to handle the url '".$request->uri."' that you requested. ".$error;
return Apache2::Const::OK; return Apache2::Const::OK;

View file

@ -0,0 +1,55 @@
package WebGUI::Content::Referral;
=head1 LEGAL
-------------------------------------------------------------------
WebGUI is Copyright 2001-2008 Plain Black Corporation.
-------------------------------------------------------------------
Please read the legal notices (docs/legal.txt) and the license
(docs/license.txt) that came with this distribution before using
this software.
-------------------------------------------------------------------
http://www.plainblack.com info@plainblack.com
-------------------------------------------------------------------
=cut
use strict;
use WebGUI::Affiliate;
=head1 NAME
Package WebGUI::Content::Referral
=head1 DESCRIPTION
Processes referrals from other sites.
=head1 SYNOPSIS
use WebGUI::Content::Referral;
my $output = WebGUI::Content::Referral::handler($session);
=head1 SUBROUTINES
These subroutines are available from this package:
=cut
#-------------------------------------------------------------------
=head2 handler ( session )
The content handler for this package.
=cut
sub handler {
my ($session) = @_;
WebGUI::Affiliate::grabReferral($session); # process affiliate tracking request
return undef;
}
1;

View file

@ -80,12 +80,11 @@ sub handler {
} }
} }
} }
WebGUI::Affiliate::grabReferral($session); # process affiliate tracking request
$session->close; $session->close;
return Apache2::Const::OK; return Apache2::Const::OK;
}); });
$request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK }); $request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK });
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }
1; 1;

View file

@ -58,7 +58,7 @@ sub handler {
return Apache2::Const::OK; return Apache2::Const::OK;
} ); } );
$request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK }); $request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK });
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }

View file

@ -52,7 +52,7 @@ sub handler {
$request->handler(Apache2::Const::DIR_MAGIC_TYPE); # Hand off to mod_dir $request->handler(Apache2::Const::DIR_MAGIC_TYPE); # Hand off to mod_dir
return Apache2::Const::OK; return Apache2::Const::OK;
} }
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }
1; 1;

View file

@ -53,7 +53,7 @@ sub handler {
return Apache2::Const::OK; return Apache2::Const::OK;
} ); } );
$request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK }); $request->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK });
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }

View file

@ -77,7 +77,7 @@ sub handler {
return Apache2::Const::NOT_FOUND; return Apache2::Const::NOT_FOUND;
} }
} ); } );
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }

View file

@ -15,7 +15,7 @@ package WebGUI::URL::MyHandler;
=cut =cut
use strict; use strict;
use Apache2::Const -compile => qw(OK DECLINED NOT_FOUND DIR_MAGIC_TYPE); use Apache2::Const -compile => qw(OK DECLINED NOT_FOUND);
=head1 NAME =head1 NAME
@ -48,7 +48,7 @@ The Apache request handler for this package.
sub handler { sub handler {
my ($request, $server, $config) = @_; my ($request, $server, $config) = @_;
# ... # ...
return Apache2::Const::DECLINED; return Apache2::Const::OK;
} }
1; 1;