[LON-CAPA-cvs] cvs: loncom / LONCAPA.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 22 Nov 2006 19:58:29 -0000
albertel Wed Nov 22 14:58:29 2006 EDT
Modified files:
/loncom LONCAPA.pm
Log:
- adding some helper vars for matching valid domina/username handle character classes
- exporting these under the :match tag
Index: loncom/LONCAPA.pm
diff -u loncom/LONCAPA.pm:1.13 loncom/LONCAPA.pm:1.14
--- loncom/LONCAPA.pm:1.13 Fri Aug 11 16:07:18 2006
+++ loncom/LONCAPA.pm Wed Nov 22 14:58:29 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Base routines
#
-# $Id: LONCAPA.pm,v 1.13 2006/08/11 20:07:18 albertel Exp $
+# $Id: LONCAPA.pm,v 1.14 2006/11/22 19:58:29 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,9 +38,22 @@
my $loncapa_max_wait_time = 13;
+
+use vars qw($match_domain $match_not_domain
+ $match_username $match_not_username
+ $match_handle $match_not_handle);
+
require Exporter;
our @ISA = qw (Exporter);
-our @EXPORT = qw(&add_get_param &escape &unescape &tie_domain_hash &untie_domain_hash &tie_user_hash &untie_user_hash &propath);
+our @EXPORT = qw(&add_get_param &escape &unescape
+ &tie_domain_hash &untie_domain_hash &tie_user_hash
+ &untie_user_hash &propath);
+our @EXPORT_OK = qw($match_domain $match_not_domain
+ $match_username $match_not_username
+ $match_handle $match_not_handle);
+our %EXPORT_TAGS = ( 'match' =>[qw($match_domain $match_not_domain
+ $match_username $match_not_username
+ $match_handle $match_not_handle)],);
my %perlvar;
@@ -83,12 +96,43 @@
return $str;
}
+$match_domain = $LONCAPA::domain_re = qr{[\w\-.]+};
+$match_not_domain = $LONCAPA::not_domain_re = qr{[^\w\-.]+};
+sub clean_domain {
+ my ($domain) = @_;
+ $domain =~ s/$match_not_domain//g;
+ return $domain;
+}
+
+sub split_courseid {
+ my ($courseid) = @_;
+ my ($domain,$coursenum) =
+ ($courseid=~m{^/($match_domain)/($match_username)});
+ return ($domain,$coursenum);
+}
+
+$match_username = $LONCAPA::username_re = qr{[\w\-.]+};
+$match_not_username = $LONCAPA::not_username_re = qr{[^\w\-.]+};
+sub clean_username {
+ my ($username) = @_;
+ $username =~ s/$match_not_username//g;
+ return $username;
+}
+
+$match_handle = $LONCAPA::handle_re = qr{[\w\-.]+};
+$match_not_handle = $LONCAPA::not_handle_re = qr{[^\w\-.]+};
+sub clean_handle {
+ my ($handle) = @_;
+ $handle =~ s/$match_not_handle//g;
+ return $handle;
+}
+
# -------------------------------------------- Return path to profile directory
sub propath {
my ($udom,$uname)=@_;
- $udom=~s/\W//g;
- $uname=~s/\W//g;
+ $udom = &clean_domain($udom);
+ $uname= &clean_username($uname);
my $subdir=$uname.'__';
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/;
my $proname="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname";
@@ -122,7 +166,7 @@
# Filter out any whitespace in the domain name:
- $domain =~ s/\W//g;
+ $domain = &clean_domain($domain);
# We have enough to go on to tie the hash: