Diff for /loncom/interface/lonsearchcat.pm between versions 1.214 and 1.217

version 1.214, 2004/04/21 18:04:55 version 1.217, 2004/04/27 15:24:09
Line 405  my $totalfound; Line 405  my $totalfound;
   
 sub course_search {  sub course_search {
     my $r=shift;      my $r=shift;
     my $bodytag=&Apache::loncommon::bodytag('Course Search').      my $bodytag=&Apache::loncommon::bodytag('Course Search');
  &Apache::loncommon::help_open_bug('Searching');  
     my $pretty_search_string = '<b>'.$ENV{'form.courseexp'}.'</b>';      my $pretty_search_string = '<b>'.$ENV{'form.courseexp'}.'</b>';
     my $search_string = $ENV{'form.courseexp'};      my $search_string = $ENV{'form.courseexp'};
     my @New_Words;      my @New_Words;
Line 504  sub search_html_header { Line 503  sub search_html_header {
 <html>  <html>
 <head>  <head>
 <title>The LearningOnline Network with CAPA</title>  <title>The LearningOnline Network with CAPA</title>
 <script type="text/javascript">  
     function openhelp(val) {  
  openhelpwin=open('/adm/help/searchcat.html','helpscreen',  
      'scrollbars=1,width=600,height=300');  
  openhelpwin.focus();  
     }  
 </script>  
 </head>  </head>
 ENDHEADER  ENDHEADER
     return $Str;      return $Str;
Line 532  Prints the form for the basic search.  S Line 524  Prints the form for the basic search.  S
 sub print_basic_search_form {  sub print_basic_search_form {
     my ($r,$closebutton,$hidden_fields) = @_;      my ($r,$closebutton,$hidden_fields) = @_;
     my $bodytag=&Apache::loncommon::bodytag('Search').      my $bodytag=&Apache::loncommon::bodytag('Search').
         &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Finding_Resources',          &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Searching',
                                             undef,undef,! $ENV{'form.launch'});                                              undef,undef,! $ENV{'form.launch'});
     my $scrout = &search_html_header().$bodytag;      my $scrout = &search_html_header().$bodytag;
     if (&Apache::lonnet::allowed('bre',$ENV{'request.role.domain'})) {      if (&Apache::lonnet::allowed('bre',$ENV{'request.role.domain'})) {
Line 656  Prints the advanced search form. Line 648  Prints the advanced search form.
 ######################################################################  ######################################################################
 sub print_advanced_search_form{  sub print_advanced_search_form{
     my ($r,$closebutton,$hidden_fields) = @_;      my ($r,$closebutton,$hidden_fields) = @_;
       my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search').
           &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching',
                                               'Searching',
                                               undef,undef,
                                               ! $ENV{'form.launch'});
   
     my %lt=&Apache::lonlocal::texthash('srch' => 'Search',      my %lt=&Apache::lonlocal::texthash('srch' => 'Search',
        'reset' => 'Reset',         'reset' => 'Reset',
        'help' => 'Help');         'help' => 'Help');
     my $advanced_buttons = <<"END";      my $advanced_buttons=<<"END";
 <p>  
 <input type="submit" name="advancedsubmit" value='$lt{"srch"}' />  <input type="submit" name="advancedsubmit" value='$lt{"srch"}' />
 <input type="reset" name="reset" value='$lt{"reset"}' />  <input type="reset" name="reset" value='$lt{"reset"}' />
 $closebutton  $closebutton
 <input type="button" value="$lt{'help'}" onClick="openhelp()" />  
 END  END
     my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search').  
         &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching',  
                                             'Finding_Resources',  
                                             undef,undef,  
                                             ! $ENV{'form.launch'});  
     my $searchhelp=&searchhelp();  
     my $scrout=&search_html_header();      my $scrout=&search_html_header();
     $scrout .= <<"ENDHEADER";      $scrout .= <<"ENDHEADER";
 $bodytag  $bodytag
 <form method="post" action="/adm/searchcat" name="advsearch">  <form method="post" action="/adm/searchcat" name="advsearch">
   <p>
 $advanced_buttons  $advanced_buttons
 ENDHEADER  ENDHEADER
     $scrout.=('&nbsp;'x2).&viewoptions().'</p>'.$hidden_fields.       $scrout.=('&nbsp;'x2).&viewoptions().'</p>'.$hidden_fields. 
         '<input type="hidden" name="phase" value="adv_search" />';          '<input type="hidden" name="phase" value="adv_search" />';
     my %fields=&Apache::lonmeta::fieldnames();      my %fields=&Apache::lonmeta::fieldnames();
     #      #
     $scrout.= '<p>'.$searchhelp.'</p>'.      $scrout .= '<h3>'.&mt('Standard Metadata').'</h3>';
         "<table>\n";      $scrout .= "<table>\n";
       $scrout .= '<tr><td>&nbsp;</td><td colspan="2"><font size="-1">'.
           ('&nbsp;'x2).&searchhelp()."</font></td></tr>\n";
     my %related_word_search =       my %related_word_search = 
         ('title'=>1,          ('title'    => 1,
          'author'=>0,           'author'   => 0,
          'owner'=>0,           'owner'    => 0,
          'authorspace'=>0,           'authorspace'  => 0,
          'modifyinguser'=>0,           'modifyinguser'=> 0,
          'keywords'=>1,           'keywords' => 1,
          'notes'=>1,           'notes'    => 1,
          'abstract'=>1,           'abstract' => 1,
          'standards'=>1,           'standards'=> 1,
          'mime'=>1,           'mime'     => 1,
          );           );
     #      #
     foreach my $field ('title','author','owner','authorspace','modifyinguser',      foreach my $field ('title','author','owner','authorspace','modifyinguser',
Line 736  ENDHEADER Line 729  ENDHEADER
     &Apache::loncommon::domain_select('domains',      &Apache::loncommon::domain_select('domains',
    $ENV{'form.domains'},1).     $ENV{'form.domains'},1).
     '</td></tr>'.$/;      '</td></tr>'.$/;
     $scrout .= "</table>\n<br />\n<table>\n";      #
     my %dates=&Apache::lonlocal::texthash      # Misc metadata
         ('creationdatestart'     => 'Creation Date After',      $scrout.='<tr><td align="right" valign="top">'.
          'creationdateend'       => 'Creation Date Before',   &titlefield(&mt('Copyright/Distribution')).'</td><td colspan="2">'.
          'lastrevisiondatestart' => 'Last Revision Date After',          &Apache::lonmeta::selectbox('copyright',
          'lastrevisiondateend'   => 'Last Revision Date Before');                                      '',,
     foreach my $field (sort keys %dates) {                                      \&Apache::loncommon::copyrightdescription,
  $scrout.='<tr>'.                                      ( undef,
             '<td align="right">'.&titlefield($dates{$field}).'</td><td>'.                                         &Apache::loncommon::copyrightids)
     &Apache::lonhtmlcommon::date_setter('advsearch',$field,0,'',1).                                      ).'</td></tr>'.$/;
     '</td></tr>'.$/;      $scrout.='<tr><td align="right" valign="top">'.
    &titlefield(&mt('Language')).'</td><td colspan="2">'.
           &Apache::lonmeta::selectbox('language',
                                       'notset',,
                                       \&Apache::loncommon::languagedescription,
                                       ('any',&Apache::loncommon::languageids)
                                       ).'</td></tr>';
       $scrout .= "</table>\n";    
       #
       # Dynamic metadata
       $scrout .= '<h3>'.&mt('Problem Statistics').'</h3>';
       $scrout .= "<table>\n";
       $scrout .= '<tr><td>&nbsp;</td><td align="center">'.&mt('Minimum').'</td>'.
           '<td align="center">'.&mt('Maximum').'</td></tr>'."\n";
       foreach my $statistic 
           ({ name=>'stdno',
              description=>'Number of Students',},
            { name => 'avetries',
              description=>'Average tries to answer correctly',},
            { name => 'difficulty',
              description=>'Degree of difficulty',},
            { name => 'disc',
              description=>'Degree of discrimination'}) {
           $scrout .= '<tr><td align="right">'.
               &titlefield(&mt($statistic->{'description'})).
               '</td><td align="center">'.
               '<input type="text" name="'.$statistic->{'name'}.'_min" '.
               'value="" size="6" />'.
               '</td><td align="center">'.
               '<input type="text" name="'.$statistic->{'name'}.'_max" '.
               'value="" size="6" />'.
               '</td></tr>'.$/;
       }
       $scrout .= "</table>\n";
       $scrout .= '<h3>'.&mt('Evaluation Data').'</h3>';
       $scrout .= "<table>\n";
       $scrout .= '<tr><td>&nbsp;</td><td align="center">'.&mt('Minimum').'</td>'.
           '<td align="center">'.&mt('Maximum').'</td></tr>'."\n";
       foreach my $evaluation
           ( { name => 'clear',
               description => 'Material presented in clear way'},
             { name =>'depth',
               description => 'Material covered with sufficient depth'},
             { name => 'helpful',
               description => 'Material is helpful'},
             { name => 'correct',
               description => 'Material appears to be correct'},
             { name => 'technical',
               description => 'Resource is technically correct'}){
           $scrout .= '<tr><td align="right">'.
               &titlefield(&mt($evaluation->{'description'})).
               '</td><td align="center">'.
               '<input type="text" name="'.$evaluation->{'name'}.'_min" '.
               'value="" size="6" />'.
               '</td><td align="center">'.
               '<input type="text" name="'.$evaluation->{'name'}.'_max" '.
               'value="" size="6" />'.
               '</td></tr>'.$/;
     }      }
       $scrout .= "</table>\n";
       #
       # Creation/Modification date limits
       $scrout .= '<h3>'.&mt('Creation and Modification dates').'</h3>';
       $scrout .= "\n<table>\n";
       my $cafter = 
           &Apache::lonhtmlcommon::date_setter('advsearch',         # formname
                                               'creationdate1', # fieldname
                                               0,           # current value
                                               '',          # special 
                                               1,           # includeempty
                                               '',          # state
                                               1,           # no_hh_mm_ss
                                               );
       my $cbefore = 
           &Apache::lonhtmlcommon::date_setter('advsearch',         # formname
                                               'creationdate2', # fieldname
                                               0,           # current value
                                               '',          # special 
                                               1,           # includeempty
                                               '',          # state
                                               1,           # no_hh_mm_ss
                                               );
       $scrout .= &mt('<tr><td align="right">Created between</td>'.
                      '<td>[_1]</td></tr>'.
                      '<tr><td align="right">and </td>'.
                      '<td>[_2]</td></tr>',$cafter,$cbefore);
       my $lafter = 
           &Apache::lonhtmlcommon::date_setter('advsearch',
                                               'revisiondate1', 
                                               0,           # current value
                                               '',          # special 
                                               1,           # includeempty
                                               '',          # state
                                               1,           # no_hh_mm_ss
                                               );
       my $lbefore = 
           &Apache::lonhtmlcommon::date_setter('advsearch',
                                               'revisiondate2',
                                               0,           # current value
                                               '',          # special 
                                               1,           # includeempty
                                               '',          # state
                                               1,           # no_hh_mm_ss
                                               );
       $scrout .= &mt('<tr><td align="right">Last modified between </td>'.
                      '<td>[_1]</td></tr>'.
                      '<tr><td align="right">and</td>'.
                      '<td>[_2]</td></tr>',$lafter,$lbefore);
     $scrout.="</table>\n";      $scrout.="</table>\n";
     $scrout.=<<ENDDOCUMENT;      $scrout.=<<ENDDOCUMENT;
 $advanced_buttons  $advanced_buttons
Line 1045  Parse advanced search form and return th Line 1144  Parse advanced search form and return th
 ######################################################################  ######################################################################
 sub parse_advanced_search {  sub parse_advanced_search {
     my ($r,$closebutton,$hidden_fields)=@_;      my ($r,$closebutton,$hidden_fields)=@_;
       my @BasicFields = ('title','author','subject','keywords','url','version',
                          'notes','abstract','extension','owner',
   #                       'custommetadata','customshow',
                          'modifyinguser','standards','mime');
       my @StatsFields = ('stdno','avetries','difficulty','disc');
       my @EvalFields = ('clear','depth','helpful','correct','technical');
       my @ContextFields = ('courses','dependencies');
     my $fillflag=0;      my $fillflag=0;
     my $pretty_search_string = "<br />\n";      my $pretty_search_string = "<br />\n";
     # Clean up fields for safety      # Clean up fields for safety
     for my $field ('title','author','subject','keywords','url','version',      for my $field (@BasicFields,
    'creationdatestart_month','creationdatestart_day',                     'creationdatestart_month','creationdatestart_day',
    'creationdatestart_year','creationdateend_month',     'creationdatestart_year','creationdateend_month',
    'creationdateend_day','creationdateend_year',     'creationdateend_day','creationdateend_year',
    'lastrevisiondatestart_month','lastrevisiondatestart_day',     'lastrevisiondatestart_month','lastrevisiondatestart_day',
    'lastrevisiondatestart_year','lastrevisiondateend_month',     'lastrevisiondatestart_year','lastrevisiondateend_month',
    'lastrevisiondateend_day','lastrevisiondateend_year',     'lastrevisiondateend_day','lastrevisiondateend_year') {
    'notes','abstract','extension','language','owner',   $ENV{'form.'.$field}=~s/[^\w\/\s\(\)\=\-\"\']//g;
    'custommetadata','customshow','category') {  
  $ENV{"form.$field"}=~s/[^\w\/\s\(\)\=\-\"\']//g;  
     }      }
     foreach ('mode','form','element') {      foreach ('mode','form','element') {
  # is this required?  Hmmm.   # is this required?  Hmmm.
  next unless (exists($ENV{"form.$_"}));   next if (! exists($ENV{'form.'.$_}));
  $ENV{"form.$_"}=&Apache::lonnet::unescape($ENV{"form.$_"});   $ENV{'form.'.$_}=&Apache::lonnet::unescape($ENV{'form.'.$_});
  $ENV{"form.$_"}=~s/[^\w\/\s\(\)\=\-\"\']//g;   $ENV{'form.'.$_}=~s/[^\w\/\s\(\)\=\-\"\']//g;
     }      }
     # Preprocess the category form element.      # Preprocess the category form element.
     $ENV{'form.category'} = 'any' if (! defined($ENV{'form.category'}) ||      $ENV{'form.category'} = 'any' if (! defined($ENV{'form.category'}) ||
                                       ref($ENV{'form.category'}));                                        ref($ENV{'form.category'}));
     #      #
     # Check to see if enough information was filled in      # Check to see if enough information was filled in
     for my $field ('title','author','subject','keywords','url','version',      for my $field (@BasicFields) {
    'notes','abstract','category','extension','language',   if (&filled($ENV{'form.'.$field})) {
                    'owner','custommetadata') {  
  if (&filled($ENV{"form.$field"})) {  
     $fillflag++;      $fillflag++;
  }   }
     }      }
       for my $field ('lowestgradelevel','highestgradelevel') {
           if ( $ENV{'form.'.$field} =~ /^\d+$/ &&
                $ENV{'form.'.$field} > 0) {
               $fillflag++;
           }
       }
     if (! $fillflag) {      if (! $fillflag) {
  &output_blank_field_error($r,$closebutton,   &output_blank_field_error($r,$closebutton,
                                   'phase=disp_adv',$hidden_fields);                                    'phase=disp_adv',$hidden_fields);
Line 1087  sub parse_advanced_search { Line 1195  sub parse_advanced_search {
     my @queries;      my @queries;
     my $font = '<font color="#800000" face="helvetica">';      my $font = '<font color="#800000" face="helvetica">';
     # Evaluate logical expression AND/OR/NOT phrase fields.      # Evaluate logical expression AND/OR/NOT phrase fields.
     foreach my $field ('title','author','subject','notes','abstract','url',      foreach my $field (@BasicFields) {
        'keywords','version','owner','standards') {  
  if ($ENV{'form.'.$field}) {   if ($ENV{'form.'.$field}) {
             my $searchphrase = $ENV{'form.'.$field};              my $searchphrase = $ENV{'form.'.$field};
             $pretty_search_string .= $font."$field</font> contains <b>".              $pretty_search_string .= $font."$field</font> contains <b>".
Line 1120  sub parse_advanced_search { Line 1227  sub parse_advanced_search {
             $searchphrase = join(' OR ',@extensions);              $searchphrase = join(' OR ',@extensions);
         }          }
     }      }
     if (exists($ENV{'form.extension'}) && $ENV{'form.extension'} !~ /^\s*$/) {  
         $searchphrase .= ' OR ' if (defined($searchphrase));  
         my @extensions = split(/,/,$ENV{'form.extension'});  
         $searchphrase .= join(' OR ',@extensions);  
     }  
     if (defined($searchphrase)) {      if (defined($searchphrase)) {
         push @queries,&build_SQL_query('mime',$searchphrase);          push @queries,&build_SQL_query('mime',$searchphrase);
         $pretty_search_string .=$font.'mime</font> contains <b>'.          $pretty_search_string .=$font.'mime</font> contains <b>'.
Line 1132  sub parse_advanced_search { Line 1234  sub parse_advanced_search {
     }      }
     #      #
     # Evaluate option lists      # Evaluate option lists
       if ($ENV{'form.lowestgradelevel'}        &&
           $ENV{'form.lowestgradelevel'} ne '0' &&
           $ENV{'form.lowestgradelevel'} =~ /^\d+$/) {
    push(@queries,
                '(lowestgradelevel>='.$ENV{'form.lowestgradelevel'}.')');
           $pretty_search_string.="lowestgradelevel>=".
               $ENV{'form.lowestgradelevel'}."<br />\n";
       }
       if ($ENV{'form.highestgradelevel'}        &&
           $ENV{'form.highestgradelevel'} ne '0' &&
           $ENV{'form.highestgradelevel'} =~ /^\d+$/) {
    push(@queries,
                '(highestgradelevel<='.$ENV{'form.highestgradelevel'}.')');
           $pretty_search_string.="highestgradelevel<=".
               $ENV{'form.highestgradelevel'}."<br />\n";
       }
     if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') {      if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') {
  push @queries,"(language like \"$ENV{'form.language'}\")";   push @queries,"(language like \"$ENV{'form.language'}\")";
         $pretty_search_string.=$font."language</font>= ".          $pretty_search_string.=$font."language</font>= ".
Line 1145  sub parse_advanced_search { Line 1263  sub parse_advanced_search {
                 "<br \>\n";                  "<br \>\n";
     }      }
     #      #
       # Statistics
       foreach my $field (@StatsFields,@EvalFields) {
           my ($min,$max);
           if (exists($ENV{'form.'.$field.'_min'}) && 
               $ENV{'form.'.$field.'_min'} ne '') {
               $min = $ENV{'form.'.$field.'_min'};
           }
           if (exists($ENV{'form.'.$field.'_max'}) &&
               $ENV{'form.'.$field.'_max'} ne '') {
               $max = $ENV{'form.'.$field.'_max'};
           }
           next if (! defined($max) && ! defined($min));
           if (defined($min) && defined($max)) {
               ($min,$max) = sort {$a <=>$b} ($min,$max);
           }
           if (defined($min) && $min =~ /^(\d+\.\d+|\d+|\.\d+)$/) {
               push(@queries,'('.$field.'>'.$min.')');
               $pretty_search_string.=$font.$field.'</font>&gt;'.$min.'<br />';
           }
           if (defined($max) && $max =~ /^(\d+\.\d+|\d+|\.\d+)$/) {
               push(@queries,'('.$field.'<'.$max.')');
               $pretty_search_string.=$font.$field.'</font>&lt;'.$max.'<br />';
           }
       }
       #
     # Evaluate date windows      # Evaluate date windows
     my $datequery=&build_date_queries(      my $cafter =
  $ENV{'form.creationdatestart_month'},          &Apache::lonhtmlcommon::get_date_from_form('creationdate1');
  $ENV{'form.creationdatestart_day'},      my $cbefore = 
  $ENV{'form.creationdatestart_year'},          &Apache::lonhtmlcommon::get_date_from_form('creationdate2');
  $ENV{'form.creationdateend_month'},      if ($cafter > $cbefore) {
  $ENV{'form.creationdateend_day'},          my $tmp = $cafter;
  $ENV{'form.creationdateend_year'},          $cafter = $cbefore;
  $ENV{'form.lastrevisiondatestart_month'},          $cbefore = $tmp;
  $ENV{'form.lastrevisiondatestart_day'},      }
  $ENV{'form.lastrevisiondatestart_year'},      my $mafter = 
  $ENV{'form.lastrevisiondateend_month'},          &Apache::lonhtmlcommon::get_date_from_form('revisiondate1');
  $ENV{'form.lastrevisiondateend_day'},      my $mbefore =
  $ENV{'form.lastrevisiondateend_year'},          &Apache::lonhtmlcommon::get_date_from_form('revisiondate2');
  );      if ($mafter > $mbefore) {
     # Test to see if date windows are legitimate          my $tmp = $mafter;
     if ($datequery=~/^Incorrect/) {          $mafter = $mbefore;
  &output_date_error($r,$datequery,$closebutton,$hidden_fields);          $mbefore = $tmp;
  return ;      }
     } elsif ($datequery) {      my ($datequery,$error,$prettydate)=&build_date_queries($cafter,$cbefore,
                                                              $mafter,$mbefore);
       if (defined($error)) {
           &output_date_error($r,$error,$closebutton,$hidden_fields);
       } elsif (defined($datequery)) {
         # Here is where you would set up pretty_search_string to output          # Here is where you would set up pretty_search_string to output
         # date query information.          # date query information.
           $pretty_search_string .= '<br />'.$prettydate.'<br />';
  push @queries,$datequery;   push @queries,$datequery;
     }      }
     #      #
Line 1200  sub parse_advanced_search { Line 1348  sub parse_advanced_search {
     $pretty_search_string .= $pretty_domains_string."<br />\n";      $pretty_search_string .= $pretty_domains_string."<br />\n";
     #      #
     if (@queries) {      if (@queries) {
  $query=join(" AND ",@queries);   $query="select * from metadata where ".join(" AND ",@queries);
  $query="select * from metadata where $query";  
     } elsif ($customquery) {      } elsif ($customquery) {
         $query = '';          $query = '';
     }      }
   #    &Apache::lonnet::logthis('query = '.$/.$query);
     return ($query,$customquery,$customshow,$libraries_to_query,      return ($query,$customquery,$customshow,$libraries_to_query,
             $pretty_search_string);              $pretty_search_string);
 }  }
Line 1459  Also reports errors (check for /^Incorre Line 1607  Also reports errors (check for /^Incorre
 ######################################################################  ######################################################################
 ######################################################################  ######################################################################
 sub build_date_queries {  sub build_date_queries {
     my ($cmonth1,$cday1,$cyear1,$cmonth2,$cday2,$cyear2,      my ($cafter,$cbefore,$mafter,$mbefore) = @_;
  $lmonth1,$lday1,$lyear1,$lmonth2,$lday2,$lyear2)=@_;      my ($result,$error,$pretty_string);
     my @queries;      #
     if ($cmonth1 or $cday1 or $cyear1 or $cmonth2 or $cday2 or $cyear2) {      # Verify the input
  unless ($cmonth1 and $cday1 and $cyear1 and      if (! defined($cafter) && ! defined($cbefore) &&
  $cmonth2 and $cday2 and $cyear2) {          ! defined($mafter) && ! defined($mbefore)) {
     return "Incorrect entry for the creation date.  You must specify ".          # This is an okay situation, so return undef for the error
    "a starting month, day, and year and an ending month, ".          return (undef,undef,undef);
    "day, and year.";      }
  }      if ((defined($cafter)  && ! defined($cbefore)) ||
  my $cnumeric1=sprintf("%d%2d%2d",$cyear1,$cmonth1,$cday1);          (defined($cbefore) && ! defined($cafter))) {
  $cnumeric1+=0;          # This is bad, so let them know
  my $cnumeric2=sprintf("%d%2d%2d",$cyear2,$cmonth2,$cday2);          $error = &mt('Incorrect entry for the creation date.  '.
  $cnumeric2+=0;                      'You must specify both the beginning and ending dates.');
  if ($cnumeric1>$cnumeric2) {      }
     return "Incorrect entry for the creation date.  The starting ".      if (! defined($error) && 
    "date must occur before the ending date.";          ((defined($mafter)  && ! defined($mbefore)) ||
  }          (defined($mbefore) && ! defined($mafter)))) {
  my $cquery="(creationdate BETWEEN '$cyear1-$cmonth1-$cday1' AND '".          # This is also bad, so let them know
            "$cyear2-$cmonth2-$cday2 23:59:59')";          $error = &mt('Incorrect entry for the last revision date.  '.
  push @queries,$cquery;                       'You must specify both the beginning and ending dates.');
     }  
     if ($lmonth1 or $lday1 or $lyear1 or $lmonth2 or $lday2 or $lyear2) {  
  unless ($lmonth1 and $lday1 and $lyear1 and  
  $lmonth2 and $lday2 and $lyear2) {  
     return "Incorrect entry for the last revision date.  You must ".  
    "specify a starting month, day, and year and an ending ".  
    "month, day, and year.";  
  }  
  my $lnumeric1=sprintf("%d%2d%2d",$lyear1,$lmonth1,$lday1);  
  $lnumeric1+=0;  
  my $lnumeric2=sprintf("%d%2d%2d",$lyear2,$lmonth2,$lday2);  
  $lnumeric2+=0;  
  if ($lnumeric1>$lnumeric2) {  
     return "Incorrect entry for the last revision date.  The ".  
    "starting date must occur before the ending date.";  
  }  
  my $lquery="(lastrevisiondate BETWEEN '$lyear1-$lmonth1-$lday1' AND '".  
            "$lyear2-$lmonth2-$lday2 23:59:59')";  
  push @queries,$lquery;  
     }      }
     if (@queries) {      if (! defined($error)) {
  return join(" AND ",@queries);          #
           # Build the queries
           my @queries;
           if (defined($cbefore) && defined($cafter)) {
               my (undef,undef,undef,$caday,$camon,$cayear) = localtime($cafter);
               my (undef,undef,undef,$cbday,$cbmon,$cbyear) = localtime($cbefore);
               # Correct for year being relative to 1900
               $cayear+=1900; $cbyear+=1900;
               my $cquery=
                   '(creationdate BETWEEN '.
                   "'".$cayear.'-'.$camon.'-'.$caday."'".
                   ' AND '.
                   "'".$cbyear.'-'.$cbmon.'-'.$cbday." 23:59:59')";
               $pretty_string .= '<br />' if (defined($pretty_string));
               $pretty_string .= 
                   &mt('created between [_1] and [_2]',
                       &Apache::lonlocal::locallocaltime($cafter),
                       &Apache::lonlocal::locallocaltime($cbefore+24*60*60-1));
               push(@queries,$cquery);
               $pretty_string =~ s/ 00:00:00//g;
           }
           if (defined($mbefore) && defined($mafter)) {
               my (undef,undef,undef,$maday,$mamon,$mayear) = localtime($mafter);
               my (undef,undef,undef,$mbday,$mbmon,$mbyear) = localtime($mbefore);
               # Correct for year being relative to 1900
               $mayear+=1900; $mbyear+=1900;
               my $mquery=
                   '(lastrevisiondate BETWEEN '.
                   "'".$mayear.'-'.$mamon.'-'.$maday."'".
                   ' AND '.
                   "'".$mbyear.'-'.$mbmon.'-'.$mbday." 23:59:59')";
               push(@queries,$mquery);
               $pretty_string .= '<br />' if (defined($pretty_string));
               $pretty_string .= 
                   &mt('last revised between [_1] and [_2]',
                       &Apache::lonlocal::locallocaltime($mafter),
                       &Apache::lonlocal::locallocaltime($mbefore+24*60*60-1));
               $pretty_string =~ s/ 00:00:00//g;
           }
           if (@queries) {
               $result .= join(" AND ",@queries);
           }
     }      }
     return '';      return ($result,$error,$pretty_string);
 }  }
   
 ######################################################################  ######################################################################
Line 1825  sub update_seconds { Line 1995  sub update_seconds {
     my ($r) = @_;      my ($r) = @_;
     my $time = &time_left();      my $time = &time_left();
     if (($last_time-$time) > 0) {      if (($last_time-$time) > 0) {
         &Apache::lonnet::logthis('time left = '.$time.' last time = '.$time);  
         &Apache::lonnet::logthis('updating time');  
         $r->print("<script>".          $r->print("<script>".
                   "document.statusform.seconds.value = '$time'".                    "document.statusform.seconds.value = '$time'".
                   "</script>\n");                    "</script>\n");

Removed from v.1.214  
changed lines
  Added in v.1.217


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