CGI::Lazy::Session::Data - CGI::Lazy::Session::Data documentation


CGI-Lazy documentation Contained in the CGI-Lazy distribution.

Index


Code Index:

LEGAL

Top

NAME

Top

CGI::Lazy::Session::Data

SYNOPSIS

Top

	use CGI::Lazy;

	our $q = CGI::Lazy->new({

					tmplDir 	=> "/templates",

					jsDir		=>  "/js",

					plugins 	=> {

						mod_perl => {

							PerlHandler 	=> "ModPerl::Registry",

							saveOnCleanup	=> 1,

						},

						ajax	=>  1,

						dbh 	=> {

							dbDatasource 	=> "dbi:mysql:somedatabase:localhost",

							dbUser 		=> "dbuser",

							dbPasswd 	=> "letmein",

							dbArgs 		=> {"RaiseError" => 1},

						},

						session	=> {

							sessionTable	=> 'SessionData',

							sessionCookie	=> 'frobnostication',

							saveOnDestroy	=> 1,

							expires		=> '+15m',

						},

					},

				});

	$q->session->data->name($q->session->sessionID);

	$q->session->data->banner($message);

	print $q->header,

	      $q->session->data->name;

DESCRIPTION

Top

CGI::Lazy::Session::Data is simply a data container for CGI::Lazy::Session. Its a separate object just so we can cleanly use an autoloader without running into namespace problems with the Session object. This way, you have the widest possible range of names to use for session data.


CGI-Lazy documentation Contained in the CGI-Lazy distribution.

package CGI::Lazy::Session::Data;

use strict;

use CGI::Lazy::Globals;

#----------------------------------------------------------------------------------------------	
sub AUTOLOAD {
	my $self = shift;

	my $name = our $AUTOLOAD;
	return if $name =~ /::DESTROY$/;
	my @list = split "::", $name;
	my $value = pop @list;
	if (@_) {
		$self->{_data}->{$value} = shift; #this will work equally well for scalars and array refs.  Do we need it to fly for lists?
		$self->session->save unless ($self->q->plugin->session->{autowrite} && ($self->q->plugin->session->{autowrite} == 0));
	} else {
		if (ref $self->{_data}->{$value} eq 'HASH') {
		       	return wantarray ? %{$self->{_data}->{$value}} : $self->{_data}->{$value};
		} elsif (ref $self->{_data}->{$value} eq 'ARRAY') {
		       	return wantarray ? @{$self->{_data}->{$value}} : $self->{_data}->{$value};
		} else {
			return $self->{_data}->{$value};
		}
	}
}

#--------------------------------------------------------------------------------------
sub q {
	my $self = shift;

	return $self->session->q;
}

#--------------------------------------------------------------------------------------
sub session { 
	my $self = shift;

	return $self->{_session};
}

#--------------------------------------------------------------------------------------
sub new {
	my $class = shift;
	my $session = shift;

	my $self = {_session => $session, _data => $session->getData}; 

	return bless $self, $class;


}

1

__END__