|
Lines 27-33
use Carp;
Link Here
|
| 27 |
use MARC::Record; |
27 |
use MARC::Record; |
| 28 |
use MARC::File::USMARC; |
28 |
use MARC::File::USMARC; |
| 29 |
use MARC::File::XML; |
29 |
use MARC::File::XML; |
| 30 |
use ZOOM; |
|
|
| 31 |
use POSIX qw(strftime); |
30 |
use POSIX qw(strftime); |
| 32 |
|
31 |
|
| 33 |
use C4::Koha; |
32 |
use C4::Koha; |
|
Lines 35-43
use C4::Dates qw/format_date/;
Link Here
|
| 35 |
use C4::Log; # logaction |
34 |
use C4::Log; # logaction |
| 36 |
use C4::ClassSource; |
35 |
use C4::ClassSource; |
| 37 |
use C4::Charset; |
36 |
use C4::Charset; |
| 38 |
require C4::Heading; |
|
|
| 39 |
require C4::Serials; |
| 40 |
require C4::Items; |
| 41 |
|
37 |
|
| 42 |
use vars qw($VERSION @ISA @EXPORT); |
38 |
use vars qw($VERSION @ISA @EXPORT); |
| 43 |
|
39 |
|
|
Lines 126-132
BEGIN {
Link Here
|
| 126 |
&TransformHtmlToMarc2 |
122 |
&TransformHtmlToMarc2 |
| 127 |
&TransformHtmlToMarc |
123 |
&TransformHtmlToMarc |
| 128 |
&TransformHtmlToXml |
124 |
&TransformHtmlToXml |
| 129 |
&PrepareItemrecordDisplay |
|
|
| 130 |
&GetNoZebraIndexes |
125 |
&GetNoZebraIndexes |
| 131 |
); |
126 |
); |
| 132 |
} |
127 |
} |
|
Lines 412-420
sub DelBiblio {
Link Here
|
| 412 |
return $error if $error; |
407 |
return $error if $error; |
| 413 |
|
408 |
|
| 414 |
# We delete attached subscriptions |
409 |
# We delete attached subscriptions |
| 415 |
my $subscriptions = &C4::Serials::GetFullSubscriptionsFromBiblionumber($biblionumber); |
410 |
require C4::Serials; |
|
|
411 |
my $subscriptions = C4::Serials::GetFullSubscriptionsFromBiblionumber($biblionumber); |
| 416 |
foreach my $subscription (@$subscriptions) { |
412 |
foreach my $subscription (@$subscriptions) { |
| 417 |
&C4::Serials::DelSubscription( $subscription->{subscriptionid} ); |
413 |
C4::Serials::DelSubscription( $subscription->{subscriptionid} ); |
| 418 |
} |
414 |
} |
| 419 |
|
415 |
|
| 420 |
# Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio |
416 |
# Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio |
|
Lines 472-477
MARC record.
Link Here
|
| 472 |
=cut |
468 |
=cut |
| 473 |
|
469 |
|
| 474 |
sub LinkBibHeadingsToAuthorities { |
470 |
sub LinkBibHeadingsToAuthorities { |
|
|
471 |
require C4::Heading; |
| 475 |
my $bib = shift; |
472 |
my $bib = shift; |
| 476 |
|
473 |
|
| 477 |
my $num_headings_changed = 0; |
474 |
my $num_headings_changed = 0; |
|
Lines 2338-2570
sub TransformMarcToKohaOneField {
Link Here
|
| 2338 |
return $result; |
2335 |
return $result; |
| 2339 |
} |
2336 |
} |
| 2340 |
|
2337 |
|
| 2341 |
=head1 OTHER FUNCTIONS |
2338 |
|
| 2342 |
|
|
|
| 2343 |
|
| 2344 |
=head2 PrepareItemrecordDisplay |
| 2345 |
|
| 2346 |
PrepareItemrecordDisplay($itemrecord,$bibnum,$itemumber,$frameworkcode); |
| 2347 |
|
| 2348 |
Returns a hash with all the fields for Display a given item data in a template |
| 2349 |
|
| 2350 |
The $frameworkcode returns the item for the given frameworkcode, ONLY if bibnum is not provided |
| 2351 |
|
| 2352 |
=cut |
| 2353 |
|
| 2354 |
sub PrepareItemrecordDisplay { |
| 2355 |
|
| 2356 |
my ( $bibnum, $itemnum, $defaultvalues, $frameworkcode ) = @_; |
| 2357 |
|
| 2358 |
my $dbh = C4::Context->dbh; |
| 2359 |
$frameworkcode = &GetFrameworkCode($bibnum) if $bibnum; |
| 2360 |
my ( $itemtagfield, $itemtagsubfield ) = &GetMarcFromKohaField( "items.itemnumber", $frameworkcode ); |
| 2361 |
my $tagslib = &GetMarcStructure( 1, $frameworkcode ); |
| 2362 |
|
| 2363 |
# return nothing if we don't have found an existing framework. |
| 2364 |
return q{} unless $tagslib; |
| 2365 |
my $itemrecord; |
| 2366 |
if ($itemnum) { |
| 2367 |
$itemrecord = C4::Items::GetMarcItem( $bibnum, $itemnum ); |
| 2368 |
} |
| 2369 |
my @loop_data; |
| 2370 |
my $authorised_values_sth = $dbh->prepare( "SELECT authorised_value,lib FROM authorised_values WHERE category=? ORDER BY lib" ); |
| 2371 |
foreach my $tag ( sort keys %{$tagslib} ) { |
| 2372 |
my $previous_tag = ''; |
| 2373 |
if ( $tag ne '' ) { |
| 2374 |
|
| 2375 |
# loop through each subfield |
| 2376 |
my $cntsubf; |
| 2377 |
foreach my $subfield ( sort keys %{ $tagslib->{$tag} } ) { |
| 2378 |
next if ( subfield_is_koha_internal_p($subfield) ); |
| 2379 |
next if ( $tagslib->{$tag}->{$subfield}->{'tab'} ne "10" ); |
| 2380 |
my %subfield_data; |
| 2381 |
$subfield_data{tag} = $tag; |
| 2382 |
$subfield_data{subfield} = $subfield; |
| 2383 |
$subfield_data{countsubfield} = $cntsubf++; |
| 2384 |
$subfield_data{kohafield} = $tagslib->{$tag}->{$subfield}->{'kohafield'}; |
| 2385 |
|
| 2386 |
# $subfield_data{marc_lib}=$tagslib->{$tag}->{$subfield}->{lib}; |
| 2387 |
$subfield_data{marc_lib} = $tagslib->{$tag}->{$subfield}->{lib}; |
| 2388 |
$subfield_data{mandatory} = $tagslib->{$tag}->{$subfield}->{mandatory}; |
| 2389 |
$subfield_data{repeatable} = $tagslib->{$tag}->{$subfield}->{repeatable}; |
| 2390 |
$subfield_data{hidden} = "display:none" |
| 2391 |
if $tagslib->{$tag}->{$subfield}->{hidden}; |
| 2392 |
my ( $x, $defaultvalue ); |
| 2393 |
if ($itemrecord) { |
| 2394 |
( $x, $defaultvalue ) = _find_value( $tag, $subfield, $itemrecord ); |
| 2395 |
} |
| 2396 |
$defaultvalue = $tagslib->{$tag}->{$subfield}->{defaultvalue} unless $defaultvalue; |
| 2397 |
if ( !defined $defaultvalue ) { |
| 2398 |
$defaultvalue = q||; |
| 2399 |
} |
| 2400 |
$defaultvalue =~ s/"/"/g; |
| 2401 |
|
| 2402 |
# search for itemcallnumber if applicable |
| 2403 |
if ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.itemcallnumber' |
| 2404 |
&& C4::Context->preference('itemcallnumber') ) { |
| 2405 |
my $CNtag = substr( C4::Context->preference('itemcallnumber'), 0, 3 ); |
| 2406 |
my $CNsubfield = substr( C4::Context->preference('itemcallnumber'), 3, 1 ); |
| 2407 |
if ($itemrecord) { |
| 2408 |
my $temp = $itemrecord->field($CNtag); |
| 2409 |
if ($temp) { |
| 2410 |
$defaultvalue = $temp->subfield($CNsubfield); |
| 2411 |
} |
| 2412 |
} |
| 2413 |
} |
| 2414 |
if ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.itemcallnumber' |
| 2415 |
&& $defaultvalues |
| 2416 |
&& $defaultvalues->{'callnumber'} ) { |
| 2417 |
my $temp; |
| 2418 |
if ($itemrecord) { |
| 2419 |
$temp = $itemrecord->field($subfield); |
| 2420 |
} |
| 2421 |
unless ($temp) { |
| 2422 |
$defaultvalue = $defaultvalues->{'callnumber'} if $defaultvalues; |
| 2423 |
} |
| 2424 |
} |
| 2425 |
if ( ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.holdingbranch' || $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.homebranch' ) |
| 2426 |
&& $defaultvalues |
| 2427 |
&& $defaultvalues->{'branchcode'} ) { |
| 2428 |
my $temp; |
| 2429 |
if ($itemrecord) { |
| 2430 |
$temp = $itemrecord->field($subfield); |
| 2431 |
} |
| 2432 |
unless ($temp) { |
| 2433 |
$defaultvalue = $defaultvalues->{branchcode} if $defaultvalues; |
| 2434 |
} |
| 2435 |
} |
| 2436 |
if ( ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.location' ) |
| 2437 |
&& $defaultvalues |
| 2438 |
&& $defaultvalues->{'location'} ) { |
| 2439 |
my $temp = $itemrecord->field($subfield) if ($itemrecord); |
| 2440 |
unless ($temp) { |
| 2441 |
$defaultvalue = $defaultvalues->{location} if $defaultvalues; |
| 2442 |
} |
| 2443 |
} |
| 2444 |
if ( $tagslib->{$tag}->{$subfield}->{authorised_value} ) { |
| 2445 |
my @authorised_values; |
| 2446 |
my %authorised_lib; |
| 2447 |
|
| 2448 |
# builds list, depending on authorised value... |
| 2449 |
#---- branch |
| 2450 |
if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) { |
| 2451 |
if ( ( C4::Context->preference("IndependantBranches") ) |
| 2452 |
&& ( C4::Context->userenv->{flags} % 2 != 1 ) ) { |
| 2453 |
my $sth = $dbh->prepare( "SELECT branchcode,branchname FROM branches WHERE branchcode = ? ORDER BY branchname" ); |
| 2454 |
$sth->execute( C4::Context->userenv->{branch} ); |
| 2455 |
push @authorised_values, "" |
| 2456 |
unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); |
| 2457 |
while ( my ( $branchcode, $branchname ) = $sth->fetchrow_array ) { |
| 2458 |
push @authorised_values, $branchcode; |
| 2459 |
$authorised_lib{$branchcode} = $branchname; |
| 2460 |
} |
| 2461 |
} else { |
| 2462 |
my $sth = $dbh->prepare( "SELECT branchcode,branchname FROM branches ORDER BY branchname" ); |
| 2463 |
$sth->execute; |
| 2464 |
push @authorised_values, "" |
| 2465 |
unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); |
| 2466 |
while ( my ( $branchcode, $branchname ) = $sth->fetchrow_array ) { |
| 2467 |
push @authorised_values, $branchcode; |
| 2468 |
$authorised_lib{$branchcode} = $branchname; |
| 2469 |
} |
| 2470 |
} |
| 2471 |
|
| 2472 |
#----- itemtypes |
| 2473 |
} elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) { |
| 2474 |
my $sth = $dbh->prepare( "SELECT itemtype,description FROM itemtypes ORDER BY description" ); |
| 2475 |
$sth->execute; |
| 2476 |
push @authorised_values, "" |
| 2477 |
unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); |
| 2478 |
while ( my ( $itemtype, $description ) = $sth->fetchrow_array ) { |
| 2479 |
push @authorised_values, $itemtype; |
| 2480 |
$authorised_lib{$itemtype} = $description; |
| 2481 |
} |
| 2482 |
#---- class_sources |
| 2483 |
} elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) { |
| 2484 |
push @authorised_values, "" unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); |
| 2485 |
|
| 2486 |
my $class_sources = GetClassSources(); |
| 2487 |
my $default_source = C4::Context->preference("DefaultClassificationSource"); |
| 2488 |
|
| 2489 |
foreach my $class_source (sort keys %$class_sources) { |
| 2490 |
next unless $class_sources->{$class_source}->{'used'} or |
| 2491 |
($class_source eq $default_source); |
| 2492 |
push @authorised_values, $class_source; |
| 2493 |
$authorised_lib{$class_source} = $class_sources->{$class_source}->{'description'}; |
| 2494 |
} |
| 2495 |
|
| 2496 |
#---- "true" authorised value |
| 2497 |
} else { |
| 2498 |
$authorised_values_sth->execute( $tagslib->{$tag}->{$subfield}->{authorised_value} ); |
| 2499 |
push @authorised_values, "" |
| 2500 |
unless ( $tagslib->{$tag}->{$subfield}->{mandatory} ); |
| 2501 |
while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) { |
| 2502 |
push @authorised_values, $value; |
| 2503 |
$authorised_lib{$value} = $lib; |
| 2504 |
} |
| 2505 |
} |
| 2506 |
$subfield_data{marc_value} = CGI::scrolling_list( |
| 2507 |
-name => 'field_value', |
| 2508 |
-values => \@authorised_values, |
| 2509 |
-default => "$defaultvalue", |
| 2510 |
-labels => \%authorised_lib, |
| 2511 |
-size => 1, |
| 2512 |
-tabindex => '', |
| 2513 |
-multiple => 0, |
| 2514 |
); |
| 2515 |
} elsif ( $tagslib->{$tag}->{$subfield}->{value_builder} ) { |
| 2516 |
# opening plugin |
| 2517 |
my $plugin = C4::Context->intranetdir . "/cataloguing/value_builder/" . $tagslib->{$tag}->{$subfield}->{'value_builder'}; |
| 2518 |
if (do $plugin) { |
| 2519 |
my $temp; |
| 2520 |
my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, undef ); |
| 2521 |
my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, undef ); |
| 2522 |
$subfield_data{random} = int(rand(1000000)); # why do we need 2 different randoms? |
| 2523 |
my $index_subfield = int(rand(1000000)); |
| 2524 |
$subfield_data{id} = "tag_".$tag."_subfield_".$subfield."_".$index_subfield; |
| 2525 |
$subfield_data{marc_value} = qq[<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" |
| 2526 |
onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');" |
| 2527 |
onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" /> |
| 2528 |
<a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a> |
| 2529 |
$javascript]; |
| 2530 |
} else { |
| 2531 |
warn "Plugin Failed: $plugin"; |
| 2532 |
$subfield_data{marc_value} = qq(<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" />); # supply default input form |
| 2533 |
} |
| 2534 |
} |
| 2535 |
elsif ( $tag eq '' ) { # it's an hidden field |
| 2536 |
$subfield_data{marc_value} = qq(<input type="hidden" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" value="$defaultvalue" />); |
| 2537 |
} |
| 2538 |
elsif ( $tagslib->{$tag}->{$subfield}->{'hidden'} ) { # FIXME: shouldn't input type be "hidden" ? |
| 2539 |
$subfield_data{marc_value} = qq(<input type="text" tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" value="$defaultvalue" />); |
| 2540 |
} |
| 2541 |
elsif ( length($defaultvalue) > 100 |
| 2542 |
or (C4::Context->preference("marcflavour") eq "UNIMARC" and |
| 2543 |
300 <= $tag && $tag < 400 && $subfield eq 'a' ) |
| 2544 |
or (C4::Context->preference("marcflavour") eq "MARC21" and |
| 2545 |
500 <= $tag && $tag < 600 ) |
| 2546 |
) { |
| 2547 |
# oversize field (textarea) |
| 2548 |
$subfield_data{marc_value} = qq(<textarea tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255">$defaultvalue</textarea>\n"); |
| 2549 |
} else { |
| 2550 |
$subfield_data{marc_value} = "<input type=\"text\" name=\"field_value\" value=\"$defaultvalue\" size=\"50\" maxlength=\"255\" />"; |
| 2551 |
} |
| 2552 |
push( @loop_data, \%subfield_data ); |
| 2553 |
} |
| 2554 |
} |
| 2555 |
} |
| 2556 |
my $itemnumber; |
| 2557 |
if ( $itemrecord && $itemrecord->field($itemtagfield) ) { |
| 2558 |
$itemnumber = $itemrecord->subfield( $itemtagfield, $itemtagsubfield ); |
| 2559 |
} |
| 2560 |
return { |
| 2561 |
'itemtagfield' => $itemtagfield, |
| 2562 |
'itemtagsubfield' => $itemtagsubfield, |
| 2563 |
'itemnumber' => $itemnumber, |
| 2564 |
'iteminformation' => \@loop_data |
| 2565 |
}; |
| 2566 |
} |
| 2567 |
|
| 2568 |
#" |
2339 |
#" |
| 2569 |
|
2340 |
|
| 2570 |
# |
2341 |
# |
|
Lines 2727-2732
sub EmbedItemsInMarcBiblio {
Link Here
|
| 2727 |
my @item_fields; |
2498 |
my @item_fields; |
| 2728 |
my ( $itemtag, $itemsubfield ) = GetMarcFromKohaField( "items.itemnumber", $frameworkcode ); |
2499 |
my ( $itemtag, $itemsubfield ) = GetMarcFromKohaField( "items.itemnumber", $frameworkcode ); |
| 2729 |
while (my ($itemnumber) = $sth->fetchrow_array) { |
2500 |
while (my ($itemnumber) = $sth->fetchrow_array) { |
|
|
2501 |
require C4::Items; |
| 2730 |
my $item_marc = C4::Items::GetMarcItem($biblionumber, $itemnumber); |
2502 |
my $item_marc = C4::Items::GetMarcItem($biblionumber, $itemnumber); |
| 2731 |
push @item_fields, $item_marc->field($itemtag); |
2503 |
push @item_fields, $item_marc->field($itemtag); |
| 2732 |
} |
2504 |
} |
|
Lines 3513-3624
sub ModBiblioMarc {
Link Here
|
| 3513 |
return $biblionumber; |
3285 |
return $biblionumber; |
| 3514 |
} |
3286 |
} |
| 3515 |
|
3287 |
|
| 3516 |
=head2 z3950_extended_services |
|
|
| 3517 |
|
| 3518 |
z3950_extended_services($serviceType,$serviceOptions,$record); |
| 3519 |
|
| 3520 |
z3950_extended_services is used to handle all interactions with Zebra's extended serices package, which is employed to perform all management of the MARC data stored in Zebra. |
| 3521 |
|
| 3522 |
C<$serviceType> one of: itemorder,create,drop,commit,update,xmlupdate |
| 3523 |
|
| 3524 |
C<$serviceOptions> a has of key/value pairs. For instance, if service_type is 'update', $service_options should contain: |
| 3525 |
|
| 3526 |
action => update action, one of specialUpdate, recordInsert, recordReplace, recordDelete, elementUpdate. |
| 3527 |
|
| 3528 |
and maybe |
| 3529 |
|
| 3530 |
recordidOpaque => Opaque Record ID (user supplied) or recordidNumber => Record ID number (system number). |
| 3531 |
syntax => the record syntax (transfer syntax) |
| 3532 |
databaseName = Database from connection object |
| 3533 |
|
| 3534 |
To set serviceOptions, call set_service_options($serviceType) |
| 3535 |
|
| 3536 |
C<$record> the record, if one is needed for the service type |
| 3537 |
|
| 3538 |
A record should be in XML. You can convert it to XML from MARC by running it through marc2xml(). |
| 3539 |
|
| 3540 |
=cut |
| 3541 |
|
| 3542 |
sub z3950_extended_services { |
| 3543 |
my ( $server, $serviceType, $action, $serviceOptions ) = @_; |
| 3544 |
|
| 3545 |
# get our connection object |
| 3546 |
my $Zconn = C4::Context->Zconn( $server, 0, 1 ); |
| 3547 |
|
| 3548 |
# create a new package object |
| 3549 |
my $Zpackage = $Zconn->package(); |
| 3550 |
|
| 3551 |
# set our options |
| 3552 |
$Zpackage->option( action => $action ); |
| 3553 |
|
| 3554 |
if ( $serviceOptions->{'databaseName'} ) { |
| 3555 |
$Zpackage->option( databaseName => $serviceOptions->{'databaseName'} ); |
| 3556 |
} |
| 3557 |
if ( $serviceOptions->{'recordIdNumber'} ) { |
| 3558 |
$Zpackage->option( recordIdNumber => $serviceOptions->{'recordIdNumber'} ); |
| 3559 |
} |
| 3560 |
if ( $serviceOptions->{'recordIdOpaque'} ) { |
| 3561 |
$Zpackage->option( recordIdOpaque => $serviceOptions->{'recordIdOpaque'} ); |
| 3562 |
} |
| 3563 |
|
| 3564 |
# this is an ILL request (Zebra doesn't support it, but Koha could eventually) |
| 3565 |
#if ($serviceType eq 'itemorder') { |
| 3566 |
# $Zpackage->option('contact-name' => $serviceOptions->{'contact-name'}); |
| 3567 |
# $Zpackage->option('contact-phone' => $serviceOptions->{'contact-phone'}); |
| 3568 |
# $Zpackage->option('contact-email' => $serviceOptions->{'contact-email'}); |
| 3569 |
# $Zpackage->option('itemorder-item' => $serviceOptions->{'itemorder-item'}); |
| 3570 |
#} |
| 3571 |
|
| 3572 |
if ( $serviceOptions->{record} ) { |
| 3573 |
$Zpackage->option( record => $serviceOptions->{record} ); |
| 3574 |
|
| 3575 |
# can be xml or marc |
| 3576 |
if ( $serviceOptions->{'syntax'} ) { |
| 3577 |
$Zpackage->option( syntax => $serviceOptions->{'syntax'} ); |
| 3578 |
} |
| 3579 |
} |
| 3580 |
|
| 3581 |
# send the request, handle any exception encountered |
| 3582 |
eval { $Zpackage->send($serviceType) }; |
| 3583 |
if ( $@ && $@->isa("ZOOM::Exception") ) { |
| 3584 |
return "error: " . $@->code() . " " . $@->message() . "\n"; |
| 3585 |
} |
| 3586 |
|
| 3587 |
# free up package resources |
| 3588 |
$Zpackage->destroy(); |
| 3589 |
} |
| 3590 |
|
| 3591 |
=head2 set_service_options |
| 3592 |
|
| 3593 |
my $serviceOptions = set_service_options($serviceType); |
| 3594 |
|
| 3595 |
C<$serviceType> itemorder,create,drop,commit,update,xmlupdate |
| 3596 |
|
| 3597 |
Currently, we only support 'create', 'commit', and 'update'. 'drop' support will be added as soon as Zebra supports it. |
| 3598 |
|
| 3599 |
=cut |
| 3600 |
|
| 3601 |
sub set_service_options { |
| 3602 |
my ($serviceType) = @_; |
| 3603 |
my $serviceOptions; |
| 3604 |
|
| 3605 |
# FIXME: This needs to be an OID ... if we ever need 'syntax' this sub will need to change |
| 3606 |
# $serviceOptions->{ 'syntax' } = ''; #zebra doesn't support syntaxes other than xml |
| 3607 |
|
| 3608 |
if ( $serviceType eq 'commit' ) { |
| 3609 |
|
| 3610 |
# nothing to do |
| 3611 |
} |
| 3612 |
if ( $serviceType eq 'create' ) { |
| 3613 |
|
| 3614 |
# nothing to do |
| 3615 |
} |
| 3616 |
if ( $serviceType eq 'drop' ) { |
| 3617 |
die "ERROR: 'drop' not currently supported (by Zebra)"; |
| 3618 |
} |
| 3619 |
return $serviceOptions; |
| 3620 |
} |
| 3621 |
|
| 3622 |
=head2 get_biblio_authorised_values |
3288 |
=head2 get_biblio_authorised_values |
| 3623 |
|
3289 |
|
| 3624 |
find the types and values for all authorised values assigned to this biblio. |
3290 |
find the types and values for all authorised values assigned to this biblio. |