Diff for /loncom/interface/lonsearchcat.pm between versions 1.63 and 1.64

version 1.63, 2001/03/21 12:58:30 version 1.64, 2001/03/22 13:10:06
Line 477  sub advancedsearch { Line 477  sub advancedsearch {
     my %ENV=%{$envhash};      my %ENV=%{$envhash};
   
     my $fillflag=0;      my $fillflag=0;
       # Clean up fields for safety
       for my $field ('title','author','subject','keywords','url','version',
      'creationdatestart_month','creationdatestart_day',
      'creationdatestart_year','creationdateend_month',
      'creationdateend_day','creationdateend_year',
      'lastrevisiondatestart_month','lastrevisiondatestart_day',
      'lastrevisiondatestart_year','lastrevisiondateend_month',
      'lastrevisiondateend_day','lastrevisiondateend_year',
      'notes','abstract','mime','language','owner',
      'custommetadata') {
    $ENV{"form.$field"}=~s/[^\w\s\(\)\-\"\']//g;
       }
     for my $field ('title','author','subject','keywords','url','version',      for my $field ('title','author','subject','keywords','url','version',
    'notes','abstract','mime','language','owner',     'notes','abstract','mime','language','owner',
    'custommetadata') {     'custommetadata') {
Line 531  sub advancedsearch { Line 543  sub advancedsearch {
     elsif ($datequery) {      elsif ($datequery) {
  push @queries,$datequery;   push @queries,$datequery;
     }      }
       my $customquery;
       if ($ENV{'form.custommetadata'}) {
    $customquery=&build_custommetadata_query('custommetadata',
         $ENV{'form.custommetadata'});
       }
     if (@queries) {      if (@queries) {
  $query=join(" AND ",@queries);   $query=join(" AND ",@queries);
  $query="select * from metadata where $query";   $query="select * from metadata where $query";
  my $reply=&Apache::lonnet::metadata_query($query);   my $reply=&Apache::lonnet::metadata_query($query);
  &output_results('Advanced',$r,$envhash,$query,$reply);   &output_results('Advanced',$r,$envhash,$customquery,$reply);
     }      }
     else {      else {
  &output_results('Advanced',$r,$envhash,$query);   &output_results('Advanced',$r,$envhash,$query);
Line 559  sub basicsearch { Line 576  sub basicsearch {
     my ($r,$envhash)=@_;      my ($r,$envhash)=@_;
     my %ENV=%{$envhash};      my %ENV=%{$envhash};
   
       # Clean up fields for safety
       for my $field ('basicexp') {
    $ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g;
       }
   
     unless (&filled($ENV{'form.basicexp'})) {      unless (&filled($ENV{'form.basicexp'})) {
  &output_blank_field_error($r);   &output_blank_field_error($r);
  return OK;   return OK;
Line 781  sub build_SQL_query { Line 803  sub build_SQL_query {
     return $sql_query;      return $sql_query;
 }  }
   
   # ------------------------------------------------- build custom metadata query
   sub build_custommetadata_query {
       my ($field_name,$logic_statement)=@_;
       my $q=new Text::Query('abc',
     -parse => 'Text::Query::ParseAdvanced',
     -build => 'Text::Query::BuildAdvancedString');
       $q->prepare($logic_statement);
       my $matchexp=${$q}{'-parse'}{'-build'}{'matchstring'};
       return $matchexp;
   }
   
 # - Recursively parse a reverse notation expression into a SQL query expression  # - Recursively parse a reverse notation expression into a SQL query expression
 sub recursive_SQL_query_build {  sub recursive_SQL_query_build {
     my ($dkey,$pattern)=@_;      my ($dkey,$pattern)=@_;
Line 1003  $message Line 1036  $message
 RESULTS  RESULTS
 }  }
   
   sub make_persistent {
       $ENV{"form.$field"}=~s/\"/\\\"/g;
   }
 1;  1;
 __END__  __END__

Removed from v.1.63  
changed lines
  Added in v.1.64


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