[LON-CAPA-cvs] cvs: loncom /build make_domain_coordinator.pl
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Mon, 31 Dec 2007 16:52:28 -0000
raeburn Mon Dec 31 11:52:28 2007 EDT
Modified files:
/loncom/build make_domain_coordinator.pl
Log:
Bug 5544
- add user to MySQL allusers table
- add information about role to nohist_domainroles.db
- include start time in role
Index: loncom/build/make_domain_coordinator.pl
diff -u loncom/build/make_domain_coordinator.pl:1.12 loncom/build/make_domain_coordinator.pl:1.13
--- loncom/build/make_domain_coordinator.pl:1.12 Fri Jun 1 01:17:58 2007
+++ loncom/build/make_domain_coordinator.pl Mon Dec 31 11:52:26 2007
@@ -11,7 +11,7 @@
# 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 @@
use lib '/home/httpd/lib/perl/';
use LONCAPA;
+use LONCAPA::lonmetadata;
+use DBI;
=pod
@@ -372,7 +374,8 @@
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 @@
`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 @@
=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 @@
Written to help the LON-CAPA project.
=cut
+