version 1.917, 2007/10/01 23:53:44
|
version 1.918, 2007/10/03 19:57:26
|
Line 2183 sub flushcourselogs {
|
Line 2183 sub flushcourselogs {
|
delete $courselogs{$crsid}; |
delete $courselogs{$crsid}; |
} |
} |
} |
} |
if ($courseidbuffer{$coursehombuf{$crsid}}) { |
$courseidbuffer{$coursehombuf{$crsid}}{$crsid} = ( |
$courseidbuffer{$coursehombuf{$crsid}}.='&'. |
'description' => &escape($coursedescrbuf{$crsid}), |
&escape($crsid).'='.&escape($coursedescrbuf{$crsid}). |
'instcode' => &escape($courseinstcodebuf{$crsid}), |
':'.&escape($courseinstcodebuf{$crsid}).':'.&escape($courseownerbuf{$crsid}).':'.&escape($coursetypebuf{$crsid}); |
'type' => &escape($coursetypebuf{$crsid}), |
} else { |
'owner' => &escape($courseownerbuf{$crsid}), |
$courseidbuffer{$coursehombuf{$crsid}}= |
); |
&escape($crsid).'='.&escape($coursedescrbuf{$crsid}). |
|
':'.&escape($courseinstcodebuf{$crsid}).':'.&escape($courseownerbuf{$crsid}).':'.&escape($coursetypebuf{$crsid}); |
|
} |
|
} |
} |
# |
# |
# Write course id database (reverse lookup) to homeserver of courses |
# Write course id database (reverse lookup) to homeserver of courses |
# Is used in pickcourse |
# Is used in pickcourse |
# |
# |
foreach my $crs_home (keys(%courseidbuffer)) { |
foreach my $crs_home (keys(%courseidbuffer)) { |
&courseidput(&host_domain($crs_home),$courseidbuffer{$crs_home}, |
my $response = &courseidput(&host_domain($crs_home), |
$crs_home); |
$courseidbuffer{$crs_home},$crs_home); |
} |
} |
# |
# |
# File accesses |
# File accesses |
Line 2505 sub getannounce {
|
Line 2502 sub getannounce {
|
# |
# |
|
|
sub courseidput { |
sub courseidput { |
my ($domain,$what,$coursehome)=@_; |
my ($domain,$storehash,$coursehome)=@_; |
return &reply('courseidput:'.$domain.':'.$what,$coursehome); |
my $items=''; |
|
my $now = time; |
|
foreach my $item (keys(%$storehash)) { |
|
$storehash->{$item}{'lasttime'} = $now; |
|
$items.=&escape($item).'='.&freeze_escape($$storehash{$item}).'&'; |
|
} |
|
$items=~s/\&$//; |
|
my $outcome = &reply('courseidputhash:'.$domain.':'.$items,$coursehome); |
|
if ($outcome eq 'unknown_cmd') { |
|
my $what; |
|
foreach my $cid (keys(%$storehash)) { |
|
$what .= &escape($cid).'='; |
|
foreach my $item ('description','instcode','owner','type') { |
|
$what .= $storehash->{$item}.':'; |
|
} |
|
$what =~ s/\:$/&/; |
|
} |
|
$what =~ s/\&$//; |
|
return &reply('courseidput:'.$domain.':'.$what,$coursehome); |
|
} else { |
|
return $outcome; |
|
} |
} |
} |
|
|
sub courseiddump { |
sub courseiddump { |
my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,$coursefilter,$hostidflag,$hostidref,$typefilter,$regexp_ok)=@_; |
my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,$coursefilter,$hostidflag,$hostidref,$typefilter,$regexp_ok)=@_; |
my %returnhash=(); |
my $as_hash = 1; |
unless ($domfilter) { $domfilter=''; } |
my %returnhash; |
|
if (!$domfilter) { $domfilter=''; } |
my %libserv = &all_library(); |
my %libserv = &all_library(); |
foreach my $tryserver (keys(%libserv)) { |
foreach my $tryserver (keys(%libserv)) { |
if ( ( $hostidflag == 1 |
if ( ( $hostidflag == 1 |
&& grep(/^\Q$tryserver\E$/,@{$hostidref}) ) |
&& grep(/^\Q$tryserver\E$/,@{$hostidref}) ) |
|| (!defined($hostidflag)) ) { |
|| (!defined($hostidflag)) ) { |
|
|
if ($domfilter eq '' |
if (($domfilter eq '') || |
|| (&host_domain($tryserver) eq $domfilter)) { |
(&host_domain($tryserver) eq $domfilter)) { |
foreach my $line ( |
my $rep = |
split(/\&/,&reply('courseiddump:'.&host_domain($tryserver).':'. |
&reply('courseiddump:'.&host_domain($tryserver).':'. |
$sincefilter.':'.&escape($descfilter).':'. |
$sincefilter.':'.&escape($descfilter).':'. |
&escape($instcodefilter).':'.&escape($ownerfilter).':'.&escape($coursefilter).':'.&escape($typefilter).':'.&escape($regexp_ok), |
&escape($instcodefilter).':'.&escape($ownerfilter). |
$tryserver))) { |
':'.&escape($coursefilter).':'.&escape($typefilter). |
my ($key,$value)=split(/\=/,$line,2); |
':'.&escape($regexp_ok).':'.$as_hash,$tryserver); |
if (($key) && ($value)) { |
my @pairs=split(/\&/,$rep); |
$returnhash{&unescape($key)}=$value; |
foreach my $item (@pairs) { |
} |
my ($key,$value)=split(/\=/,$item,2); |
|
$key = &unescape($key); |
|
next if ($key =~ /^error: 2 /); |
|
my $result = &thaw_unescape($value); |
|
if (ref($result) eq 'HASH') { |
|
$returnhash{$key}=$result; |
|
} else { |
|
my @responses = split(/:/,$result); |
|
my @items = ('description','instcode','owner','type'); |
|
for (my $i=0; $i<@responses; $i++) { |
|
$returnhash{$key}{$items[$i]} = $responses[$i]; |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
Line 4975 sub auto_instcode_defaults {
|
Line 5006 sub auto_instcode_defaults {
|
} |
} |
|
|
sub auto_validate_class_sec { |
sub auto_validate_class_sec { |
my ($cdom,$cnum,$owner,$inst_class) = @_; |
my ($cdom,$cnum,$owners,$inst_class) = @_; |
my $homeserver = &homeserver($cnum,$cdom); |
my $homeserver = &homeserver($cnum,$cdom); |
|
my $ownerlist; |
|
if (ref($owners) eq 'ARRAY') { |
|
$ownerlist = join(',',@{$owners}); |
|
} else { |
|
$ownerlist = $owners; |
|
} |
my $response=&reply('autovalidateclass_sec:'.$inst_class.':'. |
my $response=&reply('autovalidateclass_sec:'.$inst_class.':'. |
&escape($owner).':'.$cdom,$homeserver); |
&escape($ownerlist).':'.$cdom,$homeserver); |
return $response; |
return $response; |
} |
} |
|
|
Line 5507 sub createcourse {
|
Line 5544 sub createcourse {
|
} |
} |
# ----------------------------------------------------------------- Course made |
# ----------------------------------------------------------------- Course made |
# log existence |
# log existence |
&courseidput($udom,&escape($udom.'_'.$uname).'='.&escape($description). |
my $newcourse = { |
':'.&escape($inst_code).':'.&escape($course_owner).':'. |
$udom.'_'.$uname => { |
&escape($crstype),$uhome); |
description => &escape($description), |
|
inst_code => &escape($inst_code), |
|
owner => &escape($course_owner), |
|
type => &escape($crstype), |
|
}, |
|
}; |
|
&courseidput($udom,$newcourse); |
&flushcourselogs(); |
&flushcourselogs(); |
# set toplevel url |
# set toplevel url |
my $topurl=$url; |
my $topurl=$url; |
Line 5540 ENDINITMAP
|
Line 5583 ENDINITMAP
|
sub is_course { |
sub is_course { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my %courses = &courseiddump($cdom,'.',1,'.','.',$cnum,undef, |
my %courses = &courseiddump($cdom,'.',1,'.','.',$cnum,undef, |
undef,'.'); |
undef,'.',undef,1); |
if (exists($courses{$cdom.'_'.$cnum})) { |
if (exists($courses{$cdom.'_'.$cnum})) { |
return 1; |
return 1; |
} |
} |