HTML-Bricks
view release on metacpan or search on metacpan
lib/HTML/Bricks.pm view on Meta::CPAN
push @a, @discarded_rassemblies;
delete $session{discarded_rassemblies};
undef @discarded_rassemblies;
while (my $rnode = $a[0]) {
my $rbrick = fetch($$rnode{name});
$rbrick->thaw($rnode);
$$rbrick{name} = $$rnode{name};
if ($rbrick->get_modified()) {
$rbrick->process(undef,undef,\%ARGS2,$rsa,'0',\$uri,'view',$rredirect);
if (defined $$rredirect) {
$a[0] = $rbrick->freeze();
$session{discarded_rassemblies} = \@a;
return 1;
}
}
shift @a;
}
# print STDERR "check_discards: setting discards to ", Dumper($session{discarded_rassemblies});
$session{discarded_rassemblies} = \@a;
return undef;
}
#-----------------------------------------------------------------------------
# set_logout
#-----------------------------------------------------------------------------
sub set_logout {
undef $session{username};
}
#-----------------------------------------------------------------------------
# handler
#-----------------------------------------------------------------------------
sub handler {
#
# initialize globals
#
%global_args = my %h;
%session = %h;
$session_id = undef;
$ruser = undef;
@discarded_rassemblies = ();
$rmatches = undef;
#
# Check for URIs handled Bricks::Magick
#
# Wrapped in Eval because we want Bricks to mostly work even if the user
# hasn't installed Image::Magick
#
eval {
require "HTML/Bricks/Magick.pm";
return OK if HTML::Bricks::Magick::handler(@_) == OK;
};
#
# Not a picture to be modified
#
my $r = shift;
#
# Bricks only processes documents ending in .htm or .html (not case-sensitive)
#
return DECLINED if $r->uri !~ /.*\.[hH][tT][mM][lL]?/;
# print STDERR "BEGIN_XACTION\n";
#
# get session info
#
my %cookies = Apache::Cookie->fetch;
my $cookie = $cookies{SESSION_ID};
if (defined $cookie) {
use Apache::Session::File;
my %tsession;
eval {
tie %tsession, 'Apache::Session::File', $cookie->value, {
Directory => '/tmp',
LockDirectory => '/tmp'
};
%session = %tsession;
untie %tsession;
};
$session_id = $session{_session_id};
}
#
# do the transaction
#
$rmatches = [];
my $retval = do_transaction($rmatches);
#
# update session information
#
if (defined $session_id) {
( run in 1.344 second using v1.01-cache-2.11-cpan-140bd7fdf52 )