--- loncom/interface/domainprefs.pm 2011/02/07 22:00:22 1.138.2.7
+++ loncom/interface/domainprefs.pm 2011/10/03 02:26:22 1.138.2.10
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.138.2.7 2011/02/07 22:00:22 raeburn Exp $
+# $Id: domainprefs.pm,v 1.138.2.10 2011/10/03 02:26:22 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -140,7 +140,7 @@ autolimit
=over
-- course requests will be processed autoatically up to a limit of
+- course requests will be processed automatically up to a limit of
N requests for the course type for the particular requestor.
If N is undefined, there is no limit to the number of course requests
which a course owner may submit and have processed automatically.
@@ -171,6 +171,9 @@ use Locale::Language;
use DateTime::TimeZone;
use DateTime::Locale;
+my $registered_cleanup;
+my $modified_urls;
+
sub handler {
my $r=shift;
if ($r->header_only) {
@@ -190,6 +193,10 @@ sub handler {
"/adm/domainprefs:mau:0:0:Cannot modify domain settings";
return HTTP_NOT_ACCEPTABLE;
}
+
+ $registered_cleanup=0;
+ @{$modified_urls}=();
+
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['phase','actions']);
@@ -1878,24 +1885,23 @@ sub print_autocreate {
' '.&mt('Yes').' '.
' '.&mt('No').' ';
+ $createoff{'xml'}.' value="0" />'.&mt('No').''.
+ '
'.
+ ''.&mt('Create pending requests for official courses (if validated)').' '.
+ ''.
+ ' '.&mt('Yes').' '.
+ ' '.&mt('No').' ';
my ($numdc,$dctable) = &active_dc_picker($dom,$curr_dc);
if ($numdc > 1) {
- $datatable .= ' '.
- &mt('XML files processed as: (choose Dom. Coord.)').
- ' '.$dctable.' '.
- '';
+ $datatable .= ' '.
+ &mt('Course creation processed as: (choose Dom. Coord.)').
+ ' '.$dctable.' ';
$$rowtotal ++ ;
} else {
- $datatable .= '';
+ $datatable .= $dctable.' ';
}
- $datatable .= ''.&mt('Create pending requests for official courses (if validated)').' '.
- ''.
- ' '.&mt('Yes').' '.
- ' '.&mt('No').' '.
- '';
return $datatable;
}
@@ -4476,8 +4482,15 @@ $env{'user.name'}.':'.$env{'user.domain'
if (copy($source,$copyfile)) {
print $logfile "\nCopied original source to ".$copyfile."\n";
$output = 'ok';
- &write_metadata($dom,$confname,$formname,$targetdir,$file,$logfile);
$logourl = '/res/'.$dom.'/'.$confname.'/'.$fname;
+ push(@{$modified_urls},[$copyfile,$source]);
+ my $metaoutput =
+ &write_metadata($dom,$confname,$formname,$targetdir,$file,$logfile);
+ unless ($registered_cleanup) {
+ my $handlers = $r->get_handlers('PerlCleanupHandler');
+ $r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]);
+ $registered_cleanup=1;
+ }
} else {
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n";
$output = &mt('Failed to copy file to RES space').", $!";
@@ -4495,8 +4508,15 @@ $env{'user.name'}.':'.$env{'user.domain'
my $copyfile=$targetdir.'/tn-'.$file;
if (copy($outfile,$copyfile)) {
print $logfile "\nCopied source to ".$copyfile."\n";
- &write_metadata($dom,$confname,$formname,
- $targetdir,'tn-'.$file,$logfile);
+ my $thumb_metaoutput =
+ &write_metadata($dom,$confname,$formname,
+ $targetdir,'tn-'.$file,$logfile);
+ push(@{$modified_urls},[$copyfile,$outfile]);
+ unless ($registered_cleanup) {
+ my $handlers = $r->get_handlers('PerlCleanupHandler');
+ $r->set_handlers('PerlCleanupHandler' => [\¬ifysubscribed,@{$handlers}]);
+ $registered_cleanup=1;
+ }
} else {
print $logfile "\nUnable to write ".$copyfile.
':'.$!."\n";
@@ -4561,30 +4581,80 @@ sub write_metadata {
{
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file;
my $mfh;
- unless (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) {
+ if (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) {
+ foreach (sort keys %metadatafields) {
+ unless ($_=~/\./) {
+ my $unikey=$_;
+ $unikey=~/^([A-Za-z]+)/;
+ my $tag=$1;
+ $tag=~tr/A-Z/a-z/;
+ print $mfh "\n\<$tag";
+ foreach (split(/\,/,$metadatakeys{$unikey})) {
+ my $value=$metadatafields{$unikey.'.'.$_};
+ $value=~s/\"/\'\'/g;
+ print $mfh ' '.$_.'="'.$value.'"';
+ }
+ print $mfh '>'.
+ &HTML::Entities::encode($metadatafields{$unikey},'<>&"')
+ .''.$tag.'>';
+ }
+ }
+ $output = 'ok';
+ print $logfile "\nWrote metadata";
+ close($mfh);
+ }
+ } else {
+ print $logfile "\nFailed to open metadata file";
$output = &mt('Could not write metadata');
}
- foreach (sort keys %metadatafields) {
- unless ($_=~/\./) {
- my $unikey=$_;
- $unikey=~/^([A-Za-z]+)/;
- my $tag=$1;
- $tag=~tr/A-Z/a-z/;
- print $mfh "\n\<$tag";
- foreach (split(/\,/,$metadatakeys{$unikey})) {
- my $value=$metadatafields{$unikey.'.'.$_};
- $value=~s/\"/\'\'/g;
- print $mfh ' '.$_.'="'.$value.'"';
- }
- print $mfh '>'.
- &HTML::Entities::encode($metadatafields{$unikey},'<>&"')
- .''.$tag.'>';
- }
- }
- $output = 'ok';
- print $logfile "\nWrote metadata";
- close($mfh);
}
+ return $output;
+}
+
+sub notifysubscribed {
+ foreach my $targetsource (@{$modified_urls}){
+ next unless (ref($targetsource) eq 'ARRAY');
+ my ($target,$source)=@{$targetsource};
+ if ($source ne '') {
+ if (open(my $logfh,'>>'.$source.'.log')) {
+ print $logfh "\nCleanup phase: Notifications\n";
+ my @subscribed=&subscribed_hosts($target);
+ foreach my $subhost (@subscribed) {
+ print $logfh "\nNotifying host ".$subhost.':';
+ my $reply=&Apache::lonnet::critical('update:'.$target,$subhost);
+ print $logfh $reply;
+ }
+ my @subscribedmeta=&subscribed_hosts("$target.meta");
+ foreach my $subhost (@subscribedmeta) {
+ print $logfh "\nNotifying host for metadata only ".$subhost.':';
+ my $reply=&Apache::lonnet::critical('update:'.$target.'.meta',
+ $subhost);
+ print $logfh $reply;
+ }
+ print $logfh "\n============ Done ============\n";
+ close(logfh);
+ }
+ }
+ }
+ return OK;
+}
+
+sub subscribed_hosts {
+ my ($target) = @_;
+ my @subscribed;
+ if (open(my $fh,"<$target.subscription")) {
+ while (my $subline=<$fh>) {
+ if ($subline =~ /^($match_lonid):/) {
+ my $host = $1;
+ if ($host ne $Apache::lonnet::perlvar{'lonHostID'}) {
+ unless (grep(/^\Q$host\E$/,@subscribed)) {
+ push(@subscribed,$host);
+ }
+ }
+ }
+ }
+ }
+ return @subscribed;
}
sub check_switchserver {
@@ -4654,12 +4724,12 @@ sub modify_quotas {
$changes{'notify'}{'approval'} = 1;
}
} else {
- if ($domconfig{$action}{'notify'}{'approval'}) {
+ if ($confhash{'notify'}{'approval'}) {
$changes{'notify'}{'approval'} = 1;
}
}
} else {
- if ($domconfig{$action}{'notify'}{'approval'}) {
+ if ($confhash{'notify'}{'approval'}) {
$changes{'notify'}{'approval'} = 1;
}
}