[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Koha-devel] CVS: koha/C4 Catalogue.pm,NONE,1.1
From: |
Steve Tonnesen |
Subject: |
[Koha-devel] CVS: koha/C4 Catalogue.pm,NONE,1.1 |
Date: |
Mon, 25 Jun 2001 11:49:37 -0700 |
Update of /cvsroot/koha/koha/C4
In directory usw-pr-cvs1:/tmp/cvs-serv31072
Added Files:
Catalogue.pm
Log Message:
Cataloguing API. Very early draft at this point.
--- NEW FILE ---
package C4::Catalogue; #asummes C4/Acquisitions.pm
use strict;
require Exporter;
use C4::Database;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# set the version for version checking
$VERSION = 0.01;
@ISA = qw(Exporter);
@EXPORT = qw(&newBiblio &newBiblioItem &newItem);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
# as well as any optionally exported functions
@EXPORT_OK = qw($Var1 %Hashit);
# non-exported package globals go here
use vars qw(@more $stuff);
# initalize package globals, first exported ones
my $Var1 = '';
my %Hashit = ();
# then the others (which are still accessible as $Some::Module::stuff)
my $stuff = '';
my @more = ();
# all file-scoped lexicals must be created before
# the functions below that use them.
# file-private lexicals go here
my $priv_var = '';
my %secret_hash = ();
# here's a file-private function as a closure,
# callable as &$priv_func; it cannot be prototyped.
my $priv_func = sub {
# stuff goes here.
};
# make all your functions, whether exported or not;
sub newBiblio {
my ($env, $biblio) = @_;
my $title=$biblio->{'title'};
my $author=$biblio->{'author'};
my $subtitle=$biblio->{'subtitle'};
my $title=$biblio->{'title'};
my $copyrightdate=$biblio->{'copyrightdate'};
my $serial=$biblio->{'serial'};
my $seriestitle=$biblio->{'seriestitle'};
my $unititle=$biblio->{'unititle'};
my $notes=$biblio->{'notes'};
}
sub addTag {
my ($env, $Record_ID, $tag, $Indicator1, $Indicator2, $subfields) = @_;
my $dbh=&C4Connect;
($Indicator1) || ($Indicator1=' ');
($Indicator2) || ($Indicator2=' ');
my $firstdigit=substr($tag,0,1);
my $Subfield_ID;
foreach (sort keys %$subfields) {
my $Subfield_Mark=$subfields->{$_}->{'Subfield_Mark'};
my $Subfield_Value=$subfields->{$_}->{'Subfield_Value'};
my $q_Subfield_Value=$dbh->quote($Subfield_Value);
if ($Subfield_ID) {
my $sth=$dbh->prepare("insert into $firstdigit\XX_Subfield_Table
(Subfield_ID, Subfield_Mark, Subfield_Value) values ($Subfield_ID,
'$Subfield_Mark', $q_Subfield_Value)");
$sth->execute;
} else {
my $sth=$dbh->prepare("insert into $firstdigit\XX_Subfield_Table
(Subfield_Mark, Subfield_Value) values ('$Subfield_Mark', $q_Subfield_Value)");
$sth->execute;
my $Subfield_Key=$dbh->{'mysql_insertid'};
$Subfield_ID=$Subfield_Key;
$sth=$dbh->prepare("update $firstdigit\XX_Subfield_Table set
Subfield_ID=$Subfield_ID where Subfield_Key=$Subfield_Key");
$sth->execute;
}
}
if (my $linkid=$env->{'linkid'}) {
$env->{'linkage'}=0;
my $sth=$dbh->prepare("insert into $firstdigit\XX_Subfield_Table
(Subfield_ID, Subfield_Mark, Subfield_Value) values ($Subfield_ID, '8',
'$linkid')");
$sth->execute;
}
my $sth=$dbh->prepare("insert into $firstdigit\XX_Tag_Table (Indicator1,
Indicator2, Tag, Subfield_ID) values ('$Indicator1', '$Indicator2', '$tag',
$Subfield_ID)");
$sth->execute;
my $Tag_Key=$dbh->{'mysql_insertid'};
my $Tag_ID=$Tag_Key;
$sth=$dbh->prepare("update $firstdigit\XX_Tag_Table set Tag_ID=$Tag_ID
where Tag_Key=$Tag_Key");
$sth->execute;
$sth=$dbh->prepare("insert into Bib_Table (Record_ID,
Tag_$firstdigit\XX_ID) values ($Record_ID, $Tag_ID)");
$sth->execute;
if ($env->{'linkage'}) {
my $sth=$dbh->prepare("insert into $firstdigit\XX_Subfield_Table
(Subfield_ID, Subfield_Mark, Subfield_Value) values ($Subfield_ID, '8',
'$Tag_ID')");
$sth->execute;
}
$sth->finish;
$dbh->disconnect;
return ($env, $Tag_ID);
}
sub newBiblioItem {
my ($env, $biblioitem) = @_;
my $dbh=&C4Connect;
my $biblionumber=$biblioitem->{'biblionumber'};
my $volume=$biblioitem->{'volume'};
my $number=$biblioitem->{'number'};
my $classification=$biblioitem->{'classification'};
my $itemtype=$biblioitem->{'itemtype'};
my $isbn=$biblioitem->{'isbn'};
my $issn=$biblioitem->{'issn'};
my $dewey=$biblioitem->{'dewey'};
$dewey=~s/\.*0*$//;
($dewey == 0) && ($dewey='');
my $subclass=$biblioitem->{'subclass'};
my $publicationyear=$biblioitem->{'publicationyear'};
my $publishercode=$biblioitem->{'publishercode'};
my $volumedate=$biblioitem->{'volumedate'};
my $illus=$biblioitem->{'illus'};
my $pages=$biblioitem->{'pages'};
my $notes=$biblioitem->{'notes'};
my $size=$biblioitem->{'size'};
my $place=$biblioitem->{'place'};
my $lccn=$biblioitem->{'lccn'};
# Should we check if there is already a biblioitem/marc with the
# same isbn/lccn/issn?
my $sth=$dbh->prepare("select
title,unititle,seriestitle,copyrightdate,notes,author from biblio where
biblionumber=$biblionumber");
$sth->execute;
my ($title, $unititle,$seriestitle,$copyrightdate,$biblionotes,$author) =
$sth->fetchrow;
$sth=$dbh->prepare("select subtitle from bibliosubtitle where
biblionumber=$biblionumber");
$sth->execute;
my ($subtitle) = $sth->fetchrow;
$sth=$dbh->prepare("select author from additionalauthors where
biblionumber=$biblionumber");
$sth->execute;
my @additionalauthors;
while (my ($additionalauthor) = $sth->fetchrow) {
push (@additionalauthors, $additionalauthor);
}
$sth=$dbh->prepare("select subject from bibliosubject where
biblionumber=$biblionumber");
$sth->execute;
my @subjects;
while (my ($subject) = $sth->fetchrow) {
push (@subjects, $subject);
}
# MARC SECTION
$sth=$dbh->prepare("insert into Resource_Table (Record_ID) values (0)");
$sth->execute;
my $Resource_ID=$dbh->{'mysql_insertid'};
my $Record_ID=$Resource_ID;
$sth=$dbh->prepare("update Resource_Table set Record_ID=$Record_ID where
Resource_ID=$Resource_ID");
$sth->execute;
# Title
{
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$title;
if ($subtitle) {
$subfields->{2}->{'Subfield_Mark'}='b';
$subfields->{2}->{'Subfield_Value'}=$subtitle;
}
my $tag='245';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# author
{
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$author;
my $tag='100';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Series Title
if ($seriestitle) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$seriestitle;
my $tag='440';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Biblio Note
if ($biblionotes) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$biblionotes;
$subfields->{2}->{'Subfield_Mark'}='3';
$subfields->{2}->{'Subfield_Value'}='biblio';
my $tag='440';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Additional Authors
foreach (@additionalauthors) {
my $author=$_;
(next) unless ($author);
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$author;
$subfields->{2}->{'Subfield_Mark'}='e';
$subfields->{2}->{'Subfield_Value'}='author';
my $tag='700';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Illustrator
if ($illus) {
(next) unless ($illus);
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$illus;
$subfields->{2}->{'Subfield_Mark'}='e';
$subfields->{2}->{'Subfield_Value'}='illustrator';
my $tag='700';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Subjects
foreach (@subjects) {
my $subject=$_;
(next) unless ($subject);
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$subject;
my $tag='650';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# ISBN
if ($isbn) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$isbn;
my $tag='020';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# LCCN
if ($lccn) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$lccn;
my $tag='010';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# ISSN
if ($issn) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$issn;
my $tag='022';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# DEWEY
if ($dewey) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$dewey;
my $tag='082';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# DEWEY subclass and itemtype
{
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$itemtype;
$subfields->{2}->{'Subfield_Mark'}='b';
$subfields->{2}->{'Subfield_Value'}=$subclass;
my $tag='090';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# PUBLISHER
{
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$place;
$subfields->{2}->{'Subfield_Mark'}='b';
$subfields->{2}->{'Subfield_Value'}=$publishercode;
$subfields->{3}->{'Subfield_Mark'}='c';
$subfields->{3}->{'Subfield_Value'}=$publicationyear;
if ($copyrightdate) {
$subfields->{4}->{'Subfield_Mark'}='c';
$subfields->{4}->{'Subfield_Value'}="c$copyrightdate";
}
my $tag='260';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# PHYSICAL
if ($pages || $size) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$pages;
$subfields->{2}->{'Subfield_Mark'}='c';
$subfields->{2}->{'Subfield_Value'}=$size;
my $tag='300';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Volume/Number
if ($volume || $number) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='v';
$subfields->{1}->{'Subfield_Value'}=$volume;
$subfields->{2}->{'Subfield_Mark'}='n';
$subfields->{2}->{'Subfield_Value'}=$number;
my $tag='440';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
# Biblioitem Note
if ($notes) {
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='a';
$subfields->{1}->{'Subfield_Value'}=$notes;
$subfields->{2}->{'Subfield_Mark'}='3';
$subfields->{2}->{'Subfield_Value'}='biblioitem';
my $tag='500';
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
}
$sth->finish;
$dbh->disconnect;
return ($env, $Record_ID);
}
sub newItem {
my ($env, $Record_ID, $item) = @_;
my $barcode=$item->{'barcode'};
my $dateaccessioned=$item->{'dateaccessioned'};
my $booksellerid=$item->{'booksellerid'};
my $homebranch=$item->{'homebranch'};
my $holdingbranch=$item->{'holdingbranch'};
my $price=$item->{'price'};
my $replacementprice=$item->{'replacementprice'};
my $replacementpricedate=$item->{'replacementpricedate'};
my $notforloan=$item->{'notforloan'};
my $itemlost=$item->{'itemlost'};
my $wthdrawn=$item->{'wthdrawn'};
my $restricted=$item->{'restricted'};
my $itemnotes=$item->{'itemnotes'};
my $itemtype=$item->{'itemtype'};
my $subclass=$item->{'subclass'};
my $subfields;
$subfields->{1}->{'Subfield_Mark'}='p';
$subfields->{1}->{'Subfield_Value'}=$barcode;
$subfields->{2}->{'Subfield_Mark'}='d';
$subfields->{2}->{'Subfield_Value'}=$dateaccessioned;
$subfields->{3}->{'Subfield_Mark'}='e';
$subfields->{3}->{'Subfield_Value'}=$booksellerid;
$subfields->{4}->{'Subfield_Mark'}='b';
$subfields->{4}->{'Subfield_Value'}=$homebranch;
$subfields->{5}->{'Subfield_Mark'}='l';
$subfields->{5}->{'Subfield_Value'}=$holdingbranch;
$subfields->{6}->{'Subfield_Mark'}='c';
$subfields->{6}->{'Subfield_Value'}=$price;
$subfields->{7}->{'Subfield_Mark'}='c';
$subfields->{7}->{'Subfield_Value'}=$replacementprice;
$subfields->{8}->{'Subfield_Mark'}='d';
$subfields->{8}->{'Subfield_Value'}=$replacementpricedate;
if ($notforloan) {
$subfields->{9}->{'Subfield_Mark'}='h';
$subfields->{9}->{'Subfield_Value'}='Not for loan';
}
if ($notforloan) {
$subfields->{10}->{'Subfield_Mark'}='j';
$subfields->{10}->{'Subfield_Value'}='Item lost';
}
if ($notforloan) {
$subfields->{11}->{'Subfield_Mark'}='j';
$subfields->{11}->{'Subfield_Value'}='Item withdrawn';
}
if ($notforloan) {
$subfields->{12}->{'Subfield_Mark'}='z';
$subfields->{12}->{'Subfield_Value'}=$itemnotes;
}
my $tag='876';
my $Tag_ID;
$env->{'linkage'}=1;
($env, $Tag_ID) = addTag($env, $Record_ID, $tag, ' ', ' ', $subfields);
$env->{'linkage'}=0;
$env->{'linkid'}=$Tag_ID;
$tag='852';
my $subfields2;
$subfields2->{1}->{'Subfield_Mark'}='a';
$subfields2->{1}->{'Subfield_Value'}='Coast Mountains School District';
$subfields2->{1}->{'Subfield_Mark'}='b';
$subfields2->{1}->{'Subfield_Value'}=$homebranch;
$subfields2->{1}->{'Subfield_Mark'}='c';
$subfields2->{1}->{'Subfield_Value'}=$itemtype;
$subfields2->{2}->{'Subfield_Mark'}='m';
$subfields2->{2}->{'Subfield_Value'}=$subclass;
addTag($env, $Record_ID, $tag, ' ', ' ', $subfields2);
$env->{'linkid'}='';
}
END { } # module clean-up code here (global destructor)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Koha-devel] CVS: koha/C4 Catalogue.pm,NONE,1.1,
Steve Tonnesen <=