version 1.1014, 2009/08/11 11:33:52
|
version 1.1022, 2009/08/23 03:57:20
|
Line 3146 sub dcmaildump {
|
Line 3146 sub dcmaildump {
|
|
|
sub get_domain_roles { |
sub get_domain_roles { |
my ($dom,$roles,$startdate,$enddate)=@_; |
my ($dom,$roles,$startdate,$enddate)=@_; |
if (undef($startdate) || $startdate eq '') { |
if ((!defined($startdate)) || ($startdate eq '')) { |
$startdate = '.'; |
$startdate = '.'; |
} |
} |
if (undef($enddate) || $enddate eq '') { |
if ((!defined($enddate)) || ($enddate eq '')) { |
$enddate = '.'; |
$enddate = '.'; |
} |
} |
my $rolelist; |
my $rolelist; |
Line 5774 sub auto_instcode_format {
|
Line 5774 sub auto_instcode_format {
|
push(@homeservers,$tryserver); |
push(@homeservers,$tryserver); |
} |
} |
} |
} |
|
} elsif ($caller eq 'requests') { |
|
if ($codedom =~ /^$match_domain$/) { |
|
my $chome = &domain($codedom,'primary'); |
|
unless ($chome eq 'no_host') { |
|
push(@homeservers,$chome); |
|
} |
|
} |
} else { |
} else { |
push(@homeservers,&homeserver($caller,$codedom)); |
push(@homeservers,&homeserver($caller,$codedom)); |
} |
} |
Line 5874 sub auto_possible_instcodes {
|
Line 5881 sub auto_possible_instcodes {
|
|
|
sub auto_courserequest_checks { |
sub auto_courserequest_checks { |
my ($dom) = @_; |
my ($dom) = @_; |
my %validations; |
my ($homeserver,%validations); |
|
if ($dom =~ /^$match_domain$/) { |
|
$homeserver = &domain($dom,'primary'); |
|
} |
|
unless ($homeserver eq 'no_host') { |
|
my $response=&reply('autocrsreqchecks:'.$dom,$homeserver); |
|
unless ($response =~ /(con_lost|error|no_such_host|refused)/) { |
|
my @items = split(/&/,$response); |
|
foreach my $item (@items) { |
|
my ($key,$value) = split('=',$item); |
|
$validations{&unescape($key)} = &thaw_unescape($value); |
|
} |
|
} |
|
} |
return %validations; |
return %validations; |
} |
} |
|
|
sub auto_courserequest_validation { |
sub auto_courserequest_validation { |
my ($dom,$details,$inststatuses,$message) = @_; |
my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist) = @_; |
return 'pending'; |
my ($homeserver,$response); |
|
if ($dom =~ /^$match_domain$/) { |
|
$homeserver = &domain($dom,'primary'); |
|
} |
|
unless ($homeserver eq 'no_host') { |
|
|
|
$response=&unescape(&reply('autocrsreqvalidation:'.$dom.':'.&escape($owner). |
|
':'.&escape($crstype).':'.&escape($inststatuslist). |
|
':'.&escape($instcode).':'.&escape($instseclist), |
|
$homeserver)); |
|
} |
|
return $response; |
} |
} |
|
|
sub auto_validate_class_sec { |
sub auto_validate_class_sec { |
Line 6102 sub assignrole {
|
Line 6133 sub assignrole {
|
if ($refused) { |
if ($refused) { |
if (($selfenroll == 1) && ($role eq 'st') && ($udom eq $env{'user.domain'}) && ($uname eq $env{'user.name'})) { |
if (($selfenroll == 1) && ($role eq 'st') && ($udom eq $env{'user.domain'}) && ($uname eq $env{'user.name'})) { |
$refused = ''; |
$refused = ''; |
} else { |
} elsif ($context eq 'requestcourses') { |
|
if (($role eq 'cc') && ($env{'user.name'} ne '' && $env{'user.domain'} ne '')) { |
|
my ($cdom,$cnum) = ($cwosec =~ m{^/($match_domain)/($match_courseid)$}); |
|
my %crsenv = &userenvironment($cdom,$cnum,('internal.courseowner')); |
|
if ($crsenv{'internal.courseowner'} eq |
|
$env{'user.name'}.':'.$env{'user.domain'}) { |
|
$refused = ''; |
|
} |
|
} |
|
} |
|
if ($refused) { |
&logthis('Refused assignrole: '.$udom.' '.$uname.' '.$url. |
&logthis('Refused assignrole: '.$udom.' '.$uname.' '.$url. |
' '.$role.' '.$end.' '.$start.' by '. |
' '.$role.' '.$end.' '.$start.' by '. |
$env{'user.name'}.' at '.$env{'user.domain'}); |
$env{'user.name'}.' at '.$env{'user.domain'}); |
Line 6426 sub writecoursepref {
|
Line 6467 sub writecoursepref {
|
|
|
sub createcourse { |
sub createcourse { |
my ($udom,$description,$url,$course_server,$nonstandard,$inst_code, |
my ($udom,$description,$url,$course_server,$nonstandard,$inst_code, |
$course_owner,$crstype,$cnum)=@_; |
$course_owner,$crstype,$cnum,$context,$category)=@_; |
$url=&declutter($url); |
$url=&declutter($url); |
my $cid=''; |
my $cid=''; |
unless (&allowed('ccc',$udom)) { |
unless (&allowed('ccc',$udom)) { |
return 'refused'; |
if ($context eq 'requestcourses') { |
|
unless (&usertools_access($course_owner,$udom,$category,undef,$context)) { |
|
return 'refused'; |
|
} |
|
} else { |
|
return 'refused'; |
|
} |
} |
} |
# --------------------------------------------------------------- Get Unique ID |
# --------------------------------------------------------------- Get Unique ID |
my $uname; |
my $uname; |
Line 6529 sub is_course {
|
Line 6576 sub is_course {
|
return 0; |
return 0; |
} |
} |
|
|
sub store_coursereq { |
sub store_userdata { |
my ($requestkey,$storehash) = @_; |
my ($storehash,$datakey,$namespace,$udom,$uname) = @_; |
my $result; |
my $result; |
if ($requestkey =~ /^($match_domain)_($match_courseid)$/) { |
if ($datakey ne '') { |
if (ref($storehash) eq 'HASH') { |
if (ref($storehash) eq 'HASH') { |
my $namespace = 'courserequests'; |
if ($udom eq '' || $uname eq '') { |
my $uhome=&homeserver(); |
$udom = $env{'user.domain'}; |
|
$uname = $env{'user.name'}; |
|
} |
|
my $uhome=&homeserver($uname,$udom); |
if (($uhome eq '') || ($uhome eq 'no_host')) { |
if (($uhome eq '') || ($uhome eq 'no_host')) { |
$result = 'error: no_host'; |
$result = 'error: no_host'; |
} else { |
} else { |
Line 6548 sub store_coursereq {
|
Line 6598 sub store_coursereq {
|
} |
} |
$namevalue=~s/\&$//; |
$namevalue=~s/\&$//; |
$result = &reply("store:$env{'user.domain'}:$env{'user.name'}:". |
$result = &reply("store:$env{'user.domain'}:$env{'user.name'}:". |
"$namespace:$requestkey:$namevalue",$uhome); |
"$namespace:$datakey:$namevalue",$uhome); |
} |
} |
} else { |
} else { |
$result = 'error: data to store was not a hash reference'; |
$result = 'error: data to store was not a hash reference'; |