version 1.169, 2003/03/10 14:20:07
|
version 1.175, 2003/05/30 20:54:28
|
Line 82 use Text::Query;
|
Line 82 use Text::Query;
|
use GDBM_File; |
use GDBM_File; |
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonmysql(); |
use Apache::lonmysql(); |
|
use Apache::lonmenu(); |
|
|
# ---------------------------------------- variables used throughout the module |
# ---------------------------------------- variables used throughout the module |
|
|
Line 720 ENDHEADER
|
Line 721 ENDHEADER
|
my $size = 4; |
my $size = 4; |
$size = (scalar @domains < ($size - 1) ? scalar @domains + 1 : $size); |
$size = (scalar @domains < ($size - 1) ? scalar @domains + 1 : $size); |
$scrout.="\n".'<font color="#800000" face="helvetica"><b>'. |
$scrout.="\n".'<font color="#800000" face="helvetica"><b>'. |
'DOMAINS</b></font><br />'. |
'DOMAINS TO BE SEARCHED</b></font><br />'. |
'<select name="domains" size="'.$size.'" multiple>'."\n". |
'<select name="domains" size="'.$size.'" multiple>'."\n". |
'<option name="any" value="any" '. |
'<option name="any" value="any" '. |
($domain_hash{'any'}? 'selected ' :''). |
($domain_hash{'any'}? 'selected ' :''). |
Line 1618 sub recursive_SQL_query_build {
|
Line 1619 sub recursive_SQL_query_build {
|
my @matches=($pattern=~/(\[[^\]|\[]*\])/g); |
my @matches=($pattern=~/(\[[^\]|\[]*\])/g); |
return $pattern unless @matches; |
return $pattern unless @matches; |
foreach my $match (@matches) { |
foreach my $match (@matches) { |
$match=~/\[ (\w+)\s(.*) \]/; |
$match=~/\[ (\w+)\s(.*) \]/; |
my ($key,$value)=($1,$2); |
my ($key,$value)=($1,$2); |
my $replacement=''; |
my $replacement=''; |
if ($key eq 'literal') { |
if ($key eq 'literal') { |
$replacement="($dkey like \"\%$value\%\")"; |
$replacement="($dkey like \"\%$value\%\")"; |
} |
} elsif ($key eq 'not') { |
elsif ($key eq 'not') { |
$value=~s/like/not like/; |
$value=~s/like/not like/; |
# $replacement="($dkey not like $value)"; |
# $replacement="($dkey not like $value)"; |
$replacement="$value"; |
$replacement="$value"; |
} elsif ($key eq 'and') { |
} |
$value=~/(.*[\"|\)]) ([|\(|\^].*)/; |
elsif ($key eq 'and') { |
$replacement="($1 AND $2)"; |
$value=~/(.*[\"|\)]) ([|\(|\^].*)/; |
} elsif ($key eq 'or') { |
$replacement="($1 AND $2)"; |
$value=~/(.*[\"|\)]) ([|\(|\^].*)/; |
} |
$replacement="($1 OR $2)"; |
elsif ($key eq 'or') { |
|
$value=~/(.*[\"|\)]) ([|\(|\^].*)/; |
|
$replacement="($1 OR $2)"; |
|
} |
} |
substr($pattern, |
substr($pattern, |
index($pattern,$match), |
index($pattern,$match), |
length($match), |
length($match), |
$replacement |
$replacement); |
); |
|
} |
} |
&recursive_SQL_query_build($dkey,$pattern); |
&recursive_SQL_query_build($dkey,$pattern); |
} |
} |
Line 1898 the following format:
|
Line 1895 the following format:
|
|
|
=cut |
=cut |
|
|
## |
##################################################################### |
## Restrictions: |
##################################################################### |
## columns of type 'text' and 'blob' cannot have defaults. |
|
## columns of type 'enum' cannot be used for FULLTEXT. |
my @Datatypes = |
## |
( { name => 'id', |
my @DataOrder = qw/id title author subject url keywords version notes |
type => 'MEDIUMINT', |
abstract mime lang owner copyright creationdate lastrevisiondate hostname/; |
restrictions => 'UNSIGNED NOT NULL', |
|
primary_key => 'yes', |
my %Datatypes = |
auto_inc => 'yes' }, |
( id =>{ type => 'MEDIUMINT', |
{ name => 'title', type=>'TEXT'}, |
restrictions => 'UNSIGNED NOT NULL', |
{ name => 'author', type=>'TEXT'}, |
primary_key => 'yes', |
{ name => 'subject', type=>'TEXT'}, |
auto_inc => 'yes' |
{ name => 'url', type=>'TEXT', restrictions => 'NOT NULL' }, |
}, |
{ name => 'keywords', type=>'TEXT'}, |
title =>{ type=>'TEXT'}, |
{ name => 'version', type=>'TEXT'}, |
author =>{ type=>'TEXT'}, |
{ name => 'notes', type=>'TEXT'}, |
subject =>{ type=>'TEXT'}, |
{ name => 'abstract', type=>'TEXT'}, |
url =>{ type=>'TEXT', |
{ name => 'mime', type=>'TEXT'}, |
restrictions => 'NOT NULL' }, |
{ name => 'lang', type=>'TEXT'}, |
keywords =>{ type=>'TEXT'}, |
{ name => 'owner', type=>'TEXT'}, |
version =>{ type=>'TEXT'}, |
{ name => 'copyright', type=>'TEXT'}, |
notes =>{ type=>'TEXT'}, |
{ name => 'hostname', type=>'TEXT'}, |
abstract =>{ type=>'TEXT'}, |
|
mime =>{ type=>'TEXT'}, |
|
lang =>{ type=>'TEXT'}, |
|
owner =>{ type=>'TEXT'}, |
|
copyright =>{ type=>'TEXT'}, |
|
hostname =>{ type=>'TEXT'}, |
|
#-------------------------------------------------- |
#-------------------------------------------------- |
creationdate =>{ type=>'DATETIME'}, |
{ name => 'creationdate', type=>'DATETIME'}, |
lastrevisiondate =>{ type=>'DATETIME'}, |
{ name => 'lastrevisiondate', type=>'DATETIME'}, |
#-------------------------------------------------- |
#-------------------------------------------------- |
); |
); |
|
|
Line 1956 Returns: the identifier of the table on
|
Line 1947 Returns: the identifier of the table on
|
###################################################################### |
###################################################################### |
sub create_results_table { |
sub create_results_table { |
my $table = &Apache::lonmysql::create_table |
my $table = &Apache::lonmysql::create_table |
( { columns => \%Datatypes, |
( { columns => \@Datatypes, |
column_order => \@DataOrder, |
FULLTEXT => [{'columns' => \@Fullindicies},], |
fullindex => \@Fullindicies, |
|
} ); |
} ); |
if (defined($table)) { |
if (defined($table)) { |
$ENV{'form.table'} = $table; |
$ENV{'form.table'} = $table; |
Line 2484 sub parse_row {
|
Line 2474 sub parse_row {
|
my @Row = @_; |
my @Row = @_; |
my %Fields; |
my %Fields; |
for (my $i=0;$i<=$#Row;$i++) { |
for (my $i=0;$i<=$#Row;$i++) { |
$Fields{$DataOrder[$i]}=&Apache::lonnet::unescape($Row[$i]); |
$Fields{$Datatypes[$i]->{'name'}}=&Apache::lonnet::unescape($Row[$i]); |
} |
} |
$Fields{'language'} = |
$Fields{'language'} = |
&Apache::loncommon::languagedescription($Fields{'lang'}); |
&Apache::loncommon::languagedescription($Fields{'lang'}); |
Line 2765 sub print_frames_interface {
|
Line 2755 sub print_frames_interface {
|
"&persistent_db_id=".$ENV{'form.persistent_db_id'}; |
"&persistent_db_id=".$ENV{'form.persistent_db_id'}; |
my $run_search_link = $basic_link."&phase=run_search"; |
my $run_search_link = $basic_link."&phase=run_search"; |
my $results_link = &results_link(); |
my $results_link = &results_link(); |
|
my $loadevents=&Apache::lonmenu::loadevents(); |
|
my $unloadevents=&Apache::lonmenu::unloadevents(); |
|
my $addscript=&Apache::lonmenu::registerurl(); |
my $result = <<"ENDFRAMES"; |
my $result = <<"ENDFRAMES"; |
<html> |
<html> |
<head> |
<head> |
Line 2772 sub print_frames_interface {
|
Line 2765 sub print_frames_interface {
|
var targetwin = opener; |
var targetwin = opener; |
var queue = ''; |
var queue = ''; |
</script> |
</script> |
|
$addscript |
<title>LON-CAPA Digital Library Search Results</title> |
<title>LON-CAPA Digital Library Search Results</title> |
</head> |
</head> |
<frameset rows="150,*"> |
<frameset rows="150,*" onLoad="$loadevents" onUnload="$unloadevents"> |
<frame name="statusframe" src="$run_search_link"> |
<frame name="statusframe" src="$run_search_link"> |
<frame name="resultsframe" src="$results_link"> |
<frame name="resultsframe" src="$results_link"> |
</frameset> |
</frameset> |