Diff for /loncom/metadata_database/searchcat.pl between versions 1.21 and 1.22

version 1.21, 2002/10/08 15:09:36 version 1.22, 2002/10/08 16:59:26
Line 57  sub unescape { Line 57  sub unescape {
     return $str;      return $str;
 }  }
   
   # -------------------------------------------------------- Escape Special Chars
   
   sub escape {
       my $str=shift;
       $str =~ s/(\W)/"%".unpack('H2',$1)/eg;
       return $str;
   }
   
   
 # ------------------------------------------- Code to evaluate dynamic metadata  # ------------------------------------------- Code to evaluate dynamic metadata
   
Line 76  sub dynamicmeta { Line 84  sub dynamicmeta {
     my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);      my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);
     my $prodir=&propath($adomain,$aauthor);      my $prodir=&propath($adomain,$aauthor);
     if (tie(%evaldata,'GDBM_File',      if (tie(%evaldata,'GDBM_File',
             $prodir.'/nohist_resevaldata.db',&GDBM_READER,0640)) {              $prodir.'/nohist_resevaldata.db',&GDBM_WRCREAT,0640)) {
        my %sum=();         my %sum=();
        my %cnt=();         my %cnt=();
        my %listitems=('count'        => 'add',         my %listitems=('count'        => 'add',
Line 98  sub dynamicmeta { Line 106  sub dynamicmeta {
        foreach (keys %evaldata) {         foreach (keys %evaldata) {
  my $key=&unescape($_);   my $key=&unescape($_);
  if ($key=~/$regexp/) {   if ($key=~/$regexp/) {
             if (defined($cnt{$1})) { $cnt{$1}++; } else { $cnt{$1}=1; }      my $ctype=$1;
             unless ($listitems{$1} eq 'app') {              if (defined($cnt{$ctype})) { 
                   if (defined($sum{$1})) {                 $cnt{$ctype}++; 
                      $sum{$1}+=$evaldata{$_};              } else { 
              } else {                 $cnt{$ctype}=1; 
                      $sum{$1}=$evaldata{$_};              }
           }              unless ($listitems{$ctype} eq 'app') {
              } else {                 if (defined($sum{$ctype})) {
                   if (defined($sum{$1})) {                    $sum{$ctype}+=$evaldata{$_};
                      if ($evaldata{$_}) {            } else {
                         $sum{$1}.='<hr>'.$evaldata{$_};                    $sum{$ctype}=$evaldata{$_};
              }         }
            } else {              } else {
              $sum{$1}=''.$evaldata{$_};                 if (defined($sum{$ctype})) {
                     if ($evaldata{$_}) {
                        $sum{$ctype}.='<hr>'.$evaldata{$_};
           }            }
       }          } else {
           }               $sum{$ctype}=''.$evaldata{$_};
           foreach (keys %cnt) {         }
              if ($listitems{$_} eq 'avg') {      }
          $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;      if ($ctype eq 'count') {
              } elsif ($listitems{$_} eq 'cnt') {         delete($evaldata{$_});
                  $returnhash{$_}=$cnt{$_};              }
              } else {   }
                  $returnhash{$_}=$sum{$_};        }
              }        foreach (keys %cnt) {
           }           if ($listitems{$_} eq 'avg') {
        $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;
            } elsif ($listitems{$_} eq 'cnt') {
                $returnhash{$_}=$cnt{$_};
            } else {
                $returnhash{$_}=$sum{$_};
            }
        }
        if ($returnhash{'count'}) {
            my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';
            $evaldata{$newkey}=$returnhash{'count'};
      }       }
      untie(%evaldata);       untie(%evaldata);
    }     }

Removed from v.1.21  
changed lines
  Added in v.1.22


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