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; |