croak("Invalid call to ".$pkg."->create");
}
my %params = @_;
- croack("User name is required by ".$pkg."->creae") unless $params{-user};
+ croack("User name is required by ".$pkg."->create") unless $params{-user};
$params{-cgi}=CGI->new() if(!$params{-cgi});
load_config($params{-cgi});
my $user=$params{-user};
sub isowner {
my $self=shift;
- return $self->{-name} eq $config{-owner};
+ return $self->{-name} eq $config->{-owner};
}
=head2 _update_user
=cut
sub load_config {
- my $path=$_[0]->path_translated();
- my @dirs = (File::Spec->splitdir($path));
+ my $cgi = $_[0];
+ my $path=$cgi->path_translated();
+ my @dirs = File::Spec->splitdir($path);
+ my @uri = File::Spec->splitdir($cgi->path_info);
my $found =0;
while (@dirs) {
my $d=File::Spec->catdir(@dirs,CONFIG_NAME);
my $config = <F>;
close F;
eval "%config = {$d}";
+ $config{-topdir}=File::Spec->catdir(@dirs);
+ $config{-topurl}=$cgi->url(-base=>1).File::Spec->catdir(@uri);
die $@ if ($@);
$found = 1;
}
pop @dirs;
+ pop @uri;
}
die ("Cannot find config file inside $path") unless $found;
- my @reqkeys=qw(-owner -statedir -templatedir);
+ my @reqkeys=qw(-statedir);
foreach my $key (@reqkeys) {
die "Required key $key missing from config"
unless exists $config{$key};
$config{-userbase}||=$config{-statedir}."/user.db";
$config{-sessiontime}||=86400*30;
$config{-gracetime}||=86400;
+ $config{-templatedir}||=$config{-topdir}."/templates"
+ $config{-avatardir}||=$config{-topdir}."/avatars";
+ if (!$config{-owner}) {
+ my $uri=substr($config{-topurl},index($config{-topurl},"://")+2;
+ $uri =~ s/:\d+(\/.*)?$//;
+ $config{-owner} = $uri;
+ }
}
=head2 AUTOLOAD