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 0.570 second using v1.01-cache-2.11-cpan-140bd7fdf52 )