From: <Mar...@nt...> - 2004-11-30 18:59:40
|
Author: MartinCleaver Date: 2004-11-30 10:59:21 -0800 (Tue, 30 Nov 2004) New Revision: 3306 Modified: twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Meta.pm twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Store.pm twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/UI/Register.pm twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/User.pm Log: RegisterCgiScriptRewrite: checkpoint so Scott (ppcx) can see whats going on Modified: twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Meta.pm =================================================================== --- twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Meta.pm 2004-11-30 18:58:48 UTC (rev 3305) +++ twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Meta.pm 2004-11-30 18:59:21 UTC (rev 3306) @@ -60,11 +60,14 @@ Construct a new, empty Meta collection. =cut +use Devel::StackTrace; sub new { my ( $class, $web, $topic ) = @_; my $self = {}; - die join(" ", caller) unless $web; + die Devel::StackTrace->new->as_string() unless $web; + die Devel::StackTrace->new->as_string() unless $topic; + die join(" ", caller) unless $topic; $self->{_web} = $web; $self->{_topic} = $topic; Modified: twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Store.pm =================================================================== --- twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Store.pm 2004-11-30 18:58:48 UTC (rev 3305) +++ twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/Store.pm 2004-11-30 18:59:21 UTC (rev 3306) @@ -692,6 +692,9 @@ my $attachment = ""; my $comment = ""; +# my $topic2 = $topic."\n"; +# $topic = chomp $topic2; + # SMELL: Staggeringly inefficient code that adds meta-data for # Plugin callback. Why not simply pass the meta in? It would be far # more sensible. Modified: twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/UI/Register.pm =================================================================== --- twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/UI/Register.pm 2004-11-30 18:58:48 UTC (rev 3305) +++ twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/UI/Register.pm 2004-11-30 18:59:21 UTC (rev 3306) @@ -86,13 +86,14 @@ # die "WikiName: '".$wikiName."', LoginName: '".$loginName."' RemoteUser: '".$remoteUser."' TWiki::userName: '".$TWiki::userName."'"; - return 0 unless(TWiki::UI::userIsAdmin( $web, $topic, $wikiName )); + warn "check omitted"; +# return 0 unless(TWiki::UI::userIsAdmin( $web, $topic, $wikiName )); #-- Read the topic containing a table of people to be registered - my ($meta, $text) = TWiki::Store::readTopic($web, $topic, 1); + my ($meta, $text) = TWiki::Store::readTopic($web, $topic, undef, 1); my %data; ( $settings{fieldNames}, %data) = TWiki::Data::DelimitedFile::read(content => $text, delimiter => "|" ); @@ -157,8 +158,9 @@ #-- Ensure every required field exists +# NB. LoginName is OPTIONAL - my @requiredFields = qw(WikiName FirstName LastName LoginName); + my @requiredFields = qw(WikiName FirstName LastName); if (missingElements($settings{fieldNames}, \@requiredFields)) { die join(" ", @{$settings{fieldNames}})." does not contain \nthe full set of ".join(" ", @requiredFields)."\n"; } @@ -315,7 +317,7 @@ my ( $topic, $web ) = initialise( $query, $remoteUser ); - my $wikiName = TWiki::userToWikiName($remoteUser); + my $wikiName = TWiki::User::userToWikiName($remoteUser); # die "remote: $remoteUser - wikiname: ".$wikiName." ".$#userNames; if ($#userNames > 0) { @@ -336,7 +338,7 @@ use TWiki::UI; my %ans = %{$userAns{$userNames[0]}}; # die Dumper($key, \%userAns, \%ans); - TWiki::UI::oops( $web, $ans{wikiName}, $ans{oops}, $ans{email} ); + TWiki::UI::oops( $web, $ans{wikiName}, $ans{oops}, $ans{email}, $ans{wikiName} ); } else { die Dumper(\%userAns); } @@ -358,7 +360,7 @@ $ans{wikiName} = $wikiName; } - my $email = (TWiki::getEmailOfUser($wikiName))[0]; + my $email = (TWiki::User::getEmail($wikiName))[0]; unless ($email) { $ans{oops} = "regemail"; @@ -412,7 +414,7 @@ my $loginName = $eitherLoginOrWikiName; - my $wikiName = TWiki::userToWikiName($eitherLoginOrWikiName, 2); + my $wikiName = TWiki::User::userToWikiName($eitherLoginOrWikiName, 2); # YUCK SMELL: 1 = Don't add web name. Very unintuitive. unless ($wikiName) { @@ -421,7 +423,7 @@ # So do it using the inverse function my $probablyWikiName = $eitherLoginOrWikiName; - $loginName = TWiki::wikiToUserName($probablyWikiName); + $loginName = TWiki::User::wikiToUserName($probablyWikiName); # die "\n Claimed = $probablyWikiName; LoginName = $eitherLoginOrWikiName; WikiName = $wikiName"; if ($loginName eq $probablyWikiName) { # the function didn't map: returning the same means lookup failure @@ -604,7 +606,7 @@ # write log entry if ($TWiki::doLogRegistration) { - TWiki::Store::writeLog( "register", "$data{webName}.$data{WikiName}", + TWiki::writeLog( "register", "$data{webName}.$data{WikiName}", $data{Email}, $data{WikiName} ); } @@ -622,7 +624,7 @@ sub newUserFromTemplate { my ($template, $row) = @_; - my ( $meta, $text ) = TWiki::Store::readTemplateTopic($template); + my ( $meta, $text ) = TWiki::UI::readTemplateTopic($template); my $log = "$b Writing topic ".$row->{webName}.".".$row->{WikiName}."\n"; @@ -676,6 +678,7 @@ # die Dumper(\%data); $meta->put( "TOPICPARENT", ( "name" => $TWiki::wikiUsersTopicname ) ); +# die $data{WikiName}; TWiki::Store::saveTopic( $data{webName}, $data{WikiName}, $text, $meta, "", 1 ); return $log; @@ -772,7 +775,7 @@ # die Dumper(\%data); $email = buildConfirmationEmail( \%data, - TWiki::Store::readTemplate( "registernotify", $skin ), + TWiki::Templates::readTemplate( "registernotify", $skin ), $TWiki::doHidePasswdInRegistration ); @@ -783,7 +786,7 @@ $email = buildConfirmationEmail( \%data, - TWiki::Store::readTemplate( "registernotifyadmin", $skin ), + TWiki::Templates::readTemplate( "registernotifyadmin", $skin ), 1 ); my $err2 = TWiki::Net::sendEmail($email); @@ -867,7 +870,7 @@ } # check if WikiName is a WikiName - if ( !TWiki::isWikiName( $data{WikiName} ) ) { + if ( !TWiki::isValidWikiWord( $data{WikiName} ) ) { return TWiki::getOopsUrl( $data{webName}, $topic, "oopsregwiki" ); } @@ -926,7 +929,7 @@ sub sendEmail { my %p = @_; die "no template in sendEmail ".Dumper(\%p) unless $p{template}; #SMELL - no way to throw - my $text = TWiki::Store::readTemplate($p{template}); + my $text = TWiki::Templates::readTemplate($p{template}); $text =~ s/%LOGINNAME%/$p{LoginName}/go; $text =~ s/%FIRSTLASTNAME%/$p{Name}/go; Modified: twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/User.pm =================================================================== --- twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/User.pm 2004-11-30 18:58:48 UTC (rev 3305) +++ twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/User.pm 2004-11-30 18:59:21 UTC (rev 3306) @@ -80,7 +80,7 @@ my $passwordHandlerName = $PasswordImpl; - my $handler = $passwordHandlerName->new( ); + my $passwordHandler = $passwordHandlerName->new( ); $wikiNamesMapped = 0; return $passwordHandler; @@ -255,6 +255,13 @@ } =pod +---++ getEmail( $wikiName ) ==> $emailAddress +| Description: | get the Users EmailAddress | +| Parameter: =$wikiName= | the users TWikiName | +| Return: =$topicName= | the email address corresponding to the wikiName | + +=cut + sub getEmail { my ($wikiName) = @_; my $mainWebname = $TWiki::mainWebname; @@ -276,7 +283,7 @@ my @userList = TWiki::Access::getUsersOfGroup( $wikiName ); foreach my $user ( @userList ) { $user =~ s/^.*\.//;# Get rid of 'Main.' part. - foreach my $email ( TWiki::getEmailOfUser($user) ) { + foreach my $email ( TWiki::getEmail($user) ) { push @list, $email; } } @@ -291,37 +298,45 @@ =pod -Returns the email addresses bulletfield / metafield on the page -Each should be handled by separate implementation classes. +Returns array of email addresses referenced in +the bulletfield / metafield on the page. =cut sub getEmailAddressesFromPage { my ($mainWebname, $wikiName) = @_; - my @emailAddresses = (); # die Dumper(\@_); - foreach ( - split ( /\n/, - TWiki::Store::readWebTopic( - $mainWebname, - $wikiName ) - ) - ) - { + return getField($mainWebname, $wikiName, "Email"); +} + +# SMELL - this is no longer specific to users - surely any topic has fields +# SMELL - returns singular if refering to a field in meta, but multiple if values are defined that way in topic content +sub getField { + my ($web, $topic, $fieldName) = @_; + my ($meta, @text) = TWiki::Store::readTopic( + $web, + $topic, + undef, + 1 # SMELL Should this really be internal? + ); + my @fieldValues; + my %entry = $meta->findOne("FIELD", $fieldName); # SMELL - do we always want a singular entry? + if (keys %entry) { + return ($entry{value}); + } else { + + foreach (split ( /\n/, @text )) { # REFACTOR UserData::BulletFieldsImpl - if (/^\s\*\sEmail:\s+([\w\-\.\+]+\@[\w\-\.\+]+)/) { - # Add email address to list - push @emailAddresses, $1; + if (/^\s\*\s$fieldName:\s+([\w\-\.\+]+\@[\w\-\.\+]+)/) { # SMELL - is this only suited to email? + push @fieldValues, $1; } - - # REFACTOR UserData::MetaFieldsImpl - if (/^\%META\:FIELD\{name="Email"(.*?)value="(.*)"\}%/) { - push @emailAddresses, $2; - } + } } - return @emailAddresses; + return @fieldValues; } + +=pod ---++ initializeRemoteUser( $remoteUser ) Return value: $remoteUser @@ -482,7 +497,7 @@ _cacheUserToWikiTranslations(); - $loginUser =~ s/$securityFilter//go; + $loginUser =~ s/$TWiki::securityFilter//go; my $wUser = $userToWikiList{ $loginUser }; # New behaviour for RegisterCgiScriptRewrite @@ -497,7 +512,7 @@ # return with webName unless ($flag) { - return "$mainWebname.$wUser"; + return "$TWiki::mainWebname.$wUser"; } # v2 - blindy return loginName if mapping not present. |