[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: