Diff for /loncom/imspackages/imsprocessor.pm between versions 1.5 and 1.9

version 1.5, 2004/03/20 00:45:16 version 1.9, 2004/08/04 17:34:29
Line 100  sub expand_zip { Line 100  sub expand_zip {
     my ($tempdir,$filename) = @_;      my ($tempdir,$filename) = @_;
     my $zipfile = "$tempdir/$filename";      my $zipfile = "$tempdir/$filename";
     if ($filename =~ m|\.zip$|i) {      if ($filename =~ m|\.zip$|i) {
       # unzip can cause an sh launch which can pass along all of %ENV
       # which can be too large for /bin/sh to handle
           my %oldENV=%ENV;
           undef(%ENV);
         open(OUTPUT, "unzip -o $zipfile -d $tempdir  2> /dev/null |");          open(OUTPUT, "unzip -o $zipfile -d $tempdir  2> /dev/null |");
         while (<OUTPUT>) {  
             print "$_<br />";  
         }  
         close(OUTPUT);          close(OUTPUT);
           %ENV=%oldENV;
           undef(%oldENV);
     } else {      } else {
         return 'nozip';          return 'nozip';
     }      }
Line 366  sub process_coursefile { Line 369  sub process_coursefile {
 }  }
   
 sub process_resinfo {  sub process_resinfo {
     my ($cms,$docroot,$destdir,$items,$resources,$boards,$announcements,$quizzes,$surveys,$groups,$messages,$timestamp,$boardnum,$resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,$total,$dirname,$seqstem,$resrcfiles) = @_;      my ($cms,$context,$docroot,$destdir,$items,$resources,$boards,$announcements,$quizzes,$surveys,$groups,$messages,$timestamp,$boardnum,$resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,$total,$dirname,$seqstem,$resrcfiles) = @_;
     my $board_id = time;      my $board_id = time;
     my $board_count = 0;      my $board_count = 0;
     my $announce_handling = 'include';      my $announce_handling = 'include';
Line 407  sub process_resinfo { Line 410  sub process_resinfo {
             if ($$resources{$key}{type} eq "resource/x-bb-document") {              if ($$resources{$key}{type} eq "resource/x-bb-document") {
                 unless ($$items{$$resources{$key}{revitm}}{filepath} eq 'Top') {                  unless ($$items{$$resources{$key}{revitm}}{filepath} eq 'Top') {
                     %{$$resinfo{$key}} = ();                      %{$$resinfo{$key}} = ();
                     &process_content($key,$docroot,$destdir,\%{$$resinfo{$key}},$udom,$uname,$resrcfiles);                      &process_content($key,$context,$docroot,$destdir,\%{$$resinfo{$key}},$udom,$uname,$resrcfiles);
                 }                  }
             } elsif ($$resources{$key}{type} eq "resource/x-bb-staffinfo") {              } elsif ($$resources{$key}{type} eq "resource/x-bb-staffinfo") {
                 %{$$resinfo{$key}} = ();                  %{$$resinfo{$key}} = ();
Line 610  sub build_structure { Line 613  sub build_structure {
                         $curr_id ++;                          $curr_id ++;
                         $next_id ++;                          $next_id ++;
                         $seqtext{$key} .= qq|></resource>                          $seqtext{$key} .= qq|></resource>
 <link from="$curr_id" to="$next_id index="$curr_id"></link>\n|;  <link from="$curr_id" to="$next_id" index="$curr_id"></link>\n|;
                     }                       } 
                 }                  }
             }              }
Line 651  sub build_structure { Line 654  sub build_structure {
   
     my $filestem;      my $filestem;
     if ($context eq 'DOCS') {      if ($context eq 'DOCS') {
         $filestem = "/uploaded/$cdom/$crs";          $filestem = "/uploaded/$cdom/$crs/$timenow";
     } elsif ($context eq 'CSTR') {      } elsif ($context eq 'CSTR') {
         $filestem = "/res/$udom/$uname/$newdir";          $filestem = "/res/$udom/$uname/$newdir";
     }      }
Line 846  sub process_user { Line 849  sub process_user {
      [sub {       [sub {
         my ($tagname, $attr) = @_;          my ($tagname, $attr) = @_;
         push @state, $tagname;          push @state, $tagname;
         if (@state eq "USERS USER") {          if ("@state" eq "USERS USER") {
             $userid = $attr->{value};              $userid = $attr->{value};
             %{$$settings{$userid}} = ();              %{$$settings{$userid}} = ();
             @{$$settings{$userid}{links}} = ();              @{$$settings{$userid}{links}} = ();
         } elsif (@state eq "USERS USER LOGINID") {            } elsif ("@state" eq "USERS USER LOGINID") {  
             $$settings{$userid}{loginid} = $attr->{value};              $$settings{$userid}{loginid} = $attr->{value};
         } elsif (@state eq "USERS USER PASSPHRASE") {            } elsif ("@state" eq "USERS USER PASSPHRASE") {  
             $$settings{$userid}{passphrase} = $attr->{value};              $$settings{$userid}{passphrase} = $attr->{value};
         } elsif ("@state" eq "USERS USER STUDENTID" ) {          } elsif ("@state" eq "USERS USER STUDENTID" ) {
             $$settings{$userid}{studentid} = $attr->{value};              $$settings{$userid}{studentid} = $attr->{value};
Line 890  sub process_user { Line 893  sub process_user {
      end_h =>       end_h =>
      [sub {       [sub {
         my ($tagname) = @_;          my ($tagname) = @_;
         if (@state eq "USERS USER") {          if ("@state" eq "USERS USER") {
             $linknum = 0;              $linknum = 0;
         }          }
         pop @state;          pop @state;
Line 927  sub process_group { Line 930  sub process_group {
      [sub {       [sub {
         my ($tagname, $attr) = @_;          my ($tagname, $attr) = @_;
         push @state, $tagname;          push @state, $tagname;
         if (@state eq "GROUPS GROUP") {          if ("@state" eq "GROUPS GROUP") {
             $grp = $attr->{id};              $grp = $attr->{id};
         }                  }        
         if (@state eq "GROUPS GROUP TITLE") {          if ("@state" eq "GROUPS GROUP TITLE") {
             $$settings{$grp}{title} = $attr->{value};              $$settings{$grp}{title} = $attr->{value};
         } elsif (@state eq "GROUPS GROUP FLAGS ISAVAILABLE") {            } elsif ("@state" eq "GROUPS GROUP FLAGS ISAVAILABLE") {  
             $$settings{$grp}{isavailable} = $attr->{value};              $$settings{$grp}{isavailable} = $attr->{value};
         } elsif (@state eq "GROUPS GROUP FLAGS HASCHATROOM") {            } elsif ("@state" eq "GROUPS GROUP FLAGS HASCHATROOM") {  
             $$settings{$grp}{chat} = $attr->{value};              $$settings{$grp}{chat} = $attr->{value};
         } elsif ("@state" eq "GROUPS GROUP FLAGS HASDISCUSSIONBOARD") {          } elsif ("@state" eq "GROUPS GROUP FLAGS HASDISCUSSIONBOARD") {
             $$settings{$grp}{discussion} = $attr->{value};              $$settings{$grp}{discussion} = $attr->{value};
Line 979  sub process_staff { Line 982  sub process_staff {
      [sub {       [sub {
         my ($tagname, $attr) = @_;          my ($tagname, $attr) = @_;
         push @state, $tagname;          push @state, $tagname;
         if (@state eq "STAFFINFO TITLE") {          if ("@state" eq "STAFFINFO TITLE") {
             $$settings{title} = $attr->{value};              $$settings{title} = $attr->{value};
         } elsif (@state eq "STAFFINFO BIOGRAPHY TEXTCOLOR") {          } elsif ("@state" eq "STAFFINFO BIOGRAPHY TEXTCOLOR") {
             $$settings{textcolor} = $attr->{value};              $$settings{textcolor} = $attr->{value};
         } elsif (@state eq "STAFFINFO BIOGRAPHY FLAGS ISHTML") {          } elsif ("@state" eq "STAFFINFO BIOGRAPHY FLAGS ISHTML") {
             $$settings{ishtml} = $attr->{value};              $$settings{ishtml} = $attr->{value};
         } elsif ("@state" eq "STAFFINFO FLAGS ISAVAILABLE" ) {          } elsif ("@state" eq "STAFFINFO FLAGS ISAVAILABLE" ) {
             $$settings{isavailable} = $attr->{value};              $$settings{isavailable} = $attr->{value};
Line 1156  sub process_link { Line 1159  sub process_link {
         [sub {          [sub {
             my ($tagname, $attr) = @_;              my ($tagname, $attr) = @_;
             push @state, $tagname;              push @state, $tagname;
             if (@state eq "EXTERNALLINK TITLE") {              if ("@state" eq "EXTERNALLINK TITLE") {
                 $$settings{title} = $attr->{value};                  $$settings{title} = $attr->{value};
             } elsif (@state eq "EXTERNALLINK TEXTCOLOR") {                } elsif ("@state" eq "EXTERNALLINK TEXTCOLOR") {  
                 $$settings{textcolor} = $attr->{value};                  $$settings{textcolor} = $attr->{value};
             } elsif (@state eq "EXTERNALLINK DESCRIPTION FLAGS ISHTML") {                } elsif ("@state" eq "EXTERNALLINK DESCRIPTION FLAGS ISHTML") {  
                 $$settings{ishtml} = $attr->{value};                                                 $$settings{ishtml} = $attr->{value};                               
             } elsif ("@state" eq "EXTERNALLINK FLAGS ISAVAILABLE" ) {              } elsif ("@state" eq "EXTERNALLINK FLAGS ISAVAILABLE" ) {
                 $$settings{isavailable} = $attr->{value};                  $$settings{isavailable} = $attr->{value};
Line 1171  sub process_link { Line 1174  sub process_link {
             } elsif ("@state" eq "EXTERNALLINK POSITION" ) {              } elsif ("@state" eq "EXTERNALLINK POSITION" ) {
                 $$settings{position} = $attr->{value};                  $$settings{position} = $attr->{value};
             } elsif ("@state" eq "EXTERNALLINK URL" ) {              } elsif ("@state" eq "EXTERNALLINK URL" ) {
               $$settings{url} = $attr->{value};                  $$settings{url} = $attr->{value};
             }              }
         }, "tagname, attr"],          }, "tagname, attr"],
         text_h =>          text_h =>
Line 1856  sub process_announce { Line 1859  sub process_announce {
         if ("@state" eq "ANNOUNCEMENT TITLE") {          if ("@state" eq "ANNOUNCEMENT TITLE") {
             $$settings{title} = $attr->{value};              $$settings{title} = $attr->{value};
             $$settings{startassessment} = ();              $$settings{startassessment} = ();
         } elsif (@state eq "ANNOUNCEMENT DESCRIPTION FLAGS ISHTML") {            } elsif ("@state" eq "ANNOUNCEMENT DESCRIPTION FLAGS ISHTML") {  
             $$settings{ishtml} = $attr->{value};                        $$settings{ishtml} = $attr->{value};          
         } elsif ("@state" eq "ANNOUNCEMENT DESCRIPTION FLAGS ISNEWLINELITERAL" ) {          } elsif ("@state" eq "ANNOUNCEMENT DESCRIPTION FLAGS ISNEWLINELITERAL" ) {
             $$settings{isnewline} = $attr->{value};              $$settings{isnewline} = $attr->{value};
Line 1929  $$settings{text} Line 1932  $$settings{text}
   
 # ---------------------------------------------------------------- Process Blackboard Content  # ---------------------------------------------------------------- Process Blackboard Content
 sub process_content {  sub process_content {
     my ($res,$docroot,$destdir,$settings,$dom,$user,$resrcfiles) = @_;      my ($res,$context,$docroot,$destdir,$settings,$dom,$user,$resrcfiles) = @_;
     my $xmlfile = $docroot.'/'.$res.".dat";      my $xmlfile = $docroot.'/'.$res.".dat";
     my $destresdir = $destdir;      my $destresdir = $destdir;
     $destresdir =~ s|/home/$user/public_html/|/res/$dom/$user/|;      if ($context eq 'CSTR') {
           $destresdir =~ s|/home/$user/public_html/|/res/$dom/$user/|;
       } elsif ($context eq 'DOCS') {
           $destresdir =~ s|^/home/httpd/html/userfiles|/uploaded|;
       }
     my $filecount = 0;      my $filecount = 0;
     my @allrelfiles = ();      my @allrelfiles = ();
     my @state;      my @state;
Line 1944  sub process_content { Line 1951  sub process_content {
       [sub {        [sub {
         my ($tagname, $attr) = @_;          my ($tagname, $attr) = @_;
         push @state, $tagname;          push @state, $tagname;
         if (@state eq "CONTENT MAINDATA") {          if ("@state" eq "CONTENT MAINDATA") {
             %{$$settings{maindata}} = ();              %{$$settings{maindata}} = ();
         } elsif (@state eq "CONTENT MAINDATA TEXTCOLOR") {          } elsif ("@state" eq "CONTENT MAINDATA TEXTCOLOR") {
             $$settings{maindata}{color} = $attr->{value};              $$settings{maindata}{color} = $attr->{value};
         } elsif (@state eq "CONTENT MAINDATA FLAGS ISHTML") {            } elsif ("@state" eq "CONTENT MAINDATA FLAGS ISHTML") {  
             $$settings{maindata}{ishtml} = $attr->{value};               $$settings{maindata}{ishtml} = $attr->{value}; 
         } elsif (@state eq "CONTENT MAINDATA FLAGS ISNEWLINELITERAL") {            } elsif ("@state" eq "CONTENT MAINDATA FLAGS ISNEWLINELITERAL") {  
             $$settings{maindata}{isnewline} = $attr->{value};              $$settings{maindata}{isnewline} = $attr->{value};
         } elsif ("@state" eq "CONTENT FLAGS ISAVAILABLE" ) {          } elsif ("@state" eq "CONTENT FLAGS ISAVAILABLE" ) {
             $$settings{isavailable} = $attr->{value};              $$settings{isavailable} = $attr->{value};

Removed from v.1.5  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>