Diff for /loncom/metadata_database/searchcat.pl between versions 1.47 and 1.52

version 1.47, 2003/12/25 04:06:52 version 1.52, 2003/12/27 01:52:04
Line 56  This script also does general database m Line 56  This script also does general database m
 the C<loncapa:metadata> table if it is deprecated.  the C<loncapa:metadata> table if it is deprecated.
   
 This script evaluates dynamic metadata from the authors'  This script evaluates dynamic metadata from the authors'
 F<nohist_resevaldata.db> database file in order to store it in MySQL, as  F<nohist_resevaldata.db> database file in order to store it in MySQL.
 well as to compress the filesize (add up all "count"-type metadata).  
   
 This script is playing an increasingly important role for a loncapa  This script is playing an increasingly important role for a loncapa
 library server.  The proper operation of this script is critical for a smooth  library server.  The proper operation of this script is critical for a smooth
Line 131  sub escape { Line 130  sub escape {
 sub dynamicmeta {  sub dynamicmeta {
     my $url=&declutter(shift);      my $url=&declutter(shift);
     $url=~s/\.meta$//;      $url=~s/\.meta$//;
     my %returnhash=();      my %returnhash=(
       'count' => 0,
       'course' => 0,
       'course_list' => '',
       'avetries' => 'NULL',
       'avetries_list' => '',
       'stdno' => 0,
       'stdno_list' => '',
       'usage' => 0,
       'usage_list' => '',
       'goto' => 0,
       'goto_list' => '',
       'comefrom' => 0,
       'comefrom_list' => '',
       'difficulty' => 'NULL',
       'difficulty_list' => '',
                       'clear' => 'NULL',
                       'technical' => 'NULL',
       'correct' => 'NULL',
       'helpful' => 'NULL',
       'depth' => 'NULL',
       'comments' => ''
       );
     my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);      my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);
     my $prodir=&propath($adomain,$aauthor);      my $prodir=&propath($adomain,$aauthor);
   
Line 167  sub dynamicmeta { Line 188  sub dynamicmeta {
  if (defined($cnt{$cat})) { $cnt{$cat}++; } else { $cnt{$cat}=1; }   if (defined($cnt{$cat})) { $cnt{$cat}++; } else { $cnt{$cat}=1; }
  unless ($listitems{$cat} eq 'app') {   unless ($listitems{$cat} eq 'app') {
     if (defined($sum{$cat})) {      if (defined($sum{$cat})) {
  $sum{$cat}+=$evaldata{$esckey};   $sum{$cat}+=&unescape($evaldata{$esckey});
  $concat{$cat}.=','.$item;   $concat{$cat}.=','.$item;
     } else {      } else {
  $sum{$cat}=$evaldata{$esckey};   $sum{$cat}=&unescape($evaldata{$esckey});
  $concat{$cat}=$item;   $concat{$cat}=$item;
     }      }
  } else {   } else {
     if (defined($sum{$cat})) {      if (defined($sum{$cat})) {
  if ($evaldata{$esckey}=~/\w/) {   if ($evaldata{$esckey}=~/\w/) {
     $sum{$cat}.='<hr>'.$evaldata{$esckey};      $sum{$cat}.='<hr />'.&unescape($evaldata{$esckey});
  }   }
     } else {      } else {
  $sum{$cat}=''.$evaldata{$esckey};   $sum{$cat}=''.&unescape($evaldata{$esckey});
     }      }
  }   }
     }      }
Line 187  sub dynamicmeta { Line 208  sub dynamicmeta {
  untie(%evaldata);   untie(%evaldata);
 # transfer gathered data to returnhash, calculate averages where applicable  # transfer gathered data to returnhash, calculate averages where applicable
  while (my $cat=each(%cnt)) {   while (my $cat=each(%cnt)) {
       if ($cnt{$cat} eq 'nan') { next; }
       if ($sum{$cat} eq 'nan') { next; }
     if ($listitems{$cat} eq 'avg') {      if ($listitems{$cat} eq 'avg') {
  $returnhash{$cat}=int(($sum{$cat}/$cnt{$cat})*100.0+0.5)/100.0;   if ($cnt{$cat}) {
       $returnhash{$cat}=int(($sum{$cat}/$cnt{$cat})*100.0+0.5)/100.0;
    } else {
       $returnhash{$cat}='NULL';
    }
     } elsif ($listitems{$cat} eq 'cnt') {      } elsif ($listitems{$cat} eq 'cnt') {
  $returnhash{$cat}=$cnt{$cat};   $returnhash{$cat}=$cnt{$cat};
     } else {      } else {
Line 214  sub dynamicmeta { Line 241  sub dynamicmeta {
 # ---------------  Read loncapa_apache.conf and loncapa.conf and get variables  # ---------------  Read loncapa_apache.conf and loncapa.conf and get variables
 my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');  my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
 my %perlvar=%{$perlvarref};  my %perlvar=%{$perlvarref};
 undef $perlvarref; # remove since sensitive and not needed  undef $perlvarref;
 delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed  delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
   
 # ------------------------------------- Only run if machine is a library server  # ------------------------------------- Only run if machine is a library server
Line 255  my $dbh; Line 282  my $dbh;
         "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, ".
         "creationdate DATETIME, lastrevisiondate DATETIME, owner TEXT, ".          "creationdate DATETIME, lastrevisiondate DATETIME, owner TEXT, ".
         "copyright TEXT, ".          "copyright TEXT, dependencies TEXT, ".
    "modifyinguser TEXT, authorspace TEXT, ".
    "lowestgradelevel INTEGER UNSIGNED, highestgradelevel INTEGER UNSIGNED, ".
    "standards TEXT, ".
         "count INTEGER UNSIGNED, ".          "count INTEGER UNSIGNED, ".
         "course INTEGER UNSIGNED, course_list TEXT, ".          "course INTEGER UNSIGNED, course_list TEXT, ".
         "goto INTEGER UNSIGNED, goto_list TEXT, ".          "goto INTEGER UNSIGNED, goto_list TEXT, ".
         "comefrom INTEGER UNSIGNED, comefrom_list TEXT, ".          "comefrom INTEGER UNSIGNED, comefrom_list TEXT, ".
         "fusage INTEGER UNSIGNED, fusage_list TEXT, ".          "sequsage INTEGER UNSIGNED, sequsage_list TEXT, ".
         "stdno INTEGER UNSIGNED, stdno_list TEXT, ".          "stdno INTEGER UNSIGNED, stdno_list TEXT, ".
  "avetries FLOAT, avetries_list TEXT, ".   "avetries FLOAT, avetries_list TEXT, ".
         "difficulty FLOAT, difficulty_list TEXT, ".          "difficulty FLOAT, difficulty_list TEXT, ".
    "clear FLOAT, technical FLOAT, correct FLOAT, helpful FLOAT, depth FLOAT, ".
    "comments TEXT, ".
   
         "FULLTEXT idx_title (title), ".          "FULLTEXT idx_title (title), ".
         "FULLTEXT idx_author (author), FULLTEXT idx_subject (subject), ".          "FULLTEXT idx_author (author), FULLTEXT idx_subject (subject), ".
         "FULLTEXT idx_url (url), FULLTEXT idx_keywords (keywords), ".          "FULLTEXT idx_url (url), FULLTEXT idx_keywords (keywords), ".
         "FULLTEXT idx_version (version), FULLTEXT idx_notes (notes), ".          "FULLTEXT idx_notes (notes), ".
         "FULLTEXT idx_abstract (abstract), FULLTEXT idx_mime (mime), ".          "FULLTEXT idx_abstract (abstract), FULLTEXT idx_mime (mime), ".
         "FULLTEXT idx_language (language), FULLTEXT idx_owner (owner), ".          "FULLTEXT idx_owner (owner), ".
         "FULLTEXT idx_copyright (copyright)) ".   "FULLTEXT idx_standards (standards))".
         "TYPE=MyISAM";          "TYPE=MyISAM";
     # It would sure be nice to have some logging mechanism.      # It would sure be nice to have some logging mechanism.
     unless ($dbh->do($make_metadata_table)) {      unless ($dbh->do($make_metadata_table)) {
Line 305  my $insert_sth = $dbh->prepare Line 338  my $insert_sth = $dbh->prepare
      "?,".   # revisiondate       "?,".   # revisiondate
      "?,".   # owner       "?,".   # owner
      "?,".   # copyright       "?,".   # copyright
        "?,".   # dependencies
        "?,".   # modifyinguser
        "?,".   # authorspace
        "?,".   # lowestgradelevel
        "?,".   # highestgradelevel
        "?,".   # standards
      "?,".   # count       "?,".   # count
      "?,".   # course       "?,".   # course
      "?,".   # course_list       "?,".   # course_list
Line 319  my $insert_sth = $dbh->prepare Line 358  my $insert_sth = $dbh->prepare
      "?,".   # avetries       "?,".   # avetries
      "?,".   # avetries_list       "?,".   # avetries_list
      "?,".   # difficulty       "?,".   # difficulty
      "?,"    # difficulty_list       "?,".   # difficulty_list
        "?,".   # clear
        "?,".   # technical
        "?,".   # correct
        "?,".   # helpful
        "?,".   # depth
        "?".    # comments
        ")"
      );       );
   
 foreach my $user (@homeusers) {  foreach my $user (@homeusers) {
Line 357  foreach my $user (@homeusers) { Line 403  foreach my $user (@homeusers) {
                              sqltime($ref->{'lastrevisiondate'}),                               sqltime($ref->{'lastrevisiondate'}),
                              $ref->{'owner'},                               $ref->{'owner'},
                              $ref->{'copyright'},                               $ref->{'copyright'},
        $ref->{'dependencies'},
        $ref->{'modifyinguser'},
        $ref->{'authorspace'},
        $ref->{'lowestgradelevel'},
        $ref->{'highestgradelevel'},
        $ref->{'standards'},
      $dyn{'count'},       $dyn{'count'},
      $dyn{'course'},       $dyn{'course'},
      $dyn{'course_list'},       $dyn{'course_list'},
Line 371  foreach my $user (@homeusers) { Line 423  foreach my $user (@homeusers) {
      $dyn{'avetries'},       $dyn{'avetries'},
      $dyn{'avetries_list'},       $dyn{'avetries_list'},
      $dyn{'difficulty'},       $dyn{'difficulty'},
      $dyn{'difficulty_list'}            $dyn{'difficulty_list'},     
        $dyn{'clear'},
        $dyn{'technical'},
        $dyn{'correct'},
        $dyn{'helpful'},
        $dyn{'depth'},
        $dyn{'comments'}     
      )) {       )) {
     print LOG "\nMySQL Error Insert: ".$dbh->errstr."\n";      print LOG "\nMySQL Error Insert: ".$dbh->errstr."\n";
     die $dbh->errstr;      die $dbh->errstr;

Removed from v.1.47  
changed lines
  Added in v.1.52


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