Update of /cvs/scoop/scoop/lib/Scoop/Users
In directory sodium.sabren.com:/tmp/cvs-serv14523/lib/Scoop/Users

Modified Files:
	NewUser.pm Prefs.pm 
Log Message:
Fixes for userprefs (and comment post form) and some patented rusty 
"wouldn't it be cool if" features for userprefs.

-janra



Index: NewUser.pm
===================================================================
RCS file: /cvs/scoop/scoop/lib/Scoop/Users/NewUser.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** NewUser.pm	4 Aug 2004 21:49:48 -0000	1.1
--- NewUser.pm	17 Aug 2004 19:03:41 -0000	1.2
***************
*** 39,43 ****
  	
  	my $new_user_page = '';
! 	my $required_prefs = '';
  	
  	my $really_new_user = ( $S->{GID} eq 'Anonymous' ? 1 : 0 );
--- 39,43 ----
  	
  	my $new_user_page = '';
! 	my $signup_prefs = '';
  	
  	my $really_new_user = ( $S->{GID} eq 'Anonymous' ? 1 : 0 );
***************
*** 52,56 ****
  		$new_user_page .= $S->{UI}->{BLOCKS}->{new_user_html};
  
! 		# get required prefs
  		my $user = $S->user_data($S->{UID});
  		my @prefs = $S->_required_pref_list($user);
--- 52,56 ----
  		$new_user_page .= $S->{UI}->{BLOCKS}->{new_user_html};
  
! 		# get prefs shown on newuser form
  		my $user = $S->user_data($S->{UID});
  		my @prefs = $S->_required_pref_list($user);
***************
*** 65,83 ****
  					'title' => $current->{title},
  					'description' => $current->{description},
  					'allowed_html' => $allowed_html };
  			
  			$preftemplate = $S->interpolate($preftemplate,$keys);
  			$preftemplate =~ s/%%value%%/$prefvalue/;
! 			$required_prefs .= $preftemplate;
  		}
  	} elsif( !$is_advertiser ) {
  	
! 	$new_user_page .= $S->{UI}->{BLOCKS}->{new_user_has_account};
! 	$no_create = 1;
  	
  	} elsif( $is_advertiser && $S->{GID} eq $S->{UI}->{VARS}->{advertiser_group} ) {
  	
! 	$new_user_page .= $S->{UI}->{BLOCKS}->{new_advertiser_has_account};
! 	$no_create = 1;
  	
  	} elsif( $is_advertiser ) {
--- 65,84 ----
  					'title' => $current->{title},
  					'description' => $current->{description},
+ 					'required' => ($current->{signup} eq 'required') ? $S->{UI}->{BLOCKS}->{required_pref_marker} : '',
  					'allowed_html' => $allowed_html };
  			
  			$preftemplate = $S->interpolate($preftemplate,$keys);
  			$preftemplate =~ s/%%value%%/$prefvalue/;
! 			$signup_prefs .= $preftemplate;
  		}
  	} elsif( !$is_advertiser ) {
  	
! 		$new_user_page .= $S->{UI}->{BLOCKS}->{new_user_has_account};
! 		$no_create = 1;
  	
  	} elsif( $is_advertiser && $S->{GID} eq $S->{UI}->{VARS}->{advertiser_group} ) {
  	
! 		$new_user_page .= $S->{UI}->{BLOCKS}->{new_advertiser_has_account};
! 		$no_create = 1;
  	
  	} elsif( $is_advertiser ) {
***************
*** 148,152 ****
  	$new_user_page =~ s/%%email%%/$email/g;
  	$new_user_page =~ s/%%formkey%%/$formkey/g;
! 	$new_user_page =~ s/%%required_prefs%%/$required_prefs/g;
  
  
--- 149,153 ----
  	$new_user_page =~ s/%%email%%/$email/g;
  	$new_user_page =~ s/%%formkey%%/$formkey/g;
! 	$new_user_page =~ s/%%signup_prefs%%/$signup_prefs/g;
  
  

Index: Prefs.pm
===================================================================
RCS file: /cvs/scoop/scoop/lib/Scoop/Users/Prefs.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Prefs.pm	4 Aug 2004 21:49:48 -0000	1.1
--- Prefs.pm	17 Aug 2004 19:03:41 -0000	1.2
***************
*** 93,97 ****
  	}
  	$message .= $S->_save_user_prefs($page, $uid, $nick) if ($write); 
! 
  	warn "(get_user_prefs) first login? $firstlogin" if $DEBUG;
  	if ($firstlogin) {
--- 93,97 ----
  	}
  	$message .= $S->_save_user_prefs($page, $uid, $nick) if ($write); 
! 	$nick = $S->cgi->param('nick'); # in case the nickname was changed
  	warn "(get_user_prefs) first login? $firstlogin" if $DEBUG;
  	if ($firstlogin) {
***************
*** 166,170 ****
  			my $prefvalue = (defined($user->{prefs}->{$pref})) ? $user->{prefs}->{$pref} : $current->{default_value};
  			$prefvalue = $S->_filter_display($prefvalue);
! 			my $required = $current->{required} ? $S->{UI}->{BLOCKS}->{required_pref_marker} : '';
  			my $preftemplate = $S->{UI}->{BLOCKS}->{$current->{template}};
  			my $allowed_html = $S->html_checker->allowed_html_as_string('pref') if $current->{html};
--- 166,170 ----
  			my $prefvalue = (defined($user->{prefs}->{$pref})) ? $user->{prefs}->{$pref} : $current->{default_value};
  			$prefvalue = $S->_filter_display($prefvalue);
! 			my $required = $current->{signup} eq 'required' ? $S->{UI}->{BLOCKS}->{required_pref_marker} : '';
  			my $preftemplate = $S->{UI}->{BLOCKS}->{$current->{template}};
  			my $allowed_html = $S->html_checker->allowed_html_as_string('pref') if $current->{html};
***************
*** 273,287 ****
  			$return =~ s/, $//;
  
- 			# and update the rdf_channels table if the nickname was changed,
- 			# because it uses nick, not uid
- 			# this will have to get fixed someday
  			if ( $save{nickname} ) {
  				my ($rv2, $sth2) = $S->db_update({
  					WHAT  => 'rdf_channels',
  					SET   => "submittor = $save{nickname}",
! 					WHERE => "submittor = $nick"
  				});
  				$sth2->finish;
  			}
  		} else {
  			$return .= "Password incorrect";
--- 273,299 ----
  			$return =~ s/, $//;
  
  			if ( $save{nickname} ) {
+ 				# nickname has changed in db - better change it 
+ 				# wherever else it's needed...
+ 				if ( $uid == $S->{UID} ) {
+ 					$S->{NICK} = $params{nickname};
+ 					# this is the current user...
+ 				}
+ 				$S->param->{nick} = $params{nickname};
+ 				# and if not, everything else that checks the
+ 				# cgi params should see the change too
+ 
+ 				# and update the rdf_channels table if the
+ 				# nickname was changed, because it uses nick,
+ 				# not uid 
+ 				# this will have to get fixed someday
  				my ($rv2, $sth2) = $S->db_update({
  					WHAT  => 'rdf_channels',
  					SET   => "submittor = $save{nickname}",
! 					WHERE => "submittor = '$nick'"
  				});
  				$sth2->finish;
  			}
+ 			delete($S->{USER_DATA_CACHE}->{$uid});
  		} else {
  			$return .= "Password incorrect";
***************
*** 325,329 ****
  	# check if it's required
  	warn "$pref is required? $pref_item->{required}" if $DEBUG;
! 	if ( $pref_item->{required} && !$value ) {
  		warn "$pref is required and blank - error" if $DEBUG;
  		return "<P>%%error_font%%$pref_item->{title} is a required field%%error_font_end%%</P>";
--- 337,341 ----
  	# check if it's required
  	warn "$pref is required? $pref_item->{required}" if $DEBUG;
! 	if ( $pref_item->{signup} eq 'required' && !$value ) {
  		warn "$pref is required and blank - error" if $DEBUG;
  		return "<P>%%error_font%%$pref_item->{title} is a required field%%error_font_end%%</P>";
***************
*** 441,448 ****
  
  ####
! # returns an array of preference names which are marked as "required"
! # ordered by the page they're on, then the display order field
! # Not sure why one would use this for anything other than the new user page
! # but hey, it could happen. All perm/etc checks still done.
  ####
  
--- 453,460 ----
  
  ####
! # returns an array of preference names which are marked as shown on the newuser
! # page ordered by the page they're on, then the display order field Not sure
! # why one would use this for anything other than the new user page but hey, it
! # could happen. All perm/etc checks still done.
  ####
  
***************
*** 453,459 ****
  
  	my ($rv, $sth) = $S->db_select({
  				WHAT => 'prefname',
  				FROM => 'pref_items',
! 				WHERE => 'required = 1 AND enabled = 1',
  				ORDER_BY => 'display_order'
  	});
--- 465,472 ----
  
  	my ($rv, $sth) = $S->db_select({
+ 				DEBUG => $DEBUG,
  				WHAT => 'prefname',
  				FROM => 'pref_items',
! 				WHERE => q{signup IN ('required', 'signup') AND enabled = 1},
  				ORDER_BY => 'display_order'
  	});
***************
*** 464,467 ****
--- 477,481 ----
  		next if $S->{PREF_ITEMS}->{$pref}->{req_tu} && !( $user->{trustlev} == 2 || $S->have_perm('super_mojo',$user->{perm_group}) );
  		push @preflist, $pref;
+ 		warn "(_required_pref_list) adding $pref to list" if $DEBUG;
  	}
  	$sth->finish;