Apache-Session-Wrapper
view release on metacpan or search on metacpan
lib/Apache/Session/Wrapper.pm view on Meta::CPAN
( store =>
{ MySQL => [ [ qw( data_source user_name ) ],
[ qw( handle ) ] ],
Postgres => $ApacheSessionParams{Postgres},
File => [ [ qw( directory ) ] ],
DB_File => [ [ qw( file_name ) ] ],
PHP => $ApacheSessionParams{PHP},
},
lock =>
{ MySQL => [ [ qw( lock_data_source lock_user_name ) ],
[ qw( lock_handle ) ] ],
File => [ [ ] ],
Null => [ [ ] ],
Semaphore => [ [ ] ],
},
generate =>
{ MD5 => [ [ ] ],
ModUniqueId => [ [ ] ],
ModUsertrack => [ [ qw( mod_usertrack_cookie_name ) ] ],
},
serialize =>
{ Storable => [ [ ] ],
Base64 => [ [ ] ],
Sybase => [ [ ] ],
UUEncode => [ [ ] ],
PHP => [ [ ] ],
},
);
@{ $ApacheSessionFlexParams{store} }{ qw( Informix Oracle Sybase ) } =
( $ApacheSessionFlexParams{store}{Postgres} ) x 3;
my %OptionalApacheSessionFlexParams =
( store => { map { $_ => $OptionalApacheSessionParams{$_} }
qw( MySQL Postgres Informix Oracle Sybase ) },
);
sub _SetValidParams {
my $class = shift;
my %extra;
for my $hash ( \%ApacheSessionParams,
\%OptionalApacheSessionParams,
@ApacheSessionFlexParams{ qw( store lock generate serialize ) },
@OptionalApacheSessionFlexParams{ qw( store lock generate serialize ) },
)
{
for my $p ( map { @$_ } map { @$_ } values %$hash )
{
my $h;
if ( ref $p ) {
# we assume its a hash of names/parameter specifications
$h = $p;
} elsif (!$params{$p}) {
# its a new parameter defined by a scalar, default to SCALAR value
$h = { $p => { optional => 1, type => SCALAR } };
} else {
# its a scalar option we already know.
next;
}
# now expand the options
foreach my $name (keys %$h) {
next if $params{$name};
$extra{$p} = $h->{$name};
}
}
}
$class->valid_params( %extra, %params );
$class->SetStudlyForms();
}
__PACKAGE__->_SetValidParams();
my %StudlyForm;
sub SetStudlyForms
{
%StudlyForm =
( map { $_ => _studly_form($_) }
map { ref $_ ? @$_ :$_ }
map { @$_ }
( values %ApacheSessionParams ),
( values %OptionalApacheSessionParams ),
( map { values %{ $ApacheSessionFlexParams{$_} } }
keys %ApacheSessionFlexParams ),
( map { values %{ $OptionalApacheSessionFlexParams{$_} } }
keys %OptionalApacheSessionFlexParams ),
);
# why Apache::Session does this I do not know
$StudlyForm{textsize} = 'textsize';
}
sub _studly_form
{
my $string = shift;
$string =~ s/(?:^|_)(\w)/\U$1/g;
return $string;
}
sub RegisterClass {
my $class = shift;
my %p = validate( @_, { name => { type => SCALAR },
required => { type => SCALAR | ARRAYREF, default => [ [ ] ] },
optional => { type => SCALAR | ARRAYREF, default => [ ] },
},
);
$p{name} =~ s/^Apache::Session:://;
$ApacheSessionParams{ $p{name} } =
( ref $p{required}
? $p{required}
: $ApacheSessionParams{ $p{required} }
);
$OptionalApacheSessionParams{ $p{name} } =
( ref $p{optional}
? [ $p{optional} ]
: $OptionalApacheSessionParams{ $p{optional} }
);
( run in 1.560 second using v1.01-cache-2.11-cpan-97f6503c9c8 )