Diff for /loncom/metadata_database/searchcat.pl between versions 1.34 and 1.40

version 1.34, 2003/06/19 20:24:57 version 1.40, 2003/09/26 00:23:09
Line 76  use POSIX qw(strftime mktime); Line 76  use POSIX qw(strftime mktime);
   
 my @metalist;  my @metalist;
   
   $simplestatus='';
   my %countext=();
   
   sub writesimple {
       open(SMP,'>/home/httpd/html/lon-status/mysql.txt');
       print SMP $simplestatus."\n";
       close(SMP);
   }
   
   sub writecount {
       open(RSMP,'>/home/httpd/html/lon-status/rescount.txt');
       foreach (keys %countext) {
    print RSMP $_.'='.$countext{$_}.'&';
       }
       print RSMP 'time='.time."\n";
       close(RSMP);
   }
   
   sub count {
       my $file=shift;
       $file=~/\.(\w+)$/;
       my $ext=lc($1);
       if (defined($countext{$ext})) {
    $countext{$ext}++;
       } else {
    $countext{$ext}=1;
       }
   }
 # ----------------------------------------------------- Un-Escape Special Chars  # ----------------------------------------------------- Un-Escape Special Chars
   
 sub unescape {  sub unescape {
Line 104  sub dynamicmeta { Line 131  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_READER(),0640)) &&
         (tie(%newevaldata,'GDBM_File',          (tie(%newevaldata,'GDBM_File',
              $prodir.'/nohist_new_resevaldata.db',&GDBM_WRCREAT(),0640))) {              $prodir.'/nohist_new_resevaldata.db',&GDBM_WRCREAT(),0640))) {
         my %sum=();         my %sum=();
         my %cnt=();         my %cnt=();
         my %listitems=('count'        => 'add',         my %listitems=('count'        => 'add',
                        'course'       => 'add',                        'course'       => 'add',
                        'avetries'     => 'avg',                        'avetries'     => 'avg',
                        'stdno'        => 'add',                        'stdno'        => 'add',
                        'difficulty'   => 'avg',                        'difficulty'   => 'avg',
                        'clear'        => 'avg',                        'clear'        => 'avg',
                        'technical'    => 'avg',                        'technical'    => 'avg',
                        'helpful'      => 'avg',                        'helpful'      => 'avg',
                        'correct'      => 'avg',                        'correct'      => 'avg',
                        'depth'        => 'avg',                        'depth'        => 'avg',
                        'comments'     => 'app',                        'comments'     => 'app',
                        'usage'        => 'cnt'                        'usage'        => 'cnt'
                        );                        );
         my $regexp=$url;         my $regexp=$url;
         $regexp=~s/(\W)/\\$1/g;         $regexp=~s/(\W)/\\$1/g;
         $regexp='___'.$regexp.'___([a-z]+)$';         $regexp='___'.$regexp.'___([a-z]+)$';
         study($regexp);         foreach (keys %evaldata) {
         while (my ($key,$value) = each(%evaldata)) {   my $key=&unescape($_);
             $key=&unescape($key);   if ($key=~/$regexp/) {
             next if ($key !~ /$regexp/);      my $ctype=$1;
             my $ctype=$1;  
             if (defined($cnt{$ctype})) {               if (defined($cnt{$ctype})) { 
                 $cnt{$ctype}++;                  $cnt{$ctype}++; 
             } else {               } else { 
                 $cnt{$ctype}=1;                  $cnt{$ctype}=1; 
             }              }
             unless ($listitems{$ctype} eq 'app') {              unless ($listitems{$ctype} eq 'app') {
                 if (defined($sum{$ctype})) {                 if (defined($sum{$ctype})) {
                     $sum{$ctype}+=$value;                    $sum{$ctype}+=$evaldata{$_};
                 } else {            } else {
                     $sum{$ctype}=$value;                    $sum{$ctype}=$evaldata{$_};
                 }         }
             } else {              } else {
                 if (defined($sum{$ctype})) {                 if (defined($sum{$ctype})) {
                     if ($value) {                    if ($evaldata{$_}) {
                         $sum{$ctype}.='<hr>'.$value;                       $sum{$ctype}.='<hr>'.$evaldata{$_};
                     }            }
                 } else {          } else {
                     $sum{$ctype}=''.$value;               $sum{$ctype}=''.$evaldata{$_};
                 }         }
             }      }
             if ($ctype ne 'count') {      if ($ctype ne 'count') {
                 $newevaldata{$_}=$value;         $newevaldata{$_}=$evaldata{$_};
             }     }
         }   }
         while (my($key,$value) = each(%cnt)) {        }
             if ($listitems{$key} eq 'avg') {        foreach (keys %cnt) {
                 $returnhash{$key}=int(($sum{$key}/$value)*100.0+0.5)/100.0;           if ($listitems{$_} eq 'avg') {
             } elsif ($listitems{$key} eq 'cnt') {       $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;
                 $returnhash{$key}=$value;           } elsif ($listitems{$_} eq 'cnt') {
             } else {               $returnhash{$_}=$cnt{$_};
                 $returnhash{$key}=$sum{$key};           } else {
             }               $returnhash{$_}=$sum{$_};
         }           }
         if ($returnhash{'count'}) {       }
             my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';       if ($returnhash{'count'}) {
             $newevaldata{$newkey}=$returnhash{'count'};           my $newkey=$$.'_'.time.'_searchcat___'.&escape($url).'___count';
         }           $newevaldata{$newkey}=$returnhash{'count'};
         untie(%evaldata);       }
         untie(%newevaldata);       untie(%evaldata);
     }       untie(%newevaldata);
     return %returnhash;     }
      return %returnhash;
 }  }
     
 # ----------------- Code to enable 'find' subroutine listing of the .meta files  # ----------------- Code to enable 'find' subroutine listing of the .meta files
 require "find.pl";  require "find.pl";
 sub wanted {  sub wanted {
Line 207  if ($wwwid!=$<) { Line 234  if ($wwwid!=$<) {
   
 open(LOG,'>'.$perlvar{'lonDaemons'}.'/logs/searchcat.log');  open(LOG,'>'.$perlvar{'lonDaemons'}.'/logs/searchcat.log');
 print LOG '==== Searchcat Run '.localtime()."====\n\n";  print LOG '==== Searchcat Run '.localtime()."====\n\n";
   $simplestatus='time='.time.'&';
 my $dbh;  my $dbh;
 # ------------------------------------- Make sure that database can be accessed  # ------------------------------------- Make sure that database can be accessed
 {  {
Line 214  my $dbh; Line 242  my $dbh;
     $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0})      $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0})
     ) {       ) { 
  print LOG "Cannot connect to database!\n";   print LOG "Cannot connect to database!\n";
    $simplestatus.='mysql=defunct';
    &writesimple();
  exit;   exit;
     }      }
   
     my $make_metadata_table = "CREATE TABLE IF NOT EXISTS metadata (".      my $make_metadata_table = "CREATE TABLE IF NOT EXISTS metadata (".
         "title TEXT, author TEXT, subject TEXT, url TEXT, keywords TEXT, ".          "title TEXT, author TEXT, subject TEXT, url TEXT, keywords TEXT, ".
         "version TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, ".          "version TEXT, notes TEXT, abstract TEXT, mime TEXT, language TEXT, ".
Line 276  foreach my $user (@homeusers) { Line 307  foreach my $user (@homeusers) {
     foreach my $m (@metalist) {      foreach my $m (@metalist) {
         print LOG "- ".$m."\n";          print LOG "- ".$m."\n";
         my $ref=&metadata($m);          my $ref=&metadata($m);
     if ($ref->{'obsolete'}) { print LOG "obsolete\n"; next; }
    if ($ref->{'copyright'} eq 'private') { print LOG "private\n"; next; }
         my $m2='/res/'.&declutter($m);          my $m2='/res/'.&declutter($m);
         $m2=~s/\.meta$//;          $m2=~s/\.meta$//;
         &dynamicmeta($m2);  #        &dynamicmeta($m2);
    &count($m2);
         $delete_sth->execute($m2);          $delete_sth->execute($m2);
         $insert_sth->execute($ref->{'title'},          $insert_sth->execute($ref->{'title'},
                              $ref->{'author'},                               $ref->{'author'},
Line 305  foreach my $user (@homeusers) { Line 339  foreach my $user (@homeusers) {
     # ... not yet implemented      # ... not yet implemented
                   
     # ------------------------------------------- Copy over the new db-files      # ------------------------------------------- Copy over the new db-files
     system('mv '.$prodir.'/nohist_new_resevaldata.db '.      #
            $prodir.'/nohist_resevaldata.db');      # Check the size of nohist_new_resevaldata.db compared to 
       # nohist_resevaldata.db
   #    my @stat_result = stat($prodir.'/nohist_new_resevaldata.db');
   #    my $new_size = $stat_result[7];
   #    @stat_result = stat($prodir.'/nohist_resevaldata.db');
   #    my $old_size = $stat_result[7];
   #    if ($old_size) {
   # if ($new_size/$old_size > 0.15 ) {
   #    system('mv '.$prodir.'/nohist_new_resevaldata.db '.
   #   $prodir.'/nohist_resevaldata.db');
   # } else {
   #    print LOG "Size of '$user' old nohist_reseval: $old_size ".
   # "Size of new: $new_size.  Not overwriting.\n";
   #    my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
   #    my $subj="LON: $perlvar{'lonHostID'} searchcat.pl $user reseval ".
   # "modification error.";
   #    system("echo ".
   # "'See /home/httpd/perl/logs/searchcat.txt for information.' ".
   #   "| mailto $emailto -s '$subj' > /dev/null");
   # }
   #    }   
 }  }
 # --------------------------------------------------- Close database connection  # --------------------------------------------------- Close database connection
 $dbh->disconnect;  $dbh->disconnect;
 print LOG "\n==== Searchcat completed ".localtime()." ====\n";  print LOG "\n==== Searchcat completed ".localtime()." ====\n";
 close(LOG);  close(LOG);
   &writesimple();
   &writecount();
 exit 0;  exit 0;
   
   

Removed from v.1.34  
changed lines
  Added in v.1.40


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