version 1.51.2.1, 2006/05/15 23:44:46
|
version 1.52, 2006/04/06 20:24:13
|
Line 290 Returns: The value of a parameter, or ''
|
Line 290 Returns: The value of a parameter, or ''
|
|
|
This function cascades through the possible levels searching for a value for |
This function cascades through the possible levels searching for a value for |
a parameter. The levels are checked in the following order: |
a parameter. The levels are checked in the following order: |
user, course (at section level and course level), map, and lonnet::metadata. |
user, course (at group, section level and course level), map, and |
|
lonnet::metadata. |
This function uses %parmhash, which must be tied prior to calling it. |
This function uses %parmhash, which must be tied prior to calling it. |
This function also requires %courseopt and %useropt to be initialized for |
This function also requires %courseopt and %useropt to be initialized for |
this user and course. |
this user and course. |
Line 301 this user and course.
|
Line 302 this user and course.
|
################################################## |
################################################## |
sub parmval { |
sub parmval { |
my $self = shift; |
my $self = shift; |
my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn)=@_; |
my ($what,$symb,$uname,$udom,$csec,$recurse,$mapname,$id,$fn,$cgroup)=@_; |
$uname = $self->{'name'} if (! defined($uname)); |
$uname = $self->{'name'} if (! defined($uname)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$udom = $self->{'domain'} if (! defined($udom)); |
$csec = $self->{'section'} if (! defined($csec)); |
$csec = $self->{'section'} if (! defined($csec)); |
$symb = $self->{'symb'} if (! defined($symb)); |
$cgroup = $self->{'group'} if (! defined($cgroup)); |
|
$symb = $self->{'symb'} if (! defined($symb)); |
# |
# |
my $result=''; |
my $result=''; |
# |
# |
# This should be a |
# This should be a |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
if (!defined($mapname) || !defined($id) || !defined($fn)) { |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
$mapname = &Apache::lonnet::deversion($mapname); |
|
} |
} |
# Cascading lookup scheme |
# Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
Line 324 sub parmval {
|
Line 325 sub parmval {
|
my $courseprefix = $self->{'cid'}; |
my $courseprefix = $self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
my $usercourseprefix = $uname.'_'.$udom.'_'.$self->{'cid'}; |
# |
# |
|
my $grplevel=$courseprefix.'.['.$cgroup.'].'.$what; |
|
my $grplevelr=$courseprefix.'.['.$cgroup.'].'.$symbparm; |
|
my $grplevelm=$courseprefix.'.['.$cgroup.'].'.$mapparm; |
|
# |
my $seclevel = $courseprefix.'.['.$csec.'].'.$what; |
my $seclevel = $courseprefix.'.['.$csec.'].'.$what; |
my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelr = $courseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; |
my $seclevelm = $courseprefix.'.['.$csec.'].'.$mapparm; |
Line 335 sub parmval {
|
Line 340 sub parmval {
|
my $ucourselevel = $usercourseprefix.'.'.$what; |
my $ucourselevel = $usercourseprefix.'.'.$what; |
my $ucourselevelr = $usercourseprefix.'.'.$symbparm; |
my $ucourselevelr = $usercourseprefix.'.'.$symbparm; |
my $ucourselevelm = $usercourseprefix.'.'.$mapparm; |
my $ucourselevelm = $usercourseprefix.'.'.$mapparm; |
# check user |
# check user |
if (defined($uname)) { |
if (defined($uname)) { |
return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); |
return $useropt{$ucourselevelr} if (defined($useropt{$ucourselevelr})); |
return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); |
return $useropt{$ucourselevelm} if (defined($useropt{$ucourselevelm})); |
return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); |
return $useropt{$ucourselevel} if (defined($useropt{$ucourselevel})); |
} |
} |
|
# check group |
|
if (defined($cgroup)) { |
|
return $courseopt{$grplevelr} if (defined($courseopt{$grplevelr})); |
|
return $courseopt{$grplevelm} if (defined($courseopt{$grplevelm})); |
|
return $courseopt{$grplevel} if (defined($courseopt{$grplevel})); |
|
} |
# check section |
# check section |
if (defined($csec)) { |
if (defined($csec)) { |
return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr})); |
return $courseopt{$seclevelr} if (defined($courseopt{$seclevelr})); |
Line 632 sub get_parameter_values {
|
Line 643 sub get_parameter_values {
|
if (tie(%parmhash,'GDBM_File', |
if (tie(%parmhash,'GDBM_File', |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
$self->{'coursefilename'}.'_parms.db',&GDBM_READER(),0640)) { |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($self->{'symb'}); |
$mapname = &Apache::lonnet::deversion($mapname); |
|
foreach my $parmname (@Parameters) { |
foreach my $parmname (@Parameters) { |
my $value = $self->parmval($parmname,$self->{'symb'}, |
my $value = $self->parmval($parmname,$self->{'symb'}, |
$self->{'name'},$self->{'domain'}, |
$self->{'name'},$self->{'domain'}, |