[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm

raeburn raeburn at source.lon-capa.org
Wed Aug 4 17:06:34 EDT 2021


raeburn		Wed Aug  4 21:06:34 2021 EDT

  Modified files:              
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - Bug 6907 Content in a course can be set to be deep-link only.
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1462 loncom/lonnet/perl/lonnet.pm:1.1463
--- loncom/lonnet/perl/lonnet.pm:1.1462	Sun Aug  1 19:28:11 2021
+++ loncom/lonnet/perl/lonnet.pm	Wed Aug  4 21:06:33 2021
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.1462 2021/08/01 19:28:11 raeburn Exp $
+# $Id: lonnet.pm,v 1.1463 2021/08/04 21:06:33 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -7133,7 +7133,7 @@
     my $rep;
     if ($encrypt) {
         $rep=&reply("encrypt:edump:$udomain:$uname:$namespace:$regexp:$range",$uhome);
-    } else { 
+    } else {
         $rep=&reply("dump:$udomain:$uname:$namespace:$regexp:$range",$uhome);
     }
     my @pairs=split(/\&/,$rep);
@@ -9065,17 +9065,34 @@
         if ($deeplink eq '') {
             $allow = 1;
         } else {
-            my ($listed,$scope,$access) = split(/,/,$deeplink);
-            if ($access eq 'any') {
+            my ($state,$others,$listed,$scope,$protect) = split(/,/,$deeplink);
+            if ($state ne 'only') {
                 $allow = 1;
-            } elsif ($deeplink_symb) {
-                if ($access eq 'only') {
+            } else {
+                my $check_deeplink_entry;
+                if ($protect ne 'none') {
+                    my ($acctype,$item) = split(/:/,$protect);
+                    if (($acctype eq 'ltic') && ($env{'user.linkprotector'})) {
+                        if (grep(/^\Q$item\Ec$/,split(/,/,$env{'user.linkprotector'}))) {
+                            $check_deeplink_entry = 1
+                        }
+                    } elsif (($acctype eq 'ltid') && ($env{'user.linkprotector'})) {
+                        if (grep(/^\Q$item\Ed$/,split(/,/,$env{'user.linkprotector'}))) {
+                            $check_deeplink_entry = 1;
+                        }
+                    } elsif (($acctype eq 'key') && ($env{'user.deeplinkkey'})) {
+                        if (grep(/^\Q$item\E$/,split(/,/,$env{'user.deeplinkkey'}))) {
+                            $check_deeplink_entry = 1;
+                        }
+                    }
+                }
+                if (($protect eq 'none') || ($check_deeplink_entry)) {
                     if ($scope eq 'res') {
                         if ($symb eq $deeplink_symb) {
                             $allow = 1;
                         }
                     } elsif (($scope eq 'map') || ($scope eq 'rec')) {
-                        my ($map_from_symb,$map_from_login); 
+                        my ($map_from_symb,$map_from_login);
                         $map_from_symb = &deversion((&decode_symb($symb))[0]);
                         if ($deeplink_symb =~ /\.(page|sequence)$/) {
                             $map_from_login = &deversion((&decode_symb($deeplink_symb))[2]);
@@ -9093,23 +9110,6 @@
                             }
                         }
                     }
-                } else {
-                    my ($acctype,$item) = split(/:/,$access);
-                    if (($acctype eq 'lti') && ($env{'user.linkprotector'})) {
-                        if (grep(/^\Q$item\E$/,split(/,/,$env{'user.linkprotector'}))) {
-                            my %tinyurls = &get('tiny',[$symb],$cdom,$cnum);
-                            if (grep(/\Q$tinyurls{$symb}\E$/,split(/,/,$env{'user.linkproturis'}))) {
-                                $allow = 1;
-                            }
-                        }
-                    } elsif (($acctype eq 'key') && ($env{'user.deeplinkkey'})) {
-                        if (grep(/^\Q$item\E$/,split(/,/,$env{'user.deeplinkkey'}))) {
-                            my %tinyurls = &get('tiny',[$symb],$cdom,$cnum);
-                            if (grep(/\Q$tinyurls{$symb}\E$/,split(/,/,$env{'user.keyedlinkuri'}))) {
-                                $allow = 1;
-                            }
-                        }
-                    }
                 }
             }
         }
@@ -12215,6 +12215,23 @@
     return %lti;
 }
 
+sub get_course_lti {
+    my ($cnum,$cdom) = @_;
+    my $hashid=$cdom.'_'.$cnum;
+    my %courselti;
+    my ($result,$cached)=&is_cached_new('courselti',$hashid);
+    if (defined($cached)) {
+        if (ref($result) eq 'HASH') {
+            %courselti = %{$result};
+        }
+    } else {
+        %courselti = &dump('lti',$cdom,$cnum,undef,undef,undef,1);
+        my $cachetime = 24*60*60;
+        &do_cache_new('courselti',$hashid,\%courselti,$cachetime);
+    }
+    return %courselti;
+}
+
 sub get_numsuppfiles {
     my ($cnum,$cdom,$ignorecache)=@_;
     my $hashid=$cnum.':'.$cdom;




More information about the LON-CAPA-cvs mailing list