version 1.26, 2008/11/17 13:24:02
|
version 1.29, 2009/10/29 03:23:52
|
Line 27
|
Line 27
|
# |
# |
### |
### |
|
|
=head1 NAME |
|
|
|
Apache::LONCAPA |
|
|
|
LONCAPA - Basic routines |
|
|
|
=head1 SYNOPSIS |
|
|
|
Generally useful routines |
|
|
|
=head1 EXPORTED SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
escape() : unpack non-word characters into CGI-compatible hex codes |
|
|
|
=item * |
|
|
|
unescape() : pack CGI-compatible hex codes into actual non-word ASCII character |
|
|
|
=item * |
|
|
|
add_get_param() : |
|
Inputs: url (with or without exit GET from parameters), hash ref of |
|
form name => value pairs |
|
|
|
Return: url with properly added the form name elements and values to the |
|
the url doing proper escaping of the values and joining with ? or & |
|
as needed |
|
|
|
=back |
|
|
|
=cut |
|
|
|
package LONCAPA; |
package LONCAPA; |
|
|
Line 78 my $loncapa_max_wait_time = 13;
|
Line 44 my $loncapa_max_wait_time = 13;
|
use vars qw($match_domain $match_not_domain |
use vars qw($match_domain $match_not_domain |
$match_username $match_not_username |
$match_username $match_not_username |
$match_courseid $match_not_courseid |
$match_courseid $match_not_courseid |
|
$match_community |
$match_name |
$match_name |
$match_lonid |
$match_lonid |
$match_handle $match_not_handle); |
$match_handle $match_not_handle); |
Line 90 our @EXPORT = qw(&add_get_param &esca
|
Line 57 our @EXPORT = qw(&add_get_param &esca
|
our @EXPORT_OK = qw($match_domain $match_not_domain |
our @EXPORT_OK = qw($match_domain $match_not_domain |
$match_username $match_not_username |
$match_username $match_not_username |
$match_courseid $match_not_courseid |
$match_courseid $match_not_courseid |
|
$match_community |
$match_name |
$match_name |
$match_lonid |
$match_lonid |
$match_handle $match_not_handle); |
$match_handle $match_not_handle); |
our %EXPORT_TAGS = ( 'match' =>[qw($match_domain $match_not_domain |
our %EXPORT_TAGS = ( 'match' =>[qw($match_domain $match_not_domain |
$match_username $match_not_username |
$match_username $match_not_username |
$match_courseid $match_not_courseid |
$match_courseid $match_not_courseid |
|
$match_community |
$match_name |
$match_name |
$match_lonid |
$match_lonid |
$match_handle $match_not_handle)],); |
$match_handle $match_not_handle)],); |
my %perlvar; |
my %perlvar; |
|
|
|
|
=pod |
|
|
|
=head2 NOTE: |
|
|
|
add_get_param() |
|
|
|
Inputs are a url, and a hash ref of |
|
form name => value pairs |
|
takes care of properly adding the form name elements and values to the |
|
the url doing proper escaping of the values and joining with ? or & as |
|
needed |
|
|
|
=cut |
|
|
|
sub add_get_param { |
sub add_get_param { |
my ($url,$form_data) = @_; |
my ($url,$form_data) = @_; |
my $needs_question_mark = ($url !~ /\?/); |
my $needs_question_mark = ($url !~ /\?/); |
Line 167 sub clean_username {
|
Line 122 sub clean_username {
|
|
|
|
|
$match_courseid = $LONCAPA::courseid_re = qr{\d[\w\-.]+}; |
$match_courseid = $LONCAPA::courseid_re = qr{\d[\w\-.]+}; |
|
$match_community =$LONCAPA::community_re = qr{0[\w\-.]+}; |
$match_not_courseid = $LONCAPA::not_courseid_re = qr{[^\w\-.]+}; |
$match_not_courseid = $LONCAPA::not_courseid_re = qr{[^\w\-.]+}; |
sub clean_courseid { |
sub clean_courseid { |
my ($courseid) = @_; |
my ($courseid) = @_; |
Line 209 sub propath {
|
Line 165 sub propath {
|
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
my $proname="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname"; |
my $proname="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname"; |
return $proname; |
return $proname; |
} |
} |
|
|
|
|
#--------------------------------------------------------------- |
|
|
|
=pod |
|
|
|
=out |
|
|
|
=item tie_domain_hash() |
|
|
|
Manipulation of hash based databases (factoring out common code |
|
for later use as we refactor. |
|
|
|
Ties a domain level resource file to a hash. |
|
If requested a history entry is created in the associated hist file. |
|
|
|
Parameters: |
|
domain - Name of the domain in which the resource file lives. |
|
namespace - Name of the hash within that domain. |
|
how - How to tie the hash (e.g. GDBM_WRCREAT()). |
|
loghead - Optional parameter, if present a log entry is created |
|
in the associated history file and this is the first part |
|
of that entry. |
|
logtail - Goes along with loghead, The actual logentry is of the |
|
form $loghead:<timestamp>:logtail. |
|
Returns: |
|
Reference to a hash bound to the db file or alternatively undef |
|
if the tie failed. |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub tie_domain_hash { |
sub tie_domain_hash { |
my ($domain,$namespace,$how,$loghead,$logtail) = @_; |
my ($domain,$namespace,$how,$loghead,$logtail) = @_; |
Line 262 sub untie_domain_hash {
|
Line 186 sub untie_domain_hash {
|
return &_locking_hash_untie(@_); |
return &_locking_hash_untie(@_); |
} |
} |
|
|
=pod |
|
|
|
=out |
|
|
|
=item tie_user_hash() |
|
|
|
Ties a user's resource file to a hash. |
|
If necessary, an appropriate history |
|
log file entry is made as well. |
|
This sub factors out common code from the subs that manipulate |
|
the various gdbm files that keep keyword value pairs. |
|
Parameters: |
|
domain - Name of the domain the user is in. |
|
user - Name of the 'current user'. |
|
namespace - Namespace representing the file to tie. |
|
how - What the tie is done to (e.g. GDBM_WRCREAT(). |
|
loghead - Optional first part of log entry if there may be a |
|
history file. |
|
what - Optional tail of log entry if there may be a history |
|
file. |
|
Returns: |
|
hash to which the database is tied. It's up to the caller to untie. |
|
undef if the has could not be tied. |
|
|
|
back |
|
|
|
=cut |
|
|
|
sub tie_user_hash { |
sub tie_user_hash { |
my ($domain,$user,$namespace,$how,$loghead,$what) = @_; |
my ($domain,$user,$namespace,$how,$loghead,$what) = @_; |
Line 304 sub untie_user_hash {
|
Line 201 sub untie_user_hash {
|
return &_locking_hash_untie(@_); |
return &_locking_hash_untie(@_); |
} |
} |
|
|
=pod |
|
|
|
=out |
|
|
|
=item locking_hash_tie() |
|
|
|
routines if you just have a filename |
|
return tied hashref or undef |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub locking_hash_tie { |
sub locking_hash_tie { |
my ($filename,$how)=@_; |
my ($filename,$how)=@_; |
Line 489 BEGIN {
|
Line 374 BEGIN {
|
|
|
__END__ |
__END__ |
|
|
|
=pod |
|
|
|
=head1 NAME |
|
|
|
Apache::LONCAPA |
|
|
|
LONCAPA - Basic routines |
|
|
|
=head1 SYNOPSIS |
|
|
|
Generally useful routines |
|
|
|
=head1 EXPORTED SUBROUTINES |
|
|
|
=over |
|
|
|
=item escape() |
|
|
|
unpack non-word characters into CGI-compatible hex codes |
|
|
|
=item unescape() |
|
|
|
pack CGI-compatible hex codes into actual non-word ASCII character |
|
|
|
=item add_get_param() |
|
|
|
Append escaped form elements (name=value etc.) to a url. |
|
|
|
Inputs: url (with or without exit GET from parameters), hash ref of |
|
form name => value pairs |
|
|
|
Return: url with form name elements and values appended to the |
|
the url, doing proper escaping of the values and joining with ? or & |
|
as needed |
|
|
|
=item clean_handle() |
|
|
|
=item propath() |
|
|
|
=item untie_domain_hash() |
|
|
|
=item tie_domain_hash() |
|
|
|
Manipulation of hash based databases (factoring out common code |
|
for later use as we refactor. |
|
|
|
Ties a domain level resource file to a hash. |
|
If requested a history entry is created in the associated hist file. |
|
|
|
Parameters: |
|
domain - Name of the domain in which the resource file lives. |
|
namespace - Name of the hash within that domain. |
|
how - How to tie the hash (e.g. GDBM_WRCREAT()). |
|
loghead - Optional parameter, if present a log entry is created |
|
in the associated history file and this is the first part |
|
of that entry. |
|
logtail - Goes along with loghead, The actual logentry is of the |
|
form $loghead:<timestamp>:logtail. |
|
Returns: |
|
Reference to a hash bound to the db file or alternatively undef |
|
if the tie failed. |
|
|
|
=item tie_user_hash() |
|
|
|
Ties a user's resource file to a hash. |
|
If necessary, an appropriate history |
|
log file entry is made as well. |
|
This sub factors out common code from the subs that manipulate |
|
the various gdbm files that keep keyword value pairs. |
|
Parameters: |
|
domain - Name of the domain the user is in. |
|
user - Name of the 'current user'. |
|
namespace - Namespace representing the file to tie. |
|
how - What the tie is done to (e.g. GDBM_WRCREAT(). |
|
loghead - Optional first part of log entry if there may be a |
|
history file. |
|
what - Optional tail of log entry if there may be a history |
|
file. |
|
Returns: |
|
hash to which the database is tied. It's up to the caller to untie. |
|
undef if the has could not be tied. |
|
|
|
=item locking_hash_tie() |
|
|
|
routines if you just have a filename return tied hashref or undef |
|
|
|
=item locking_hash_untie() |
|
|
|
=item db_filename_parts() |
|
|
|
=head1 INTERNAL SUBROUTINES |
|
|
|
=item _do_hash_tie() |
|
|
|
=item _do_hash_untie() |
|
|
|
=back |
|
|
|
=cut |
|
|