--- loncom/build/make_domain_coordinator.pl 2007/06/01 05:17:58 1.12 +++ loncom/build/make_domain_coordinator.pl 2007/12/31 16:52:26 1.13 @@ -11,7 +11,7 @@ make_domain_coordinator.pl - Make a doma # The LearningOnline Network # make_domain_coordinator.pl - Make a domain coordinator on a system # -# $Id: make_domain_coordinator.pl,v 1.12 2007/06/01 05:17:58 albertel Exp $ +# $Id: make_domain_coordinator.pl,v 1.13 2007/12/31 16:52:26 raeburn Exp $ # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # @@ -91,6 +91,8 @@ Set roles.hist and roles.db use lib '/home/httpd/lib/perl/'; use LONCAPA; +use LONCAPA::lonmetadata; +use DBI; =pod @@ -372,7 +374,8 @@ my $rolesref=&LONCAPA::locking_hash_tie( if (!$rolesref) { die('unable to tie roles db: '."$udpath/roles.db"); } -$rolesref->{'/'.$domain.'/_dc'}='dc'; # Set the domain coordinator role. +my $now = time; +$rolesref->{'/'.$domain.'/_dc'}='dc_0_'.$now; # Set the domain coordinator role. open(OUT, ">$udpath/roles.hist"); # roles.hist is the synchronous plain text. foreach my $key (keys(%{$rolesref})) { print(OUT $key.' : '.$rolesref->{$key}."\n"); @@ -384,6 +387,24 @@ close(OUT); `chown www:www $udpath/roles.hist`; # Must be writeable by httpd process. `chown www:www $udpath/roles.db`; # Must be writeable by httpd process. +my %perlvar = %{&LONCAPA::Configuration::read_conf('loncapa.conf')}; +my $dompath = $perlvar{'lonUsersDir'}.'/'.$domain; +my $domrolesref = &LONCAPA::locking_hash_tie("$dompath/nohist_domainroles.db",&GDBM_WRCREAT()); + +if (!$domrolesref) { + die('unable to tie nohist_domainroles db: '."$dompath/nohist_domainroles.db"); +} + +# Store in nohist_domainroles.db +my $domkey=&LONCAPA::escape('dc:'.$username.':'.$domain.'::'.$domain.':'); +$domrolesref->{$domkey}= &LONCAPA::escape('0:'.$now); +&LONCAPA::locking_hash_untie($domrolesref); + +#Update allusers MySQL table + +print "Adding new user to allusers table\n"; +&allusers_update($username,$domain,\%perlvar); + =pod =item 10. @@ -394,10 +415,67 @@ by going to http://MACHINENAME/adm/creat =cut # Output success message, and inform sysadmin about how to further proceed. -print("$username is now a domain coordinator\n"); # Output success message. +print("\n$username is now a domain coordinator\n"); # Output success message. my $hostname=`hostname`; chomp($hostname); # Read in hostname. -print("http://$hostname/adm/createuser will allow you to further define". - " this user.\n"); # Output a suggested URL. +print("\n".'Once LON-CAPA is running, you should log-in and use: '."\n". + 'http://'.$hostname.'/adm/createuser to further define this user.'."\n\n". + 'From the user management menu, click the link: "Add/Modify a Single User" '."\n". + 'to search for the user and to provide additional information (last name, first name etc.).'."\n"); +# Output a suggested URL. + +sub allusers_update { + my ($username,$domain,$perlvar) = @_; + my %tablenames = ( + 'allusers' => 'allusers', + ); + my $dbh; + unless ($dbh = DBI->connect("DBI:mysql:loncapa","www", + $perlvar->{'lonSqlAccess'}, + { RaiseError =>0,PrintError=>0})) { + print "Cannot connect to database!\n"; + return; + } + my $tablechk = &allusers_table_exists($dbh); + if ($tablechk == 0) { + my $request = + &LONCAPA::lonmetadata::create_metadata_storage('allusers','allusers'); + $dbh->do($request); + if ($dbh->err) { + print "Failed to crate allusers table\n"; + return; + } + } + my %userdata = ( + username => $username, + domain => $domain, + ); + my %loghash = + &LONCAPA::lonmetadata::process_allusers_data($dbh,undef, + \%tablenames,$username,$domain,\%userdata,'update'); + foreach my $key (keys(%loghash)) { + print $loghash{$key}."\n"; + } + return; +} + +sub allusers_table_exists { + my ($dbh) = @_; + my $sth=$dbh->prepare('SHOW TABLES'); + $sth->execute(); + my $aref = $sth->fetchall_arrayref; + $sth->finish(); + if ($sth->err()) { + return undef; + } + my $result = 0; + foreach my $table (@{$aref}) { + if ($table->[0] eq 'allusers') { + $result = 1; + last; + } + } + return $result; +} =pod @@ -406,3 +484,4 @@ print("http://$hostname/adm/createuser w Written to help the LON-CAPA project. =cut +