#!/usr/bin/perl
-# Copyright 2000-2002 Katipo Communications
+# Copyright Biblibre 2007
#
# This file is part of Koha.
#
-# Koha 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.
+# Koha 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 3 of the License, or
+# (at your option) any later version.
#
-# Koha 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.
+# Koha 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
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use strict;
-require Exporter;
-use CGI;
-use C4::Output;
+#use warnings; FIXME - Bug 2505
+
+use CGI qw ( -utf8 );
+use C4::Output qw( output_html_with_http_headers );
use C4::Context;
-use C4::Search;
-use C4::Auth;
-use C4::Output;
+use C4::Search qw( new_record_from_zebra );
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
+
+use C4::Biblio qw( TransformMarcToKoha );
-use C4::Biblio;
-use C4::Koha;
-use MARC::Record;
-use C4::Branch; # GetBranches
+use Koha::Biblios;
+use Koha::ItemTypes;
+
+use Koha::SearchEngine;
+use Koha::SearchEngine::Search;
sub plugin_parameters {
- my ( $dbh, $record, $tagslib, $i, $tabloop ) = @_;
+ my ( $dbh, $record, $tagslib, $i ) = @_;
return "";
}
sub plugin_javascript {
- my ( $dbh, $record, $tagslib, $field_number, $tabloop ) = @_;
+ my ( $dbh, $record, $tagslib, $field_number ) = @_;
my $function_name = $field_number;
my $res = "
- <script type='text/javascript'>
- function Focus$function_name(subfield_managed) {
- return 1;
- }
-
- function Blur$function_name(subfield_managed) {
- return 1;
- }
-
+ <script>
function Clic$function_name(i) {
defaultvalue=document.getElementById(\"$field_number\").value;
- window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=$field_number&result=\"+defaultvalue,\"unimarc field 4\"+i+\"\",'width=900,height=700,toolbar=false,scrollbars=yes');
+ window.open(\"/cgi-bin/koha/cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_4XX.pl&index=\" + i + \"&result=\"+defaultvalue,\"unimarc_field_4\"+i+\"\",'width=900,height=700,toolbar=false,scrollbars=yes');
}
</script>
# sub plugin
#
-# input arg :
+# input arg :
# -- op could be equals to
-# * fillinput :
-# * do_search :
-#
+# * fillinput :
+# * do_search :
+#
sub plugin {
my ($input) = @_;
my $dbh = C4::Context->dbh;
- my $query = new CGI;
+ my $query = CGI->new;
my $op = $query->param('op');
my $type = $query->param('type');
my $startfrom = $query->param('startfrom');
$startfrom = 0 if ( !defined $startfrom );
my ( $template, $loggedinuser, $cookie );
my $resultsperpage;
- my $searchdesc;
if ( $op eq "fillinput" ) {
my $biblionumber = $query->param('biblionumber');
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name =>
- "cataloguing/value_builder/unimarc_field_4XX.tmpl",
+ "cataloguing/value_builder/unimarc_field_4XX.tt",
query => $query,
type => "intranet",
- authnotrequired => 0,
- flagsrequired => { editcatalogue => 1 },
- debug => 1,
+ flagsrequired => { editcatalogue => '*' },
}
);
#get marc record
- $marcrecord = GetMarcBiblio($biblionumber);
+ my $biblio = Koha::Biblios->find($biblionumber);
+ $marcrecord = $biblio->metadata->record;
my $subfield_value_9 = $biblionumber;
my $subfield_value_0;
$subfield_value_a .= " " . $marcrecord->subfield( '700', "d" )
if $marcrecord->subfield( '700', 'd' );
$subfield_value_a .=
- " (" . $marcrecord->subfield( '700', 'c' ) . " - "
+ " (" . $marcrecord->subfield( '700', 'c' )
if $marcrecord->subfield( '700', 'c' );
+ $subfield_value_a .= " ; "
+ if $marcrecord->subfield( '700', 'c' )
+ and $marcrecord->subfield( '700', 'f' );
$subfield_value_a .= " ("
if ( $marcrecord->subfield( '700', 'f' )
and not( $marcrecord->subfield( '700', 'c' ) ) );
$subfield_value_a .= $marcrecord->subfield( '700', 'f' )
if ( $marcrecord->subfield( '700', 'f' ) );
$subfield_value_a .= ")"
- if ( $marcrecord->subfield( '701', 'f' )
- or $marcrecord->subfield( '701', 'c' ) );
+ if ( $marcrecord->subfield( '700', 'f' )
+ or $marcrecord->subfield( '700', 'c' ) );
}
elsif ( $marcrecord->field('702') ) {
$subfield_value_a = $marcrecord->subfield( '702', 'a' );
$subfield_value_a .= " " . $marcrecord->subfield( '702', 'd' )
if $marcrecord->subfield( '702', 'd' );
$subfield_value_a .=
- " (" . $marcrecord->subfield( '702', 'c' ) . "; "
+ " (" . $marcrecord->subfield( '702', 'c' )
if $marcrecord->subfield( '702', 'c' );
+ $subfield_value_a .= " ; "
+ if $marcrecord->subfield( '702', 'c' )
+ and $marcrecord->subfield( '702', 'f' );
$subfield_value_a .= " ("
if $marcrecord->subfield( '702', 'f' )
and not $marcrecord->subfield( '702', 'c' );
" (" . $marcrecord->subfield( '712', 'f' ) . " - "
if $marcrecord->subfield( '712', 'f' );
$subfield_value_a .= " ("
- if $marcrecord->field( '712', "e" )
+ if $marcrecord->subfield( '712', "e" )
and not $marcrecord->subfield( '712', 'f' );
$subfield_value_a .= $marcrecord->subfield( '712', 'e' )
if $marcrecord->subfield( '712', 'e' );
elsif ( $marcrecord->field('200') ) {
$subfield_value_a = $marcrecord->subfield( '200', 'f' );
}
- my $subfield_value_c = $marcrecord->field('210')->subfield("a")
+ my $subfield_value_c;
+ my $subfield_value_d;
+ my $subfield_value_e;
+ $subfield_value_c = $marcrecord->field('210')->subfield("a")
if ( $marcrecord->field('210') );
- my $subfield_value_d = $marcrecord->field('210')->subfield("d")
+ $subfield_value_d = $marcrecord->field('210')->subfield("d")
if ( $marcrecord->field('210') );
-
- my $subfield_value_e = $marcrecord->field('205')->subfield("a")
+ $subfield_value_e = $marcrecord->field('205')->subfield("a")
if ( $marcrecord->field('205') );
my $subfield_value_h;
$subfield_value_i = $marcrecord->field('500')->subfield("i");
}
- my $subfield_value_p = $marcrecord->field('215')->subfield("a")
+ my $subfield_value_l;
+ $subfield_value_l = $marcrecord->field('200')->subfield("d")
+ if ( $marcrecord->field('200') );
+
+ my $subfield_value_n;
+ $subfield_value_n = $marcrecord->field('210')->subfield("c")
+ if ( $marcrecord->field('210') );
+
+ my $subfield_value_o;
+ $subfield_value_o = $marcrecord->field('200')->subfield("e")
+ if ( $marcrecord->field('200') );
+
+ my $subfield_value_p;
+ $subfield_value_p = $marcrecord->field('215')->subfield("a")
if ( $marcrecord->field('215') );
my $subfield_value_t;
$subfield_value_t = $marcrecord->field('500')->subfield("a");
}
- my $subfield_value_u = $marcrecord->field('856')->subfield("u")
- if ( $marcrecord->field('856') );
+ my $subfield_value_u;
+ if ( $marcrecord->field('856') ) {
+ $subfield_value_u = $marcrecord->field('856')->subfield("u");
+ }
my $subfield_value_v;
if ( ( $marcrecord->field('225') )
{
$subfield_value_v = $marcrecord->field('200')->subfield("h");
}
- my $subfield_value_x = $marcrecord->field('011')->subfield("a")
- if (
+ my $subfield_value_x;
+ if (
$marcrecord->field('011')
and not( ( $marcrecord->field('011')->subfield("y") )
- or ( $marcrecord->field('011')->subfield("z") ) )
- );
- my $subfield_value_y = $marcrecord->field('013')->subfield("a")
- if ( $marcrecord->field('013') );
+ or ( $marcrecord->field('011')->subfield("z") ) ) ) {
+ $subfield_value_x = $marcrecord->field('011')->subfield("a");
+ }
+ my $subfield_value_y;
+ if ( $marcrecord->field('013') ) {
+ $subfield_value_y = $marcrecord->field('013')->subfield("a");
+ }
if ( $marcrecord->field('010') ) {
$subfield_value_y = $marcrecord->field('010')->subfield("a");
}
- # escape the 's
- $subfield_value_9 =~ s/'/\\'/g;
- $subfield_value_0 =~ s/'/\\'/g;
- $subfield_value_a =~ s/'/\\'/g;
- $subfield_value_c =~ s/'/\\'/g;
- $subfield_value_d =~ s/'/\\'/g;
- $subfield_value_e =~ s/'/\\'/g;
- $subfield_value_h =~ s/'/\\'/g;
- $subfield_value_i =~ s/'/\\'/g;
- $subfield_value_p =~ s/'/\\'/g;
- $subfield_value_t =~ s/'/\\'/g;
- $subfield_value_u =~ s/'/\\'/g;
- $subfield_value_v =~ s/'/\\'/g;
- $subfield_value_x =~ s/'/\\'/g;
- $subfield_value_y =~ s/'/\\'/g;
$template->param(
fillinput => 1,
- index => $query->param('index') . "",
+ index => scalar $query->param('index') . "",
biblionumber => $biblionumber ? $biblionumber : "",
subfield_value_9 => "$subfield_value_9",
subfield_value_0 => "$subfield_value_0",
subfield_value_e => "$subfield_value_e",
subfield_value_h => "$subfield_value_h",
subfield_value_i => "$subfield_value_i",
+ subfield_value_l => "$subfield_value_l",
+ subfield_value_n => "$subfield_value_n",
+ subfield_value_o => "$subfield_value_o",
subfield_value_p => "$subfield_value_p",
subfield_value_t => "$subfield_value_t",
subfield_value_u => "$subfield_value_u",
}
elsif ( $op eq "do_search" ) {
my $search = $query->param('search');
+ my $itype = $query->param('itype');
my $startfrom = $query->param('startfrom');
- my $resultsperpage = $query->param('resultsperpage');
+ my $resultsperpage = $query->param('resultsperpage') || 20;
my $orderby;
- my ( $errors, $results ) = SimpleSearch($search);
- my $total = scalar(@$results);
- $resultsperpage = 20 unless $resultsperpage;
+ my $op = 'AND';
+ $search = 'kw:'.$search." $op mc-itemtype:".$itype if $itype;
+ my $searcher = Koha::SearchEngine::Search->new({index => $Koha::SearchEngine::BIBLIOS_INDEX});
+ my ( $errors, $results, $total_hits ) = $searcher->simple_search_compat($search, $startfrom * $resultsperpage, $resultsperpage );
+ if (defined $errors ) {
+ $results = [];
+ }
+ my $total = @{$results};
# warn " biblio count : ".$total;
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name =>
- "cataloguing/value_builder/unimarc_field_4XX.tmpl",
+ "cataloguing/value_builder/unimarc_field_4XX.tt",
query => $query,
type => 'intranet',
- authnotrequired => 1,
- debug => 1,
}
);
# multi page display gestion
my $displaynext = 0;
my $displayprev = $startfrom;
- if ( ( $total - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) {
+
+ if( ( $total_hits - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) {
$displaynext = 1;
}
my @arrayresults;
my @field_data = ($search);
for (
- my $i = $startfrom * $resultsperpage ;
- $i < (( $startfrom * $resultsperpage + $resultsperpage < scalar(@$results))
- ? $startfrom * $resultsperpage + $resultsperpage
- : scalar(@$results)
- ) ;
+ my $i = 0 ;
+ $i < $total && $i < $resultsperpage ;
$i++
)
{
- my $record = MARC::Record::new_from_usmarc( $results->[$i] );
- my $rechash = TransformMarcToKoha( $dbh, $record );
+ my $record = C4::Search::new_record_from_zebra( 'biblioserver', $results->[$i] );
+ next unless $record;
+ my $rechash = TransformMarcToKoha({ record => $record });
+ if ( my $f = $record->field('200') ) {
+ $rechash->{fulltitle} =
+ join(', ', map { $_->[1] } grep { $_->[0] =~ /[aehi]/ } $f->subfields() );
+ }
+ else {
+ $rechash->{fulltitle} = $rechash->{title};
+ }
my $pos;
- my $countitems = 1 if ( $rechash->{itemnumber} );
+ my $countitems;
+ if ( $rechash->{itemnumber} ) {
+ $countitems=1;
+ }
while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) {
$countitems += 1;
$pos = index( $rechash->{itemnumber}, '|', $pos ) + 1;
my $from = $startfrom * $resultsperpage + 1;
my $to;
- if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) {
- $to = $total;
- }
- else {
- $to = ( ( $startfrom + 1 ) * $resultsperpage );
+ if ( $total_hits < $from + $resultsperpage ) {
+ $to = $total_hits;
+ }else{
+ $to = $from + $resultsperpage ;
}
- my $defaultview =
- 'BiblioDefaultView' . C4::Context->preference('BiblioDefaultView');
# my $link="/cgi-bin/koha/cataloguing/value_builder/unimarc4XX.pl?op=do_search&q=$search_desc&resultsperpage=$resultsperpage&startfrom=$startfrom&search=$search";
-# foreach my $sort (@sort_by){
+# foreach my $sort (@sort_by){
# $link.="&sort_by=".$sort."&";
-# }
+# }
# $template->param(
# pagination_bar => pagination_bar(
# $link,
# $page,
# 'page'
# ),
-# );
+# );
$template->param(
result => \@arrayresults,
- index => $query->param('index') . "",
+ index => scalar $query->param('index') . "",
startfrom => $startfrom,
displaynext => $displaynext,
displayprev => $displayprev,
startfromnext => $startfrom + 1,
startfromprev => $startfrom - 1,
searchdata => \@field_data,
- total => $total,
+ total => $total_hits,
from => $from,
to => $to,
numbers => \@numbers,
search => $search,
- $defaultview => 1,
Search => 0
);
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name =>
- "cataloguing/value_builder/unimarc_field_4XX.tmpl",
+ "cataloguing/value_builder/unimarc_field_4XX.tt",
query => $query,
type => "intranet",
- authnotrequired => 1,
}
);
- my $sth =
- $dbh->prepare(
- "Select itemtype,description from itemtypes order by description");
- $sth->execute;
- my @itemtype;
- my %itemtypes;
- push @itemtype, "";
- $itemtypes{''} = "";
- while ( my ( $value, $lib ) = $sth->fetchrow_array ) {
- push @itemtype, $value;
- $itemtypes{$value} = $lib;
- }
-
- my $CGIitemtype = CGI::scrolling_list(
- -name => 'value',
- -values => \@itemtype,
- -labels => \%itemtypes,
- -size => 1,
- -multiple => 0
- );
- $sth->finish;
-
- my @branchloop;
- my @select_branch;
- my %select_branches;
- my $branches = GetBranches;
- push @select_branch, "";
- $select_branches{''} = "";
- foreach my $thisbranch ( keys %$branches ) {
- push @select_branch, $branches->{$thisbranch}->{'branchcode'};
- $select_branches{ $branches->{$thisbranch}->{'branchcode'} } =
- $branches->{$thisbranch}->{'branchname'};
- }
- my $CGIbranch = CGI::scrolling_list(
- -name => 'value',
- -values => \@select_branch,
- -labels => \%select_branches,
- -size => 1,
- -multiple => 0
- );
- $sth->finish;
-
- my $req =
- $dbh->prepare(
-"select distinctrow left(publishercode,45) from biblioitems order by publishercode"
- );
- $req->execute;
- my @select;
- push @select, "";
- while ( my ($value) = $req->fetchrow ) {
- push @select, $value;
- }
- my $CGIpublisher = CGI::scrolling_list(
- -name => 'value',
- -id => 'publisher',
- -values => \@select,
- -size => 1,
- -multiple => 0
- );
-
-# my $sth=$dbh->prepare("select description,itemtype from itemtypes order by description");
-# $sth->execute;
-# while (my ($description,$itemtype) = $sth->fetchrow) {
-# $classlist.="<option value=\"$itemtype\">$description</option>\n";
-# }
-# $sth->finish;
+ my @itemtypes = Koha::ItemTypes->search->as_list;
$template->param( #classlist => $classlist,
- CGIitemtype => $CGIitemtype,
- CGIbranch => $CGIbranch,
- CGIPublisher => $CGIpublisher,
- index => $query->param('index'),
+ itypeloop => \@itemtypes,
+ index => scalar $query->param('index'),
Search => 1,
);
}
output_html_with_http_headers $query, $cookie, $template->output;
}
-
-1;