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

raeburn raeburn@source.lon-capa.org
Fri, 28 Aug 2009 19:43:16 -0000


raeburn		Fri Aug 28 19:43:16 2009 EDT

  Modified files:              
    /loncom/lonnet/perl	lonnet.pm 
    /loncom/interface	londocs.pm 
  Log:
  - Bug 6003.
  If checkbox checked for embedded object check, use File::MMagic to confirm that the file is an HTML file before parsing.
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1023 loncom/lonnet/perl/lonnet.pm:1.1024
--- loncom/lonnet/perl/lonnet.pm:1.1023	Mon Aug 24 20:08:40 2009
+++ loncom/lonnet/perl/lonnet.pm	Fri Aug 28 19:43:10 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.1023 2009/08/24 20:08:40 raeburn Exp $
+# $Id: lonnet.pm,v 1.1024 2009/08/28 19:43:10 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -92,6 +92,7 @@
 use Cache::Memcached;
 use Digest::MD5;
 use Math::Random;
+use File::MMagic;
 use LONCAPA qw(:DEFAULT :match);
 use LONCAPA::Configuration;
 
@@ -2059,9 +2060,13 @@
             print $fh $env{'form.'.$source};
             close($fh);
             if ($parser eq 'parse') {
-                my $parse_result = &extract_embedded_items($filepath.'/'.$fname,$allfiles,$codebase);
-                unless ($parse_result eq 'ok') {
-                    &logthis('Failed to parse '.$filepath.'/'.$fname.' for embedded media: '.$parse_result);
+                my $mm = new File::MMagic;
+                my $mime_type = $mm->checktype_filename($filepath.'/'.$fname);
+                if ($mime_type eq 'text/html') {
+                    my $parse_result = &extract_embedded_items($filepath.'/'.$fname,$allfiles,$codebase);
+                    unless ($parse_result eq 'ok') {
+                        &logthis('Failed to parse '.$filepath.'/'.$fname.' for embedded media: '.$parse_result);
+                    }
                 }
             }
             $fetchresult= &reply('fetchuserfile:'.$docudom.'/'.$docuname.'/'.$file,
@@ -2303,11 +2308,15 @@
 	}
     }
     if ($parser eq 'parse') {
-        my $parse_result = &extract_embedded_items($filepath.'/'.$file,$allfiles,
-						   $codebase);
-        unless ($parse_result eq 'ok') {
-            &logthis('Failed to parse '.$filepath.$file.
-		     ' for embedded media: '.$parse_result); 
+        my $mm = new File::MMagic;
+        my $mime_type = $mm->checktype_filename($filepath.'/'.$file);
+        if ($mime_type eq 'text/html') {
+            my $parse_result = &extract_embedded_items($filepath.'/'.$file,
+                                                       $allfiles,$codebase);
+            unless ($parse_result eq 'ok') {
+                &logthis('Failed to parse '.$filepath.$file.
+	   	         ' for embedded media: '.$parse_result); 
+            }
         }
     }
     if (($thumbwidth =~ /^\d+$/) && ($thumbheight =~ /^\d+$/)) {
Index: loncom/interface/londocs.pm
diff -u loncom/interface/londocs.pm:1.383 loncom/interface/londocs.pm:1.384
--- loncom/interface/londocs.pm:1.383	Thu Aug 13 12:29:04 2009
+++ loncom/interface/londocs.pm	Fri Aug 28 19:43:16 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.383 2009/08/13 12:29:04 tempelho Exp $
+# $Id: londocs.pm,v 1.384 2009/08/28 19:43:16 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1719,7 +1719,7 @@
             return 'failed';
         } else {
             if ($parseaction eq 'parse') {
-                my $total_embedded = keys(%{$allfiles});
+                my $total_embedded = scalar(keys(%{$allfiles}));
                 if ($total_embedded > 0) {
                     my $num = 0;
 		    my $state = '