# The LearningOnline Network with CAPA
# a pile of common routines
#
# $Id: loncommon.pm,v 1.39 2002/06/24 20:17:55 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
# YEAR=2001
# 2/13-12/7 Guy Albertelli
# 12/11,12/12,12/17 Scott Harrison
# 12/21 Gerd Kortemeyer
# 12/21 Scott Harrison
# 12/25,12/28 Gerd Kortemeyer
# YEAR=2002
# 1/4 Gerd Kortemeyer
# Makes a table out of the previous attempts
# Inputs result_from_symbread, user, domain, course_id
# Reads in non-network-related .tab files
# POD header:
=head1 NAME
Apache::loncommon - pile of common routines
=head1 SYNOPSIS
Referenced by other mod_perl Apache modules.
Invocation:
&Apache::loncommon::SUBROUTINENAME(ARGUMENTS);
=head1 INTRODUCTION
Common collection of used subroutines. This collection helps remove
redundancy from other modules and increase efficiency of memory usage.
Current things done:
Makes a table out of the previous homework attempts
Inputs result_from_symbread, user, domain, course_id
Reads in non-network-related .tab files
This is part of the LearningOnline Network with CAPA project
described at http://www.lon-capa.org.
=head2 General Subroutines
=over 4
=cut
# End of POD header
package Apache::loncommon;
use strict;
use Apache::lonnet();
use POSIX qw(strftime);
use Apache::Constants qw(:common);
use Apache::lonmsg();
my $readit;
# ----------------------------------------------- Filetypes/Languages/Copyright
my %language;
my %cprtag;
my %fe; my %fd;
my %category_extensions;
# -------------------------------------------------------------- Thesaurus data
my @therelated;
my @theword;
my @thecount;
my %theindex;
my $thetotalcount;
my $thefuzzy=2;
my $thethreshold=0.1/$thefuzzy;
my $theavecount;
# ----------------------------------------------------------------------- BEGIN
=pod
=item BEGIN()
Initialize values from language.tab, copyright.tab, filetypes.tab,
and filecategories.tab.
=cut
# ----------------------------------------------------------------------- BEGIN
BEGIN {
unless ($readit) {
# ------------------------------------------------------------------- languages
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
'/language.tab');
if ($fh) {
while (<$fh>) {
next if /^\#/;
chomp;
my ($key,$val)=(split(/\s+/,$_,2));
$language{$key}=$val;
}
}
}
# ------------------------------------------------------------------ copyrights
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonIncludes'}.
'/copyright.tab');
if ($fh) {
while (<$fh>) {
next if /^\#/;
chomp;
my ($key,$val)=(split(/\s+/,$_,2));
$cprtag{$key}=$val;
}
}
}
# ------------------------------------------------------------- file categories
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
'/filecategories.tab');
if ($fh) {
while (<$fh>) {
next if /^\#/;
chomp;
my ($extension,$category)=(split(/\s+/,$_,2));
push @{$category_extensions{lc($category)}},$extension;
}
}
}
# ------------------------------------------------------------------ file types
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
'/filetypes.tab');
if ($fh) {
while (<$fh>) {
next if (/^\#/);
chomp;
my ($ending,$emb,$descr)=split(/\s+/,$_,3);
if ($descr ne '') {
$fe{$ending}=lc($emb);
$fd{$ending}=$descr;
}
}
}
}
# -------------------------------------------------------------- Thesaurus data
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
'/thesaurus.dat');
if ($fh) {
while (<$fh>) {
my ($tword,$tindex,$tcount,$trelated)=split(/\@/,$_);
$theindex{$tword}=$tindex;
$theword[$tindex]=$tword;
$thecount[$tindex]=$tcount;
$thetotalcount+=$tcount;
$therelated[$tindex]=$trelated;
}
}
$theavecount=$thetotalcount/$#thecount;
}
&Apache::lonnet::logthis(
"INFO: Read file types and thesaurus");
$readit=1;
}
}
# ============================================================= END BEGIN BLOCK
=item linked_select_forms(...)
linked_select_forms returns a string containing a block
and html for two