* bugfix for the search on a MARC detail, when you clic on the magnifying glass (caused an internal server error)

* partial support of the "linkage" MARC feature : if you enter a "link" on a MARC subfield, the magnifying glass won't search on the field, but on the linked field. I agree it's a partial support. Will be improved, but I need to investigate MARC21 & UNIMARC diffs on this topic.
This commit is contained in:
tipaul 2005-01-03 10:48:33 +00:00
parent 2dfe2c917a
commit 5aa60ee667
4 changed files with 76 additions and 27 deletions

View File

@ -253,7 +253,7 @@ sub MARCgettagslib {
$sth =
$dbh->prepare(
"select tagfield,tagsubfield,$libfield as lib,tab, mandatory, repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl from marc_subfield_structure where frameworkcode=? order by tagfield,tagsubfield"
"select tagfield,tagsubfield,$libfield as lib,tab, mandatory, repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link from marc_subfield_structure where frameworkcode=? order by tagfield,tagsubfield"
);
$sth->execute($frameworkcode);
@ -265,12 +265,13 @@ sub MARCgettagslib {
my $seealso;
my $hidden;
my $isurl;
my $link;
while (
( $tag, $subfield, $lib, $tab,
$mandatory, $repeatable, $authorised_value, $authtypecode,
$value_builder, $kohafield, $seealso, $hidden,
$isurl )
$isurl, $link )
= $sth->fetchrow
)
{
@ -285,6 +286,7 @@ sub MARCgettagslib {
$res->{$tag}->{$subfield}->{seealso} = $seealso;
$res->{$tag}->{$subfield}->{hidden} = $hidden;
$res->{$tag}->{$subfield}->{isurl} = $isurl;
$res->{$tag}->{$subfield}->{link} = $link;
}
return $res;
}
@ -2632,6 +2634,10 @@ Paul POULAIN paul.poulain@free.fr
# $Id$
# $Log$
# Revision 1.114 2005/01/03 10:48:33 tipaul
# * bugfix for the search on a MARC detail, when you clic on the magnifying glass (caused an internal server error)
# * partial support of the "linkage" MARC feature : if you enter a "link" on a MARC subfield, the magnifying glass won't search on the field, but on the linked field. I agree it's a partial support. Will be improved, but I need to investigate MARC21 & UNIMARC diffs on this topic.
#
# Revision 1.113 2004/12/10 16:27:53 tipaul
# limiting the number of search term to 8. There was no limit before, but 8 words seems to be the upper limit mySQL can deal with (in less than a second. tested on a DB with 13 000 items)
# In 2.4, a new DB structure will highly speed things and this limit will be removed.

View File

@ -166,6 +166,7 @@ $marcflavour ("MARC21" or "UNIMARC") determines which tags are used for retrievi
sub catalogsearch {
my ($dbh, $tags, $and_or, $excluding, $operator, $value, $offset,$length,$orderby) = @_;
warn "@$tags[0], @$and_or[0], @$excluding[0], @$operator[0], @$value[0], $offset,$length,$orderby";
# build the sql request. She will look like :
# select m1.bibid
# from marc_subfield_table as m1, marc_subfield_table as m2
@ -190,10 +191,11 @@ sub catalogsearch {
$orderby = "biblio.title" unless $orderby;
#last minute stripping out of ' and ,
foreach $_ (@$value) {
$_=~ s/\'/ /g;
$_=~ s/\,/ /g;
}
# paul : quoting, it's done a few lines lated.
# foreach $_ (@$value) {
# $_=~ s/\'/ /g;
# $_=~ s/\,/ /g;
# }
for(my $i = 0 ; $i <= $#{$value} ; $i++)
{
@ -201,7 +203,7 @@ sub catalogsearch {
@$value[$i] =~ s/\*/%/g;
# remove % at the beginning
@$value[$i] =~ s/^%//g;
@$value[$i] =~ s/(\.|\?|\:|\!|\'|,|\-|\"|\(|\)|\[|\]|\{|\})/ /g;
@$value[$i] =~ s/(\.|\?|\:|\!|\'|,|\-|\"|\(|\)|\[|\]|\{|\})/ /g if @$operator[$i] eq "contains";
if(@$excluding[$i]) # NOT statements
{
$any_not = 1;

View File

@ -85,8 +85,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -111,8 +115,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -137,8 +145,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -163,8 +175,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -189,8 +205,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -215,8 +235,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -241,8 +265,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -267,8 +295,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -293,8 +325,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>
@ -319,8 +355,12 @@
<!-- TMPL_LOOP NAME="subfield" -->
<p>
<label class="labelsubfield">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator=&amp;#x003D&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
<!-- TMPL_IF name="link">
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="link" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- TMPL_ELSE -->
<a href="search.marc/search.pl?op=do_search&amp;marclist=<!-- TMPL_VAR NAME="marc_tag" --><!-- TMPL_VAR NAME="marc_subfield" -->&amp;operator==&amp;type=intranet&amp;value=<!-- TMPL_VAR NAME="marc_value" ESCAPE=URL -->">
<!-- /TMPL_IF -->
<img border="0" src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/filefind.png" height="15" alt="Search on this Field's Value">
</a>
<!-- TMPL_VAR NAME="marc_subfield" -->
<!-- TMPL_VAR NAME="marc_lib" --></label>

View File

@ -136,6 +136,7 @@
<!-- TMPL_IF NAME="authorised_value" --> Auth value :<!-- TMPL_VAR NAME="authorised_value" -->,<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="authtypecode" --> Authority :<!-- TMPL_VAR NAME="authtypecode" -->,<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="value_builder" -->Plugin :<!-- TMPL_VAR NAME="value_builder" -->,<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="link" -->Link:<!-- TMPL_VAR NAME="link" -->,<!-- /TMPL_IF -->
<!-- /TMPL_IF -->
</td>
<td><a href="<!-- TMPL_VAR NAME="delete" -->"><img src="<!-- TMPL_VAR NAME="interface" -->/<!-- TMPL_VAR NAME="theme" -->/images/edittrash.png" width="32" hspace="0" vspace="0" border="0"></a></td>