--- loncom/interface/loncreateuser.pm 2007/12/05 21:23:14 1.202 +++ loncom/interface/loncreateuser.pm 2007/12/07 23:09:30 1.204 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.202 2007/12/05 21:23:14 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.204 2007/12/07 23:09:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -787,7 +787,7 @@ ENDCHANGEUSER &personal_data_display($ccuname,$ccdomain,$newuser, %inst_results)); if ($context eq 'domain') { - $r->print(&Apache::lonuserutils::forceid_change()); + $r->print(&Apache::lonuserutils::forceid_change($context)); } $r->print(''); my $user_auth_text = @@ -1591,17 +1591,23 @@ sub update_user_data { # Check to see if we need to change user information foreach my $item ('firstname','middlename','lastname','generation','permanentemail','id') { # Strip leading and trailing whitespace - $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g; + $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g; } # Check to see if we can change the ID/student number my $forceid = $env{'form.forceid'}; my $recurseid = $env{'form.recurseid'}; my $newuser = 0; - my $disallowed_id = 0; my (%alerts,%rulematch,%idinst_results,%curr_rules,%got_rules); - if (!$forceid) { - $env{'form.cid'} = $userenv{'id'}; - } elsif ($env{'form.cid'} ne $userenv{'id'}) { + my %uidhash = &Apache::lonnet::idrget($env{'form.ccdomain'}, + $env{'form.ccuname'}); + if (($uidhash{$env{'form.ccuname'}}) && + ($uidhash{$env{'form.ccuname'}}!~/error\:/) && + (!$forceid)) { + if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) { + $env{'form.cid'} = $userenv{'id'}; + } + } + if ($env{'form.cid'} ne $userenv{'id'}) { my $checkhash; my $checks = { 'id' => 1 }; $checkhash->{$env{'form.ccuname'}.':'.$env{'form.ccdomain'}} = @@ -1612,15 +1618,17 @@ sub update_user_data { \%alerts,\%rulematch,\%idinst_results,\%curr_rules,\%got_rules); if (ref($alerts{'id'}) eq 'HASH') { if (ref($alerts{'id'}{$env{'form.ccdomain'}}) eq 'HASH') { - $disallowed_id = 1; + $env{'form.cid'} = $userenv{'id'}; } } } my ($quotachanged,$namechanged,$oldportfolioquota,$newportfolioquota, - $inststatus,$isdefault,$defquotatext); + $inststatus,$oldisdefault,$newisdefault,$olddefquotatext, + $newdefquotatext); my ($defquota,$settingstatus) = &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus); my %changeHash; + $changeHash{'portfolioquota'} = $userenv{'portfolioquota'}; if ($userenv{'portfolioquota'} ne '') { $oldportfolioquota = $userenv{'portfolioquota'}; if ($env{'form.customquota'} == 1) { @@ -1630,15 +1638,16 @@ sub update_user_data { $newportfolioquota = $env{'form.portfolioquota'}; $newportfolioquota =~ s/[^\d\.]//g; } - if ($newportfolioquota != $userenv{'portfolioquota'}) { + if ($newportfolioquota != $oldportfolioquota) { $quotachanged = "a_admin($newportfolioquota,\%changeHash); } } else { $quotachanged = "a_admin('',\%changeHash); $newportfolioquota = $defquota; - $isdefault = 1; + $newisdefault = 1; } } else { + $oldisdefault = 1; $oldportfolioquota = $defquota; if ($env{'form.customquota'} == 1) { if ($env{'form.portfolioquota'} eq '') { @@ -1650,21 +1659,14 @@ sub update_user_data { $quotachanged = "a_admin($newportfolioquota,\%changeHash); } else { $newportfolioquota = $defquota; - $isdefault = 1; + $newisdefault = 1; } } - if ($isdefault) { - if ($settingstatus eq '') { - $defquotatext = &mt('(default)'); - } else { - my ($usertypes,$order) = - &Apache::lonnet::retrieve_inst_usertypes($env{'form.ccdomain'}); - if ($usertypes->{$settingstatus} eq '') { - $defquotatext = &mt('(default)'); - } else { - $defquotatext = &mt('(default for [_1])',$usertypes->{$settingstatus}); - } - } + if ($oldisdefault) { + $olddefquotatext = &get_defaultquota_text($settingstatus); + } + if ($newisdefault) { + $newdefquotatext = &get_defaultquota_text($settingstatus); } if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}) && ($env{'form.cfirstname'} ne $userenv{'firstname'} || @@ -1675,18 +1677,30 @@ sub update_user_data { $env{'form.cpermanentemail'} ne $userenv{'permanentemail'} )) { $namechanged = 1; } - if ($namechanged) { - # Make the change + if ($namechanged || $quotachanged) { $changeHash{'firstname'} = $env{'form.cfirstname'}; $changeHash{'middlename'} = $env{'form.cmiddlename'}; $changeHash{'lastname'} = $env{'form.clastname'}; $changeHash{'generation'} = $env{'form.cgeneration'}; $changeHash{'id'} = $env{'form.cid'}; $changeHash{'permanentemail'} = $env{'form.cpermanentemail'}; - my $putresult = &Apache::lonnet::put - ('environment',\%changeHash, - $env{'form.ccdomain'},$env{'form.ccuname'}); - if ($putresult eq 'ok') { + my ($quotachgresult,$namechgresult); + if ($quotachanged) { + $quotachgresult = + &Apache::lonnet::put('environment',\%changeHash, + $env{'form.ccdomain'},$env{'form.ccuname'}); + } + if ($namechanged) { + # Make the change + $namechgresult = + &Apache::lonnet::modifyuser($env{'form.ccdomain'}, + $env{'form.ccuname'},$changeHash{'id'},undef,undef, + $changeHash{'firstname'},$changeHash{'middlename'}, + $changeHash{'lastname'},$changeHash{'generation'}, + $changeHash{'id'},undef,$changeHash{'permanentemail'}); + } + if (($namechanged && $namechgresult eq 'ok') || + ($quotachanged && $quotachgresult eq 'ok')) { # Tell the user we changed the name my %lt=&Apache::lonlocal::texthash( 'uic' => "User Information Changed", @@ -1723,7 +1737,7 @@ END