Koha-devel
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 6 participants
- 10628 discussions
I'll be posting the meeting log (if you want a look at it) after I get some
sleep, unless someone has an objection.
Nick
1
0
Hi,
Firstly appologies for not getting back to you on this earlier in the week, and
for likely missing most of the meeting today.
My biggest question would be "what are the problems we're trying to solve"
If we can write those down in a coherant fashion then we can see if a board
will solve them.
I went and had a look at the Apache and Gnome committee/board sites
(after I asked who else worked like this), and found the following things
interesting.
1/. One of the prime reasons (given) for setting up a foundation (and they
implied board but that my not be the case) was so that other organisations
could contribute finacially to a central fund, that would then pay programmers.
2/. They only let people who have contributed be members and elect and be
on the board. Which is a bit different to what you're suggestiong.
3/. They weren't big on having people who were "just" users on the board etc.
> We're proposing an oversight board (steering committee) for koha. The
> board would be elected by the body of koha developers, users, and
> related people. (We want to include people into the general body
> rather than excluding them, but probably need to think about
> controlling membership somehow.)
> The board should be responsible for activities such as:
> * choosing functionality targets for upcoming releases
> * making policy decisions regarding koha
> * organizing a koha presence at trade shows and the like
> * acting as a liason with outside groups and foundations (GNOME,
> KDE, Apache, ALA, etc.) where needed
> * creating guidelines for granting developer access to the koha cvs
> tree
If we need to fund some of these activities (I don't know if we do or not) then
we may need to set up Koha as a charity.
> The board should meet weekly or bi-weekly (via irc?) and post minutes of
> their meetings to the koha (and koha-devel?) mailing lists and to the koha
> wiki.
>
> To reduce potentially improper concentrations of power, only 2
> representatives from any organization should be allowed to serve on
> the board at a time (e.g., a company providing development or support
> for koha, or a library using koha).
>
> For now, the board should be something like this:
> 4 developer seats
> 4 librarian seats
> These 8 positions should serve 2 year terms, and half of them
> should be up for re-election any given year. (In the first
> election, half of the developer and half of the librarian seats
> should be elected for a 1 year term.)
> 3 at-large seats
> The three at-large seats should either serve 1 year terms or
> staggered 3 year terms.
I think thats too many people. Particularly meeting via IRC that's a lot of
people to meet. I'd rather see a smaller committee, but have meetings open
to observers or something similar.
> The board members should elect a chair person from within their
> number, Chairs chould serve a one year term.
cheers
Rachel
_____________________________________________________________
Rachel Hamilton-Williams Katipo Communications
WEBMISTRESS ph 021 389 128 or +64 04 934 1285
mailto:rachel@katipo.co.nz PO Box 12487, Wellington
http://www.katipo.co.nz New Zealand
Koha Open Source Library System
http://www.koha.org
1
0
After a brief poll on the irc channel, we've come up with a tentative
start time of 2PM Katipo Time (GMT+12). This seems to incovenience the
majority of the people the least (sorry Sergey and Paul). We can either
run with Nick's full blown agenda, or the shorter one I proposed and just
plan on more meetings to hit all the items.
Rachel, you seem to be the logical chair for the meeting, what do you
think? Anyone else?
-pate
2
1
Update of /cvsroot/koha/koha
In directory usw-pr-cvs1:/tmp/cvs-serv5541/koha
Modified Files:
Tag: rel-1-2
installer.pl
Log Message:
Added testing for Perl and dependancies
Index: installer.pl
===================================================================
RCS file: /cvsroot/koha/koha/installer.pl,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -C2 -r1.2.2.1 -r1.2.2.2
*** installer.pl 26 Apr 2002 14:47:17 -0000 1.2.2.1
--- installer.pl 9 May 2002 09:26:47 -0000 1.2.2.2
***************
*** 10,15 ****
-
-
This installer will prompt you with a series of questions.
It assumes you (or your system administrator) has installed:
--- 10,13 ----
***************
*** 57,62 ****
system("tar -x $answer"); #unpack fill out
! #test for Perl and Apache?
print "Are you using MySql?(Y/[N]): ";
$answer = $_;
--- 55,93 ----
system("tar -x $answer"); #unpack fill out
+ #
+ # Test for Perl - Do we need to explicity check versions?
+ #
+ print "\nChecking perl modules ...\n";
+ unless (eval "require 5.004") {
+ die "Sorry, you need at least Perl 5.004\n";
+ }
+
+
+ #
+ # Test for Perl Dependancies
+ #
+ my @missing = ();
+ unless (eval require DBI) { push @missing,"DBI" };
+ unless (eval require Date::Manip) { push @missing,"Datr::Manip" }
+ unless (eval require DBD::mysql) { push @missing,"DBD::mysql" }
+ unless (eval require Set::Scalar) { push @missing,"Set::Scalar" }
+
+ #
+ # Print out a list of any missing modules
+ #
+
+ if (@missing > 0) {
+ print "\n\n";
+ print "You are missing some Perl modules which are required by Koha.\n";
+ print "They can be installed by running (as root) the following:\n";
+ foreach my $module (@missing) {
+ print " perl -MCPAN -e 'install \"$module\"'\n";
+ }
+ print "\n";
+ exit;
+ }
+
! #test for MySQL?
print "Are you using MySql?(Y/[N]): ";
$answer = $_;
1
0
CVS: koha detail.pl,1.4,1.5 modbib.pl,1.1.1.1,1.2 updatebiblio.pl,1.1.1.1,1.2
by Gynn Lomax 08 May '02
by Gynn Lomax 08 May '02
08 May '02
Update of /cvsroot/koha/koha
In directory usw-pr-cvs1:/tmp/cvs-serv16527
Modified Files:
detail.pl modbib.pl updatebiblio.pl
Log Message:
Update to catalogue to allow change of biblio abstracts.
Related modifications to acqui system to match changes in Acquisition.pm
detail.pm changed to show abstract - still working on how to show url's
Index: detail.pl
===================================================================
RCS file: /cvsroot/koha/koha/detail.pl,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** detail.pl 3 May 2002 02:47:33 -0000 1.4
--- detail.pl 9 May 2002 03:01:40 -0000 1.5
***************
*** 14,31 ****
my $title = $input->param('title');
my @items = &ItemInfo(undef, $bib, $type);
my $dat = &bibdata($bib);
my $count = @items;
! my ($count3, $addauthor) = &addauthor($bib);
my $additional = $addauthor->[0]->{'author'};
- my @temp = split('\t', $items[0]);
my $main;
my $secondary;
! if ($type eq ''){
$type = 'opac';
} # if
# setup colours
! if ($type eq 'opac'){
$main = '#99cccc';
$secondary = '#efe5ef';
--- 14,33 ----
my $title = $input->param('title');
my @items = &ItemInfo(undef, $bib, $type);
+ my @temp = split('\t', $items[0]);
my $dat = &bibdata($bib);
my $count = @items;
! my ($authorcount, $addauthor) = &addauthor($bib);
my $additional = $addauthor->[0]->{'author'};
my $main;
my $secondary;
+ my $colour;
!
! if ($type eq '') {
$type = 'opac';
} # if
# setup colours
! if ($type eq 'opac') {
$main = '#99cccc';
$secondary = '#efe5ef';
***************
*** 34,37 ****
--- 36,44 ----
$secondary = '#ffffcc';
} # else
+ $colour = $secondary;
+
+ for (my $i = 1; $i < $authorcount; $i++) {
+ $additional .= "|" . $addauthor->[$i]->{'author'};
+ } # for
print $input->header;
***************
*** 41,52 ****
if ($type ne 'opac'){
print << "EOF";
! <a href=request.pl?bib=$bib><img height=42 WIDTH=120 BORDER=0 src=\"/images/requests.gif\" align=right border=0></a>
EOF
} # if
- for (my $i = 1; $i < $count3; $i++) {
- $additional .= "|" . $addauthor->[$i]->{'author'};
- } # for
-
if ($type eq 'catmain'){
print mkheadr(3,"Catalogue Maintenance");
--- 48,55 ----
if ($type ne 'opac'){
print << "EOF";
! <a href=request.pl?bib=$bib><img height=42 WIDTH=120 BORDER="0" src=\"/images/requests.gif\" align="right" border="0"></a>
EOF
} # if
if ($type eq 'catmain'){
print mkheadr(3,"Catalogue Maintenance");
***************
*** 57,97 ****
} else {
print mkheadr(3,"$dat->{'title'} $temp[4]");
! }
! print << "EOF";
!
! <TABLE CELLSPACING=0 CELLPADDING=5 border=1 align=left width="220">
<!-----------------BIBLIO RECORD TABLE--------->
!
! <form action=/cgi-bin/koha/modbib.pl method=post>
! <input type=hidden name=bibnum value=$bib>
! <TR VALIGN=TOP>
!
! <td bgcolor="$main"
EOF
- if ($type ne 'opac'){
- print "background=\"/images/background-mem.gif\"";
- }
print << "EOF";
! ><B>BIBLIO RECORD
EOF
! if ($type ne 'opac'){
print "$bib";
}
- print << "EOF";
- </TD></TR>
! <tr VALIGN=TOP >
! <TD>
EOF
- if ($type ne 'opac'){
- print "<INPUT TYPE=\"image\" name=\"submit\" VALUE=\"modify\" height=42 WIDTH=93 BORDER=0 src=\"/images/modify-mem.gif\">
- <INPUT TYPE=\"image\" name=\"delete\" VALUE=\"delete\" height=42 WIDTH=93 BORDER=0 src=\"/images/delete-mem.gif\">";
- }
print << "EOF";
<br>
--- 60,106 ----
} else {
print mkheadr(3,"$dat->{'title'} $temp[4]");
! } # if
+ print << "EOF";
+ <table cellspacing="0" callpadding="5" border="1" align="left" width="220">
<!-----------------BIBLIO RECORD TABLE--------->
+ <tr valign="top">
+ EOF
! if ($type ne 'opac') {
! print << "EOF";
! <td bgcolor="$main" background="/images/background-mem.gif">
EOF
+ } else {
+ print << "EOF";
+ <td bgcolor="$main">
+ EOF
+ } # else
print << "EOF";
! <b>BIBLIO RECORD</b>
EOF
! if ($type ne 'opac') {
print "$bib";
}
+ print << "EOF";
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>
+ EOF
! if ($type ne 'opac') {
! print << "EOF";
! <form action="/cgi-bin/koha/modbib.pl" method="post">
! <input type="hidden" name="bibnum" value="$bib">
! <input type="image" name="submit" value="modify" height="42" width="93" border="0" src="/images/modify-mem.gif">
! <input type="image" name="delete" value="delete" height="42" width="93" border="0" src="/images/delete-mem.gif">
! </form>
EOF
+ } # if
print << "EOF";
<br>
***************
*** 100,105 ****
! if ($type ne 'opac'){
! print << "EOF";
<b>Subtitle:</b> $dat->{'subtitle'}<br>
<b>Author:</b> $dat->{'author'}<br>
--- 109,114 ----
! if ($type ne 'opac') {
! print << "EOF";
<b>Subtitle:</b> $dat->{'subtitle'}<br>
<b>Author:</b> $dat->{'author'}<br>
***************
*** 117,247 ****
EOF
! }
! else {
! if ($dat->{'subtitle'} ne ''){
! print "<b>Subtitle:</b> $dat->{'subtitle'}<br>";
! }
! if ($dat->{'author'} ne ''){
! print "<b>Author:</b> $dat->{'author'}<br>";
! }
! #Additional Author: <br>
! if ($dat->{'seriestitle'} ne ''){
! print "<b>Seriestitle:</b> $dat->{'seriestitle'}<br>";
! }
! if ($dat->{'subject'} ne ''){
! print "<b>Subject:</b> $dat->{'subject'}<br>";
! }
! if ($dat->{'copyrightdate'} ne ''){
! print "<b>Copyright:</b> $dat->{'copyrightdate'}<br>";
! }
! if ($dat->{'notes'} ne ''){
! print "<b>Notes:</b> $dat->{'notes'}<br>";
! }
! if ($dat->{'unititle'} ne ''){
! print "<b>Unititle:</b> $dat->{'unititle'}<br>";
! }
! #Analytical Author: <br>
! #Analytical Title: <br>
! if ($dat->{'serial'} ne '0'){
! print "<b>Serial:</b> Yes<br>";
! }
! print "<b>Total Number of Items:</b> $count
<p>
! ";
- }
print << "EOF";
! </form>
! </font></TD>
! </TR>
! </TABLE>
! <img src="/images/holder.gif" width=16 height=300 align=left>
EOF
- my $i=0;
print center();
print mktablehdr;
- if ($type eq 'opac'){
! print mktablerow(6,$main,'Item Type','Class','Branch','Date Due','Last Seen');
} else {
! print mktablerow(6,$main,'Itemtype','Class','Location','Date Due','Last Seen','Barcode',"/images/background-mem.gif");
! }
! my $colour=1;
! while ($i < $count){
- my @results = split('\t', $items[$i]);
- if ($type ne 'opac'){
- $results[1]=mklink("/cgi-bin/koha/moredetail.pl?item=$results[5]&bib=$bib&bi=$results[8]&type=$type",$results[1]);
- }
- if ($results[2] eq ''){
- $results[2]='Available';
- }
- if ($type eq 'catmain'){
- $results[10]=mklink("/cgi-bin/koha/maint/catmaintain.pl?type=fixitemtype&bi=$results[8]&item=$results[6]","Fix Itemtype");
- }
- if ($colour == 1){
if ($type ne 'opac'){
! if ($type eq 'catmain'){
! print mktablerow(8,$secondary,$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9],$results[10]);
! } else {
! print mktablerow(7,$secondary,$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9]);
! }
} else {
! $results[6]=ItemType($results[6]);
! print mktablerow(6,$secondary,$results[6],$results[4],$results[3],$results[2],$results[7],$results[9]);
! }
! $colour=0;
! } else{
! if ($type ne 'opac'){
! if ($type eq 'catmain'){
! print mktablerow(8,'white',$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9],$results[10]);
! } else {
! print mktablerow(7,'white',$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9]);
! }
} else {
! $results[6]=ItemType($results[6]);
! print mktablerow(6,'white',$results[6],$results[4],$results[3],$results[2],$results[7],$results[9]);
! }
! $colour=1;
! }
! $i++;
! }
print mktableft();
print "<p>";
print mktablehdr();
! if ($type ne 'opac'){
! print << "EOF";
! <TR VALIGN=TOP>
! <TD bgcolor="99cc33" background="/images/background-mem.gif" colspan=2><p><b>HELP</b><br>
<b>Update Biblio for all Items:</b> Click on the <b>Modify</b> button [left] to amend the biblio. Any changes you make will update the record for <b>all</b> the items listed above. <p>
<b>Updating the Biblio for only ONE or SOME Items:</b>
EOF
! if ($type eq 'catmain'){
! print << "EOF";
If some of the items listed above need a different biblio,
you need to click on the wrong item, then shift the group it belongs to, to the correct biblio.
You will need to know the correct biblio number
! <p>
!
! </TR>
EOF
! } else {
! print << "EOF";
If some of the items listed above need a different biblio, or are on the wrong biblio, you must use the <a href="acquisitions/">acquisitions</a> process to fix this. You will need to "re-order" the items, and delete them from this biblio.
! <p>
!
! </TR>
EOF
! }
! }
print mktableft();
print endcenter();
! print "<br clear=all>";
print endmenu($type);
print endpage();
--- 126,292 ----
EOF
! } else {
! if ($dat->{'subtitle'} ne ''){
! print "<b>Subtitle:</b> $dat->{'subtitle'}<br>";
! } # if
! if ($dat->{'author'} ne ''){
! print "<b>Author:</b> $dat->{'author'}<br>";
! } # if
!
! # Additional Author: <br>
! if ($dat->{'seriestitle'} ne '') {
! print "<b>Seriestitle:</b> $dat->{'seriestitle'}<br>";
! } # if
! if ($dat->{'subject'} ne '') {
! print "<b>Subject:</b> $dat->{'subject'}<br>";
! } # if
! if ($dat->{'copyrightdate'} ne '') {
! print "<b>Copyright:</b> $dat->{'copyrightdate'}<br>";
! } # if
! if ($dat->{'notes'} ne '') {
! print "<b>Notes:</b> $dat->{'notes'}<br>";
! } # if
! if ($dat->{'unititle'} ne '') {
! print "<b>Unititle:</b> $dat->{'unititle'}<br>";
! } # if
!
! # Analytical Author: <br>
! # Analytical Title: <br>
! if ($dat->{'serial'} ne '0') {
! print "<b>Serial:</b> Yes<br>";
! } # if
!
! print << "EOF";
! <b>Total Number of Items:</b> $count
<p>
! EOF
!
! } # if
print << "EOF";
! </font></td>
! </tr>
! </table>
! <img src="/images/holder.gif" width="16" height="300" align="left">
EOF
print center();
print mktablehdr;
! if ($type eq 'opac') {
! print mktablerow(6,$main,'Item Type','Class','Branch','Date Due','Last Seen');
! if ($dat->{'url'} ne '') {
! $dat->{'url'} =~ s/^http:\/\///;
! print mktablerow(6, $colour, 'Website', 'WEB', 'Online', 'Available', "<a href=\"http://$dat->{'url'}\">$dat->{'url'}</a>");
! } # if
} else {
! print mktablerow(7,$main,'Itemtype','Class','Location','Date Due','Last Seen','Barcode',"","/images/background-mem.gif");
! if ($dat->{'url'} ne '') {
! $dat->{'url'} =~ s/^http:\/\///;
! print mktablerow(7, $colour, 'WEB', '', 'Online', 'Available', "<a href=\"http://$dat->{'url'}\">$dat->{'url'}</a>");
! } # if
! } # else
!
! $colour = 'white';
! for (my $i = 0; $i < $count; $i ++) {
!
! my @results = split('\t', $items[$i]);
!
! if ($type ne 'opac') {
! $results[1] = mklink("/cgi-bin/koha/moredetail.pl?item=$results[5]&bib=$bib&bi=$results[8]&type=$type",$results[1]);
! } # if
!
! if ($results[2] eq '') {
! $results[2] = 'Available';
! } # if
!
! if ($type eq 'catmain'){
! $results[10] = mklink("/cgi-bin/koha/maint/catmaintain.pl?type=fixitemtype&bi=$results[8]&item=$results[6]","Fix Itemtype");
! } # if
if ($type ne 'opac'){
! if ($type eq 'catmain'){
! print mktablerow(8,$colour,$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9],$results[10]);
! } else {
! print mktablerow(7,$colour,$results[6],$results[4],$results[3],$results[2],$results[7],$results[1],$results[9]);
! } # else
} else {
! $results[6] = ItemType($results[6]);
! print mktablerow(6,$colour,$results[6],$results[4],$results[3],$results[2],$results[7],$results[9]);
! } # else
!
! if ($colour eq $secondary) {
! $colour = 'white';
} else {
! $colour = $secondary;
! } # else
!
! } # for
print mktableft();
print "<p>";
print mktablehdr();
!
! if ($type ne 'opac') {
! print << "EOF";
! <tr valign="top">
! <td bgcolor="99cc33" background="/images/background-mem.gif" colspan="2"><p><b>HELP</b><br>
<b>Update Biblio for all Items:</b> Click on the <b>Modify</b> button [left] to amend the biblio. Any changes you make will update the record for <b>all</b> the items listed above. <p>
<b>Updating the Biblio for only ONE or SOME Items:</b>
EOF
! if ($type eq 'catmain') {
! print << "EOF";
If some of the items listed above need a different biblio,
you need to click on the wrong item, then shift the group it belongs to, to the correct biblio.
You will need to know the correct biblio number
! <p />
! </tr>
EOF
! } else {
! print << "EOF";
If some of the items listed above need a different biblio, or are on the wrong biblio, you must use the <a href="acquisitions/">acquisitions</a> process to fix this. You will need to "re-order" the items, and delete them from this biblio.
! <p />
! </tr>
EOF
! } # else
! } # if
!
print mktableft();
print endcenter();
! print << "EOF";
! <br clear=all>
! <p />
! EOF
!
! if ($type ne 'opac') {
! print << "EOF";
! <table border="1" cellspacing="0" cellpadding="5" width="90%">
! <tr valign="top">
! <td bgcolor="$main" background="/images/background-mem.gif"><b>Abstract</b></td>
! </tr>
! <tr valign="top">
! <td>$dat->{'abstract'}</td>
! </tr>
! </table>
! EOF
! } else {
! if ($dat->{'abstract'} ne '') {
! print << "EOF";
! <table border="1" cellspacing="0" cellpadding="5" width="90%">
! <tr valign="top">
! <td bgcolor="$main"><b>Abstract</b></td>
! </tr>
! <tr valign="top">
! <td>$dat->{'abstract'}</td>
! </tr>
! </table>
! EOF
! } # if
! } # else
!
print endmenu($type);
print endpage();
Index: modbib.pl
===================================================================
RCS file: /cvsroot/koha/koha/modbib.pl,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -r1.1.1.1 -r1.2
*** modbib.pl 19 Dec 2000 23:45:52 -0000 1.1.1.1
--- modbib.pl 9 May 2002 03:01:40 -0000 1.2
***************
*** 13,84 ****
my $input = new CGI;
! my $bibnum=$input->param('bibnum');
! my $data=bibdata($bibnum);
! my ($count,$subject)=subject($data->{'biblionumber'});
! my ($count2,$subtitle)=subtitle($data->{'biblionumber'});
! my ($count3,$addauthor)=addauthor($data->{'biblionumber'});
! my $submit=$input->param('submit.x');
! if ($submit eq ''){
! print $input->redirect("/cgi-bin/koha/delbiblio.pl?biblio=$bibnum");
! }
print $input->header;
! #my ($analytictitle)=analytic($biblionumber,'t');
! #my ($analyticauthor)=analytic($biblionumber,'a');
print startpage();
print startmenu();
- my %inputs;
! #have to get all subtitles, subjects and additional authors
! my $sub=$subject->[0]->{'subject'};
! for (my $i=1;$i<$count;$i++){
! $sub=$sub."|".$subject->[$i]->{'subject'};
! }
! my $additional=$addauthor->[0]->{'author'};
! for (my $i=1;$i<$count3;$i++){
! $additional=$additional."|".$addauthor->[$i]->{'author'};
! }
!
!
! #hash is set up with input name being the key then
! #the value is a tab separated list, the first item being the input type
! $inputs{'Author'}="text\t$data->{'author'}\t0";
! $data->{'title'}=tidyhtml($data->{'title'});
! $inputs{'Title'}="text\t$data->{'title'}\t1";
! my $dewey = $data->{'dewey'};
! $dewey =~ s/0+$//;
! if ($dewey eq "000.") { $dewey = "";};
! if ($dewey < 10){$dewey='00'.$dewey;}
! if ($dewey < 100 && $dewey > 10){$dewey='0'.$dewey;}
! if ($dewey <= 0){
! $dewey='';
! }
! $dewey=~ s/\.$//;
! #$inputs{'Class'}="text\t$data->{'classification'}$dewey$data->{'subclass'}\t2";
! #$inputs{'Item Type'}="text\t$data->{'itemtype'}\t3";
! $inputs{'Subject'}="textarea\t$sub\t4";
! #$inputs{'Publisher'}="text\t$data->{'publishercode'}\t5";
! $inputs{'Copyright date'}="text\t$data->{'copyrightdate'}\t6";
! #$inputs{'ISBN'}="text\t$data->{'isbn'}\t7";
! #$inputs{'Publication Year'}="text\t$data->{'publicationyear'}\t8";
! #$inputs{'Pages'}="text\t$data->{'pages'}\t9";
! #$inputs{'Illustrations'}="text\t$data->{'illustration'}\t10";
! $inputs{'Series Title'}="text\t$data->{'seriestitle'}\t11";
! $inputs{'Additional Author'}="text\t$additional\t12";
! $inputs{'Subtitle'}="text\t$subtitle->[0]->{'subtitle'}\t13";
! $inputs{'Unititle'}="text\t$data->{'unititle'}\t14";
! $inputs{'Notes'}="textarea\t$data->{'notes'}\t15";
! $inputs{'Serial'}="text\t$data->{'serial'}\t16";
! #$inputs{'Volume'}="text\t$data->{'volumeddesc'}\t17";
! $inputs{'Analytic author'}="text\t\t18";
! $inputs{'Analytic title'}="text\t\t19";
!
! $inputs{'bibnum'}="hidden\t$data->{'biblionumber'}\t20";
! $inputs{'bibitemnum'}="hidden\t$data->{'biblioitemnumber'}\t21";
!
!
! print mkform3('updatebiblio.pl',%inputs);
! #print mktablehdr();
! #print mktableft();
print endmenu();
print endpage();
--- 13,128 ----
my $input = new CGI;
! my $submit = $input->param('submit.x');
! my $bibnum = $input->param('bibnum');
! my $data = &bibdata($bibnum);
! my ($subjectcount, $subject) = &subject($data->{'biblionumber'});
! my ($subtitlecount, $subtitle) = &subtitle($data->{'biblionumber'});
! my ($addauthorcount, $addauthor) = &addauthor($data->{'biblionumber'});
! my $sub = $subject->[0]->{'subject'};
! my $additional = $addauthor->[0]->{'author'};
! my %inputs;
! my $dewey;
!
! if ($submit eq '') {
! print $input->redirect("/cgi-bin/koha/delbiblio.pl?biblio=$bibnum");
! } # if
print $input->header;
! # my ($analytictitle) = &analytic($biblionumber,'t');
! # my ($analyticauthor) = &analytic($biblionumber,'a');
print startpage();
print startmenu();
! # have to get all subtitles, subjects and additional authors
! for (my $i = 1; $i < $subjectcount; $i++) {
! $sub = $sub . "|" . $subject->[$i]->{'subject'};
! } # for
!
! for (my $i = 1; $i < $addauthorcount; $i++) {
! $additional = $additional . "|" . $addauthor->[$i]->{'author'};
! } # for
!
!
! $dewey = $data->{'dewey'};
! $dewey =~ s/0+$//;
! if ($dewey eq "000.") {
! $dewey = "";
! } # if
! if ($dewey < 10) {
! $dewey = '00' . $dewey;
! } # if
! if ($dewey < 100 && $dewey > 10) {
! $dewey = '0' . $dewey;
! } # if
! if ($dewey <= 0){
! $dewey='';
! } # if
! $dewey = ~ s/\.$//;
!
! $data->{'title'} = &tidyhtml($data->{'title'});
!
! print << "EOF";
! <form action="updatebiblio.pl" method="post">
! <input type="hidden" name="biblionumber" value="$data->{'biblionumber'}">
! <input type="hidden" name="biblioitemnumber" value="$data=>{'biblioitemnumber'}">
! <table border="0" cellspacing="0" cellpadding="5">
! <tr valign="top">
! <td>Author</td>
! <td><input type="text" name="author" value="$data->{'author'}"></td>
! </tr>
! <tr valign="top">
! <td>Title</td>
! <td><input type="text" name="title" value="$data->{'title'}"></td>
! </tr>
! <tr valign="top">
! <td>Abstract</td>
! <td><textarea name="abstract" cols="40" rows="4">$data->{'abstract'}</textarea></td>
! </tr>
! <tr valign="top">
! <td>Subject</td>
! <td><textarea name="subject" cols="40" rows="4">$sub</textarea></td>
! </tr>
! <tr valign="top">
! <td>Copyright Date</td>
! <td><input type="text" name="copyrightdate" value="$data->{'copyrightdate'}"></td>
! </tr>
! <tr valign="top">
! <td>Series Title</td>
! <td><input type="text" name="seriestitle" value="$data->{'seriestitle'}"></td>
! </tr>
! <tr valign="top">
! <td>Additional Author</td>
! <td><input type="text" name="additionalauthor" value="$additional"></td>
! </tr>
! <tr valign="top">
! <td>Subtitle</td>
! <td><input type="text" name="subtitle" value="$data->{'subtitle'}"></td>
! </tr>
! <tr valign="top">
! <td>Unititle</td>
! <td><input type="text" name="unititle" value="$data->{'untitle'}"></td>
! </tr>
! <tr valign="top">
! <td>Notes</td>
! <td><textarea name="notes" cols="40" rows="4">$data->{'notes'}</textarea></td>
! </tr>
! <tr valign="top">
! <td>Serial</td>
! <td><input type="text" name="serial" value="$data->{'serial'}"></td>
! </tr>
! <tr valign="top">
! <td>Analytic Author</td>
! <td><input type="text" name="analyticauthor"></td>
! </tr>
! <tr valign="top">
! <td>Analytic Title</td>
! <td><input type="text" name="analytictitle"></td>
! </tr>
! </table>
! <br>
! <input type="submit" name="submit" value="Save Changes">
! </form>
! EOF
!
print endmenu();
print endpage();
Index: updatebiblio.pl
===================================================================
RCS file: /cvsroot/koha/koha/updatebiblio.pl,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -r1.1.1.1 -r1.2
*** updatebiblio.pl 19 Dec 2000 23:45:53 -0000 1.1.1.1
--- updatebiblio.pl 9 May 2002 03:01:40 -0000 1.2
***************
*** 7,75 ****
use C4::Output;
! my $input= new CGI;
! #print $input->header;
! #print $input->dump;
!
!
! my $title=checkinp($input->param('Title'));
! my $author=checkinp($input->param('Author'));
! my $bibnum=checkinp($input->param('bibnum'));
! my $copyright=checkinp($input->param('Copyright'));
! my $seriestitle=checkinp($input->param('Series'));
! my $serial=checkinp($input->param('Serial'));
! my $unititle=checkinp($input->param('Unititle'));
! my $notes=checkinp($input->param('Notes'));
!
! modbiblio($bibnum,$title,$author,$copyright,$seriestitle,$serial,$unititle,$notes);
!
! my $subtitle=checkinp($input->param('Subtitle'));
! modsubtitle($bibnum,$subtitle);
!
! my $subject=checkinp($input->param('Subject'));
! $subject=uc $subject;
! my @sub=split(/\|/,$subject);
! #print @sub;
! #
!
! my $addauthor=checkinp($input->param('Additional'));
! modaddauthor($bibnum,$addauthor);
! my $count1=@sub;
!
! for (my $i=0; $i<$count1; $i++){
! $sub[$i]=~ s/ +$//;
! }
!
! #print $input->header;
! my $force=$input->param('Force');
! my $error=modsubject($bibnum,$force,@sub);
if ($error ne ''){
! print $input->header;
! print startpage();
! print startmenu();
! print $error;
! my @subs=split('\n',$error);
! print "<p> Click submit to force the subject";
! my @names=$input->param;
! my %data;
! my $count=@names;
! for (my $i=0;$i<$count;$i++){
! if ($names[$i] ne 'Force'){
! my $value=$input->param("$names[$i]");
! $data{$names[$i]}="hidden\t$value\t$i";
! }
! }
! $data{"Force"}="hidden\t$subs[0]\t$count";
! print mkform3('updatebiblio.pl',%data);
! print endmenu();
! print endpage();
} else {
! print $input->redirect("detail.pl?type=intra&bib=$bibnum");
! }
sub checkinp{
my ($inp)=@_;
! $inp=~ s/\'/\\\'/g;
! $inp=~ s/\"/\\\"/g;
return($inp);
}
--- 7,75 ----
use C4::Output;
! my $input = new CGI;
! my $bibnum = checkinp($input->param('biblionumber'));
! my $biblio = {
! biblionumber => $bibnum,
! title => $input->param('title')?$input->param('title'):"",
! author => $input->param('author')?$input->param('author'):"",
! abstract => $input->param('abstract')?$input->param('abstract'):"",
! copyright => $input->param('copyrightdate')?$input->param('copyrightdate'):"",
! seriestitle => $input->param('seriestitle')?$input->param('seriestitle'):"",
! serial => $input->param('serial')?$input->param('serial'):"",
! unititle => $input->param('unititle')?$input->param('unititle'):"",
! notes => $input->param('notes')?$input->param('notes'):"",
! }; # my $biblio
! my $subtitle = checkinp($input->param('subtitle'));
! my $subject = checkinp($input->param('subject'));
! my $addauthor = checkinp($input->param('additionalauthor'));
! my $force = $input->param('Force');
! my %data;
! my @sub;
! my @subs;
! my @names;
! my $count;
! my $error;
!
! &modbiblio($biblio);
! &modsubtitle($bibnum, $subtitle);
! &modaddauthor($bibnum, $addauthor);
!
! $subject = uc($subject);
! @sub = split(/\|/, $subject);
! $count = @sub;
!
! for (my $i = 0; $i < $count; $i++) {
! $sub[$i] =~ s/ +$//;
! } # for
!
! $error = &modsubject($bibnum,$force,@sub);
if ($error ne ''){
! print $input->header;
! print startpage();
! print startmenu();
! print $error;
! @subs = split('\n',$error);
! print "<p> Click submit to force the subject";
! @names = $input->param;
! $count = @names;
! for (my $i = 0; $i < $count; $i++) {
! if ($names[$i] ne 'Force') {
! my $value = $input->param("$names[$i]");
! $data{$names[$i]} = "hidden\t$value\t$i";
! } # if
! } # for
! $data{"Force"} = "hidden\t$subs[0]\t$count";
! print mkform3('updatebiblio.pl', %data);
! print endmenu();
! print endpage();
} else {
! print $input->redirect("detail.pl?type=intra&bib=$bibnum");
! } # else
sub checkinp{
my ($inp)=@_;
! $inp =~ s/\'/\\\'/g;
! $inp =~ s/\"/\\\"/g;
return($inp);
}
1
0
Update of /cvsroot/koha/koha/acqui
In directory usw-pr-cvs1:/tmp/cvs-serv16527/acqui
Modified Files:
addorder.pl finishreceive.pl
Log Message:
Update to catalogue to allow change of biblio abstracts.
Related modifications to acqui system to match changes in Acquisition.pm
detail.pm changed to show abstract - still working on how to show url's
Index: addorder.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui/addorder.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** addorder.pl 15 Apr 2002 05:33:33 -0000 1.3
--- addorder.pl 9 May 2002 03:01:40 -0000 1.4
***************
*** 8,18 ****
use C4::Output;
use C4::Acquisitions;
- #use Date::Manip;
my $input = new CGI;
- #print $input->header;
- #print startpage();
- #print startmenu('acquisitions');
- #print $input->dump;
my $existing=$input->param('existing');
my $title=$input->param('title');
--- 8,13 ----
***************
*** 40,44 ****
my $ecost=$input->param('ecost');
my $gst=$input->param('GST');
- #check to see if orderexists
my $orderexists=$input->param('orderexists');
--- 35,38 ----
***************
*** 48,59 ****
if ($existing eq 'no'){
#if it doesnt create it
! $bibnum = &newbiblio({ title => $title,
! author =>$author,
! copyright => $copyright });
$bibitemnum = &newbiblioitem({ biblionumber => $bibnum,
! itemtype => $itemtype,
! isben => $isbn });
newsubtitle($bibnum);
! modbiblio($bibnum,$title,$author,$copyright,$series);
} else {
$bibnum=$input->param('biblio');
--- 42,57 ----
if ($existing eq 'no'){
#if it doesnt create it
! $bibnum = &newbiblio({ title => $title?$title:"",
! author => $author?$author:"",
! copyright => $copyright?$copyright:"" });
$bibitemnum = &newbiblioitem({ biblionumber => $bibnum,
! itemtype => $itemtype?$itemtype:"",
! isben => $isbn?$isbn:"" });
newsubtitle($bibnum);
! modbiblio({ biblionumber => $bibnum,
! title => $title?$title:"",
! author => $author?$author:"",
! copyrightdate => $copyright?$copyright:"",
! series => $series?$series:"" });
} else {
$bibnum=$input->param('biblio');
***************
*** 63,69 ****
$bibitemnum=newbiblioitem($bibnum,$itemtype,$isbn);
}
! modbiblio($bibnum,$title,$author,$copyright,$series);
}
! if ($orderexists ne ''){
modorder($title,$ordnum,$quantity,$listprice,$bibnum,$basketno,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst);
}else {
--- 61,71 ----
$bibitemnum=newbiblioitem($bibnum,$itemtype,$isbn);
}
! modbiblio({ biblionumber => $bibnum,
! title => $title?$title:"",
! author => $author?$author:"",
! copyrightdate => $copyright?$copyright:"",
! series => $series?$series:"" });
}
! if ($orderexists ne '') {
modorder($title,$ordnum,$quantity,$listprice,$bibnum,$basketno,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst);
}else {
***************
*** 71,76 ****
}
} else {
- #print $input->header;
- #print "del";
$bibnum=$input->param('biblio');
delorder($bibnum,$ordnum);
--- 73,76 ----
***************
*** 78,82 ****
print $input->redirect("newbasket.pl?id=$supplier&basket=$basketno");
- #print $input->dump;
- #print endmenu('acquisitions');
- #print endpage();
--- 78,79 ----
Index: finishreceive.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui/finishreceive.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** finishreceive.pl 29 Apr 2002 05:25:41 -0000 1.2
--- finishreceive.pl 9 May 2002 03:01:40 -0000 1.3
***************
*** 14,18 ****
my $user=$input->remote_user;
#print $input->dump;
! my $biblio=$input->param('biblio');
my $ordnum=$input->param('ordnum');
my $quantrec=$input->param('quantityrec');
--- 14,18 ----
my $user=$input->remote_user;
#print $input->dump;
! my $biblionumber = $input->param('biblio');
my $ordnum=$input->param('ordnum');
my $quantrec=$input->param('quantityrec');
***************
*** 21,25 ****
my $cost=$input->param('cost');
my $invoiceno=$input->param('invoice');
- my $id=$input->param('id');
my $bibitemno=$input->param('biblioitemnum');
my $data=bibitemdata($bibitemno);
--- 21,24 ----
***************
*** 38,47 ****
my $itemtype=$input->param('format');
my $isbn=$input->param('ISBN');
! my $series=$input->param('Series');
! my $bookseller=$input->param('bookseller');
! $id=$bookseller;
! my $title=$input->param('title');
! my $author=$input->param('author');
! my $copyright=$input->param('copyright');
if ($quantrec != 0){
--- 37,49 ----
my $itemtype=$input->param('format');
my $isbn=$input->param('ISBN');
! my $bookseller = $input->param('bookseller');
! my $id = $bookseller;
! my $biblio = {
! biblionumber => $biblionumber,
! title => $input->param('title')?$input->param('title'):"",
! author => $input->param('author')?$input->param('author'):"",
! copyrightdate => $input->param('copyright')?$input->param('copyright'):"",
! series => $input->param('Series')?$input->param('Series'):""
! }; # my $biblio
if ($quantrec != 0){
***************
*** 60,69 ****
# print "$bibitemno";
$class="Periodical";
! $bibitemno=newbiblioitem($biblio,$itemtype,$isbn,$volinf,$class);
# print "here $bibitemno";
}
if ($quantity != 0){
! receiveorder($biblio,$ordnum,$quantrec,$user,$cost,$invoiceno,$bibitemno,$freight,$bookfund);
! modbiblio($biblio,$title,$author,$copyright,$series);
modbibitem($bibitemno,$itemtype,$isbn,$publisher,$pubdate,$class,$dewey,$subclass,$illus,$pages,$volinf,$notes,$size);
#print $notes;
--- 62,71 ----
# print "$bibitemno";
$class="Periodical";
! $bibitemno=newbiblioitem($biblionumber,$itemtype,$isbn,$volinf,$class);
# print "here $bibitemno";
}
if ($quantity != 0){
! receiveorder($biblionumber,$ordnum,$quantrec,$user,$cost,$invoiceno,$bibitemno,$freight,$bookfund);
! modbiblio($biblio);
modbibitem($bibitemno,$itemtype,$isbn,$publisher,$pubdate,$class,$dewey,$subclass,$illus,$pages,$volinf,$notes,$size);
#print $notes;
***************
*** 81,85 ****
}
my ($error) = newitems({ biblioitemnumber => $bibitemno,
! biblionumber => $biblio,
replacementprice => $replacement,
price => $cost,
--- 83,87 ----
}
my ($error) = newitems({ biblioitemnumber => $bibitemno,
! biblionumber => $biblionumber,
replacementprice => $replacement,
price => $cost,
***************
*** 100,104 ****
} else {
print $input->header;
! delorder($biblio,$ordnum);
print $input->redirect("/acquisitions/");
}
--- 102,106 ----
} else {
print $input->header;
! delorder($biblionumber,$ordnum);
print $input->redirect("/acquisitions/");
}
1
0
08 May '02
Update of /cvsroot/koha/koha/C4
In directory usw-pr-cvs1:/tmp/cvs-serv21556
Modified Files:
Acquisitions.pm Output.pm Search.pm
Log Message:
Update to catalogue to allow change of biblio abstracts.
Related modifications to acqui system to match changes in Acquisition.pm
detail.pm changed to show abstract - still working on how to show url's
Index: Acquisitions.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Acquisitions.pm,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** Acquisitions.pm 3 May 2002 02:47:33 -0000 1.7
--- Acquisitions.pm 9 May 2002 01:07:36 -0000 1.8
***************
*** 339,356 ****
sub branches {
! my $dbh=C4Connect;
! my $query="Select * from branches";
! my $sth=$dbh->prepare($query);
! $sth->execute;
! my @results;
! my $i=0;
! while (my $data=$sth->fetchrow_hashref){
! $results[$i]=$data;
! $i++;
! }
! $sth->finish;
! $dbh->disconnect;
! return($i,@results);
! }
sub bookfundbreakdown {
--- 339,358 ----
sub branches {
! my $dbh = C4Connect;
! my $query = "Select * from branches";
! my $sth = $dbh->prepare($query);
! my $i = 0;
! my @results;
!
! $sth->execute;
! while (my $data = $sth->fetchrow_hashref) {
! $results[$i] = $data;
! $i++;
! } # while
!
! $sth->finish;
! $dbh->disconnect;
! return($i, @results);
! } # sub branches
sub bookfundbreakdown {
***************
*** 420,436 ****
}
sub modbiblio {
! my ($bibnum, $title, $author, $copyright, $seriestitle, $serial, $unititle, $notes)=@_;
my $dbh = C4Connect;
! my $query = "Update biblio set
! title = '$title',
! author = '$author',
! copyrightdate = '$copyright',
! seriestitle = '$seriestitle',
! serial = '$serial',
! unititle = '$unititle',
! notes = '$notes'
! where biblionumber = $bibnum";
! my $sth = $dbh->prepare($query);
$sth->execute;
--- 422,452 ----
}
+
sub modbiblio {
! my ($biblio) = @_;
my $dbh = C4Connect;
! my $query;
! my $sth;
!
! $biblio->{'title'} = $dbh->quote($biblio->{'title'});
! $biblio->{'author'} = $dbh->quote($biblio->{'author'});
! $biblio->{'abstract'} = $dbh->quote($biblio->{'abstract'});
! $biblio->{'copyrightdate'} = $dbh->quote($biblio->{'copyrightdate'});
! $biblio->{'seriestitle'} = $dbh->quote($biblio->{'serirestitle'});
! $biblio->{'serial'} = $dbh->quote($biblio->{'serial'});
! $biblio->{'unititle'} = $dbh->quote($biblio->{'unititle'});
! $biblio->{'notes'} = $dbh->quote($biblio->{'notes'});
!
! $query = "Update biblio set
! title = $biblio->{'title'},
! author = $biblio->{'author'},
! abstract = $biblio->{'abstract'},
! copyrightdate = $biblio->{'copyrightdate'},
! seriestitle = $biblio->{'seriestitle'},
! serial = $biblio->{'serial'},
! unititle = $biblio->{'unititle'},
! notes = $biblio->{'notes'}
! where biblionumber = $biblio->{'biblionumber'}";
! $sth = $dbh->prepare($query);
$sth->execute;
***************
*** 438,453 ****
$sth->finish;
$dbh->disconnect;
! return($bibnum);
! }
sub modsubtitle {
! my ($bibnum,$subtitle)=@_;
! my $dbh=C4Connect;
! my $query="update bibliosubtitle set subtitle='$subtitle' where biblionumber=$bibnum";
! my $sth=$dbh->prepare($query);
$sth->execute;
$sth->finish;
$dbh->disconnect;
! }
sub modaddauthor {
--- 454,474 ----
$sth->finish;
$dbh->disconnect;
! return($biblio->{'biblionumber'});
! } # sub modbiblio
!
sub modsubtitle {
! my ($bibnum, $subtitle) = @_;
! my $dbh = C4Connect;
! my $query = "update bibliosubtitle set
! subtitle = '$subtitle'
! where biblionumber = $bibnum";
! my $sth = $dbh->prepare($query);
!
$sth->execute;
$sth->finish;
$dbh->disconnect;
! } # sub modsubtitle
!
sub modaddauthor {
***************
*** 476,537 ****
sub modsubject {
! my ($bibnum,$force,@subject)=@_;
! my $dbh=C4Connect;
! my $count=@subject;
my $error;
! for (my $i=0;$i<$count;$i++){
! $subject[$i]=~ s/^ //g;
! $subject[$i]=~ s/ $//g;
! my $query="select * from catalogueentry where entrytype='s' and
! catalogueentry='$subject[$i]'";
! my $sth=$dbh->prepare($query);
$sth->execute;
! if (my $data=$sth->fetchrow_hashref){
!
} else {
! if ($force eq $subject[$i]){
! #subject not in aut, chosen to force anway
! #so insert into cataloguentry so its in auth file
! $query="Insert into catalogueentry (entrytype,catalogueentry)
! values ('s','$subject[$i]')";
! my $sth2=$dbh->prepare($query);
! # print $query;
$sth2->execute;
$sth2->finish;
! } else {
! $error="$subject[$i]\n does not exist in the subject authority file";
! $query= "Select * from catalogueentry where
! entrytype='s' and (catalogueentry like '$subject[$i] %' or
! catalogueentry like '% $subject[$i] %' or catalogueentry like
! '% $subject[$i]')";
! my $sth2=$dbh->prepare($query);
! # print $query;
$sth2->execute;
! while (my $data=$sth2->fetchrow_hashref){
! $error=$error."<br>$data->{'catalogueentry'}";
! }
$sth2->finish;
! # $error=$error."<br>$query";
! }
! }
$sth->finish;
! }
! if ($error eq ''){
! my $query="Delete from bibliosubject where biblionumber=$bibnum";
! # print $query;
! my $sth=$dbh->prepare($query);
! # print $query;
$sth->execute;
$sth->finish;
! for (my $i=0;$i<$count;$i++){
! $sth=$dbh->prepare("Insert into bibliosubject values ('$subject[$i]',$bibnum)");
! # print $subject[$i];
$sth->execute;
$sth->finish;
! }
! }
$dbh->disconnect;
return($error);
! }
sub modbibitem {
--- 497,566 ----
sub modsubject {
! my ($bibnum, $force, @subject) = @_;
! my $dbh = C4Connect;
! my $count = @subject;
my $error;
! for (my $i = 0; $i < $count; $i++) {
! $subject[$i] =~ s/^ //g;
! $subject[$i] =~ s/ $//g;
! my $query = "select * from catalogueentry
! where entrytype = 's'
! and catalogueentry = '$subject[$i]'";
! my $sth = $dbh->prepare($query);
$sth->execute;
!
! if (my $data = $sth->fetchrow_hashref) {
} else {
! if ($force eq $subject[$i]) {
!
! # subject not in aut, chosen to force anway
! # so insert into cataloguentry so its in auth file
! $query = "Insert into catalogueentry
! (entrytype,catalogueentry)
! values ('s','$subject[$i]')";
! my $sth2 = $dbh->prepare($query);
!
$sth2->execute;
$sth2->finish;
!
! } else {
!
! $error = "$subject[$i]\n does not exist in the subject authority file";
! $query = "Select * from catalogueentry
! where entrytype = 's'
! and (catalogueentry like '$subject[$i] %'
! or catalogueentry like '% $subject[$i] %'
! or catalogueentry like '% $subject[$i]')";
! my $sth2 = $dbh->prepare($query);
!
$sth2->execute;
! while (my $data = $sth2->fetchrow_hashref) {
! $error = $error."<br>$data->{'catalogueentry'}";
! } # while
$sth2->finish;
! } # else
! } # else
$sth->finish;
! } # else
!
! if ($error eq '') {
! my $query = "Delete from bibliosubject where biblionumber = $bibnum";
! my $sth = $dbh->prepare($query);
!
$sth->execute;
$sth->finish;
!
! for (my $i = 0; $i < $count; $i++) {
! $sth = $dbh->prepare("Insert into bibliosubject
! values ('$subject[$i]', $bibnum)");
!
$sth->execute;
$sth->finish;
! } # for
! } # if
!
$dbh->disconnect;
return($error);
! } # sub modsubject
sub modbibitem {
Index: Output.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Output.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** Output.pm 21 Apr 2002 04:45:21 -0000 1.6
--- Output.pm 9 May 2002 01:07:36 -0000 1.7
***************
*** 216,229 ****
}
! sub mkform3{
! my ($action,%inputs)=@_;
! my $string="<form action=$action method=post>\n";
! $string=$string.mktablehdr();
my $key;
! my @keys=sort keys %inputs;
my @order;
! my $count=@keys;
! my $i2=0;
! while ( $i2<$count) {
my $value=$inputs{$keys[$i2]};
my @data=split('\t',$value);
--- 216,229 ----
}
! sub mkform3 {
! my ($action, %inputs) = @_;
! my $string = "<form action=\"$action\" method=\"post\">\n";
! $string .= mktablehdr();
my $key;
! my @keys = sort(keys(%inputs));
my @order;
! my $count = @keys;
! my $i2 = 0;
! while ($i2 < $count) {
my $value=$inputs{$keys[$i2]};
my @data=split('\t',$value);
Index: Search.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Search.pm,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** Search.pm 7 May 2002 00:08:20 -0000 1.21
--- Search.pm 9 May 2002 01:07:36 -0000 1.22
***************
*** 726,751 ****
sub bibdata {
! my ($bibnum,$type)=@_;
! my $dbh=C4Connect;
! my $query="Select *,biblio.notes
! from biblio,biblioitems
! left join bibliosubtitle on
! biblio.biblionumber=bibliosubtitle.biblionumber
!
! where biblio.biblionumber=$bibnum
! and biblioitems.biblionumber=$bibnum";
! # print $query;
! my $sth=$dbh->prepare($query);
$sth->execute;
! my $data=$sth->fetchrow_hashref;
$sth->finish;
! $query="Select * from bibliosubject where biblionumber='$bibnum'";
$sth=$dbh->prepare($query);
$sth->execute;
! while (my $dat=$sth->fetchrow_hashref){
! $data->{'subject'}.=" | $dat->{'subject'}";
}
! #print $query;
$sth->finish;
$dbh->disconnect;
--- 726,751 ----
sub bibdata {
! my ($bibnum, $type)=@_;
! my $dbh = C4Connect;
! my $query = "Select *, biblio.notes
! from biblio, biblioitems
! left join bibliosubtitle on
! biblio.biblionumber = bibliosubtitle.biblionumber
! where biblio.biblionumber = $bibnum
! and biblioitems.biblionumber = $bibnum";
!
! my $sth = $dbh->prepare($query);
$sth->execute;
! my $data = $sth->fetchrow_hashref;
$sth->finish;
!
! $query = "Select * from bibliosubject where biblionumber = '$bibnum'";
$sth=$dbh->prepare($query);
$sth->execute;
! while (my $dat = $sth->fetchrow_hashref){
! $data->{'subject'} .= " | $dat->{'subject'}";
}
!
$sth->finish;
$dbh->disconnect;
1
0
Forwarding, FYI, and if anyone has time to answer any of the questions.
If not, ill have a crack at them after work today.
Chris
----Forwarded Message-----
> From: Rosalie Blake <rosalie(a)library.org.nz>
> To: Olugbenga Adara <gbengaadara(a)yahoo.com>
> Cc: chris Cormack <chris(a)katipo.co.nz>
> Subject: Re: Some Info on KOHA
> Date: 09 May 2002 09:19:46 +1200
>
> Hello Olugbenga,
>
> On 8 May 2002, at 10:03, Olugbenga Adara wrote:
>
> > I have seen, downloaded and briefly evaluated Koha
> > some 12 months ago. But now I am thinking of
> > introducing koha to a University Library (Obafemi
> > Awolowo University, Ile-Ife ) here in Nigeria. I would
> > like to know the following things please
> >
> > 1. Can Koha be used without barcodes ? Presently the
> > library does not use any barcode and i wonder whether
> > other means may be used.
> Yes, definitely. If you want to use it for circulation, you need some
> identifier which is unique to every item you want to issue, but you
> possibly have an accession number of some sort. There is no
> reason you shouldn't use that. We use barcodes because it is
> quicker to scan a barcode with a reader, than to type a 6-digit or
> more number. But we frequently just type the barcode number on
> machines that do not have scanners.
> >
> > 2. How reliable is the Marc Import tool
> Sorry, I can't answer this. You need to ask this on the koha listserv:
> koha(a)lists.katipo.co.nz which you can join by following the leads on
> http://www.koha.org/mailing_list.html.
> >
> > 3. The library intends to start computerisation by
> > only using the opac - allowing patrons to search for
> > books. Could Koha function (OPAC) without patron
> > information?
> I think so, although it will not be able to report on whether an item is
> on issue or available for borrowing. Again, the listserv will give you a
> more authoritative answer.
> I've copied my reply to Chris Cormack, who was the chief
> programmer (still is) on Koha. He may add some remarks of his own.
> >
> > I also want to thank you for the great job you did by
> > releasing koha gpl
> Thank you. We're very proud ot it.
> Good Luck
> Rosalie Blake
> Horowhenua Library Trust
> >
> > Hope to get your reply soon
> >
> > thanks
> >
> > Olugbenga Adara,
> > Ibadan, Nigeria
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! Health - your guide to health and wellness
> > http://health.yahoo.com
>
>
--
3
2
In attachment, you will find my proposition for MARC version. don't
hesitate to do any remarks.
RTF version and OpenOffice.org original version
--
Paul
{\rtf1\ansi\deff0\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman{\*\falt Thorndale};}{\f1\froman\fprq2\fcharset0 Times New Roman{\*\falt Thorndale};}{\f2\fswiss\fprq2\fcharset0 Arial{\*\falt Albany};}{\f3\fnil\fprq1\fcharset0 Courier New;}{\f4\fnil\fprq0\fcharset2 StarSymbol;}{\f5\fnil\fprq2\fcharset0 Times New Roman;}{\f6\fnil\fprq2\fcharset1 Times New Roman;}{\f7\fnil\fprq2\fcharset0 HG Mincho Light J;}{\f8\fnil\fprq2\fcharset0 Arial Unicode MS;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\snext1 Standard;}
{\s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\sbasedon1\snext2 Corps de texte;}
{\s3\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ltrch\dbch\afs28\langfe255\loch\f2\fs28\lang1033\sbasedon1\snext2 Titre;}
{\s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b\sbasedon3\snext2{\*\soutlvl0} Titre 1;}
{\s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b\sbasedon3\snext2{\*\soutlvl1} Titre 2;}
{\s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b\sbasedon3\snext2{\*\soutlvl2} Titre 3;}
{\*\cs8\cf1\rtlch\af4\afs18\lang255\ltrch\dbch\af4\afs18\langfe255\loch\f4\fs18\lang1033 Puces;}
}{\*\listtable{\list\listtemplateid1
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid1}
{\list\listtemplateid2
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid2}
{\list\listtemplateid3
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid3}
{\list\listtemplateid4
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid4}
{\list\listtemplateid5
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid5}
{\list\listtemplateid6
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid6}
{\list\listtemplateid7
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li283}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li567}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li850}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1134}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1417}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1701}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li1984}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2268}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2551}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow2{\leveltext \'01\u8226 ?;}{\levelnumbers;}\f4\fs18\f4\fs18\f4\fs18\f4\fi-283\li2835}}\listid7}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}{\listoverride\listid2\listoverridecount0\ls1}{\listoverride\listid3\listoverridecount0\ls2}{\listoverride\listid4\listoverridecount0\ls3}{\listoverride\listid5\listoverridecount0\ls4}{\listoverride\listid6\listoverridecount0\ls5}{\listoverride\listid7\listoverridecount0\ls6}}
{\info{\author Paul POULAIN}{\creatim\yr2002\mo4\dy29\hr12\min51}{\operator Paul POULAIN}{\revtim\yr2002\mo5\dy8\hr12\min32}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6410}}\deftab1250
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
\paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \s3\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ltrch\dbch\afs28\langfe255\loch\f2\fs28\lang1033\qc {\ltrch\loch\f2 Koha}
\par {\ltrch\loch\f2 Walk trough to MARC }
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5
\par {\ltrch\loch\f5 This document is intended to present :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 what is MARC}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 koha MARC-DB structure}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 MARC operation into koha}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls6\ltrch\loch\f5 {\ltrch\loch\f5 Walk trough from the 1.1 version to the MARC version}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\cf2\qc\ltrch\loch\f5 {\ltrch\loch\f5 IMPORTANT NOTE : this document speaks of the UNIMARC format (for UNIfied MARC). If there are differences with MARC21/USMARC or any other MARC standard, please let me know.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 This document doesn't speak of authority datas. It will be completed as soon as possible ;-)}
\par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 What is MARC}
\par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 MARC is a standard created for cataloging books or others documents used in a library.}
\par {\ltrch\loch\f0 The MARC format is quite simple :}
\par {\ltrch\loch\f0 a MARC record is composed of any number of lines, all divided in 3 parts :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The tag, 3 numeric digits. There are 999 different tags.}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The Indicator 2 digits. If any digit not present, it's replaced by # (blank space)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\sa120\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls5 {\ltrch\loch\f0 The \ldblquote subfield\rdblquote : the subfield is the data container. A line may contain any number of subfields, depending on the label number. A subfield is composed of a $, a letter, then the data.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 When represented in a document, the common use is to add spaces between tag, Indicator and subfields, and inside subfields. This space is only here for ease. It's not present in the true file.}
\par
\par {\ltrch\loch\f5 Note an information (tag or subfield) may be Mandatory or not, and may be repeatable or not. For example, the 200 tag is mandatory and not repeatable (book title). In the 200 tag, the $a subfield is not mandatory and repeatable (title)}
\par
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Sample :}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 200 1# $a Je craque $b Text imprim\'e9 $f Guy Bedos}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1250\ri0\fi0\ltrch\loch\f5 {\ltrch\loch\f5 200 : title zone}
\par {\ltrch\loch\f5 1# : the 1 mean this title is meaningful }
\par {\ltrch\loch\f5 $a : subfield title}
\par {\ltrch\loch\f5 $b : support}
\par {\ltrch\loch\f5 $f : main author}
\par
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Tag categories :}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 Tag are ordered in a logical way :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 0XX (from 001 to 099) : legal information : biblio identifier, international number (ISBN or ISMN for music), legal publication, editor number...}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 1XX : coded informations : language, editor country, type of document, physical presentation...}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 2XX : document description : title, author...}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 3XX : notes}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 4XX : links with other notices}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 5XX : associated titles. It describes other titles used for this documents (original title, translation, old title when a book is re-edited with another title...)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 6XX : Indexes}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 7XX : responsibilities}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 8XX : international informations}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls4\ltrch\loch\f5 {\ltrch\loch\f5 9XX : local datas : those informations are not mandatory and may be specific to an agency.}
\par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 koha MARC-DB structure}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Fast access}
\par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 a MARC record can have a LOT of details. Most of them are useful only once a year or less. And most will never be useful for an OPAC user. That's why we must keep data in 2 parts : a MARC-DB and a non-MARC-DB. The non-MARC-DB can be the 1.1.2 (or a derivat
ive).}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Resource_table}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 To Steve :}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033{\ltrch\loch\f5{\f5 In you DB structure, I don't understand what the resource table is done for : it seems it's useless : Your code doesn't use date_added,date_modified, and }resource_id is always equal to record_id.}
\par
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 I propose we drop this table and use Bib_Table as entry table.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f3\fs18 {\ltrch\loch\f3 $sth=$dbh->prepare("insert into Resource_Table (Record_ID) values (0)");}
\par {\ltrch\loch\f3 $sth->execute;}
\par {\ltrch\loch\f3 my $Resource_ID=$dbh->\{'mysql_insertid'\};}
\par {\ltrch\loch\f3 my $Record_ID=$Resource_ID;}
\par {\ltrch\loch\f3 $sth=$dbh->prepare("update Resource_Table set Record_ID=$Record_ID where Resource_ID=$Resource_ID");}
\par {\ltrch\loch\f3 $sth->execute;}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033
\par {\ltrch\loch\f0 So I propose to drop this table.}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Bib_Table}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 The Bib_Table is the entry table for all biblio. It describes, for a biblio, if a Tag NXX (N going from 0 to 9) exists. If yes, the NXX_Tag_Table stores the exacts tags.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 Fields :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Bib_code}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Date_created}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Date modified}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Origin_code : this code is used to store the differents origins from the biblio records. It might be useful in the case of exchanges between libraries.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 To Steve : }
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 2 questions : }
\par {\ltrch\loch\f5 QUESTION 1 :}
\par {\ltrch\loch\f5 I don't understand the interest to have a different int for each N Tag. It is more convenient to use the Bib_Id as key into each NXX_Tag_Table instead of having a specific number for each N.}
\par {\ltrch\loch\f5 A sample :}
\par {\ltrch\loch\f5 Bib_Table}
\par {\ltrch\loch\f5 Bib_Id=1024}
\par {\ltrch\loch\f5 Tag_0XX=832}
\par {\ltrch\loch\f5 Tag_1XX=731}
\par {\ltrch\loch\f5 Tag_2XX=124}
\par {\ltrch\loch\f5 Tag_3XX=1}
\par {\ltrch\loch\f5 Tag_4XX=186}
\par {\ltrch\loch\f5 Tag_5XX=215}
\par {\ltrch\loch\f5 Tag_6XX=985}
\par {\ltrch\loch\f5 Tag_7XX=145}
\par {\ltrch\loch\f5 Tag_8XX=467}
\par
\par {\ltrch\loch\f5 If we search every biblio having 200$a=\rdblquote Victor Hugo\rdblquote and 101$a=\rdblquote BNF\rdblquote , we must build a 3 relation select :}
\par {\ltrch\loch\f5 linking from Tag_2XX to Bib_Table, then from Bib_Table to Tag_1XX.}
\par
\par {\ltrch\loch\f5 If we use Bib_Id as common key, we need only Tag_2XX and Tag_1XX table.}
\par
\par {\ltrch\loch\f5 One more reason : with this structure, we have can find a Tags when we have the Bib_Id, it's harder to find a Bib_Id when we have a Tag_2XX key. With a common key, the problem is solved ;-)}
\par
\par {\ltrch\loch\f5 That's why I propose to modify the table structure...}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_Tag_Table (N from 0 to 9)}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\f5 {\ltrch\loch\f5 Stores, for each value of XX in a biblio the data line. This field is not used for searches, but for presentations. The tag_cache table is used for searches. When a line is more than 255 char long, a link to a blob record in the blob_table is used and the
value is in this blob. The char is empty.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul\ltrch\loch\f5 {\ltrch\loch\f5 Fields :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Bib_code}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Tag_number char(3)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Tag_value varchar(255) (used only if length(value) <255)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f5\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls3\ltrch\loch\f5 {\ltrch\loch\f5 Blob_link_id longint (used only if length(value) >255)}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_Subfield_Table (N from 0 to 9)}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Table dropped for the tag_word.}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 NXX_tag_word (N from 0 to 9)}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 This table contains the datas used for searches. The idea is explained in the next chapter. This table stores one record for each word in the marc section.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ul {\ltrch\loch\f0 Fields :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Bib_code}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Tag_number char(3)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Subfield_id char(1)}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls2 {\ltrch\loch\f0 Word varchar(255)}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Words longer than 255 char are ignored (in french, the longest word is 26 char long ;-) )}
\par {\ltrch\loch\f0 Words present in the stopwords table are not stored in the MARC-DB}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 DISCUSSION about MARC searches}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The most important think about MARC tables, is that searches must be as well optimized as possible.}
\par {\ltrch\loch\f0 Anyway, a search is always a headache in MARC, as the simple solution would be to have a biblio stored in a single line.}
\par {\ltrch\loch\f0 As it's not possible to built a flat table with all the possible MARC tags, we must use a complex algorithm to do a search.}
\par
\par {\ltrch\loch\f0 Suppose we must do a select with :}
\par {\ltrch\loch\f0 tag=200, $a contains \ldblquote lord\rdblquote and \ldblquote ring\rdblquote }
\par {\ltrch\loch\f0 tag=101, $b contains \ldblquote Tolkien\rdblquote }
\par {\ltrch\loch\f0 tag=001, $a equals \ldblquote 123456\rdblquote }
\par
\par {\ltrch\loch\f0 If we have 10 tables, a select should be :}
\par {\ltrch\loch\f0 select biblio_id }
\par {\ltrch\loch\f0 from \tab 2xx_subfield_table as 2xx,}
\par {\ltrch\loch\f0 \tab 1xx_subfield_table as 1xx,}
\par {\ltrch\loch\f0 \tab 0xx_subfield_table as 0xx }
\par {\ltrch\loch\f0 where (tag=\rdblquote 200\rdblquote and 2xx.Mark=\rdblquote a\rdblquote and (2xx.value like \ldblquote %lord%\rdblquote and 2xx.value like \ldblquote %ring%\rdblquote )) }
\par {\ltrch\loch\f0 and (tag=\rdblquote 101\rdblquote and 1xx.mark=\rdblquote b\rdblquote and 1xx.value like \ldblquote %Tolkien%\rdblquote ) }
\par {\ltrch\loch\f0 and (tag=\rdblquote 001\rdblquote and 0xx.mark=\rdblquote a\rdblquote and 0xx.value=\rdblquote 123456\rdblquote ) and}
\par {\ltrch\loch\f0 (0xx.Bib_Id=1xx.Bib_Id and 0xx.bib_Id=2xx.Bib_id)}
\par
\par {\ltrch\loch\f0 This select is quite complex, but in 1 select, we can find what we want. The only problem is this select uses 3 tables, 2 indexed joins (the last line), an indexed select on table 0xx and a partially indexed select on tables 1xx and 2xx. So, on an importan
t library, this could be not fast...}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\i {\ltrch\loch\f0 (this proves we MUST have bib_id as common key in all tables : with differents id, we would have need )}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033
\par {\ltrch\loch\f0 With the tag_word field, we can do only indexed searches. The search algorythm could search the Bib_id. If we want to search (A or B) and not(C), we can do 2 indexed select in arrays, merge both arrays, do a selected select for C and delete Bib_id found fr
om the previous array.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\i
\par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 MARC operation into KOHA}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 MARC structure}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The idea is to define the MARC structure in 2 tables, allowing support for any MARC standard.}
\par {\ltrch\loch\f0 The MARc structure is defined in 2 differents tables :}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 Tag_param :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls1 {\ltrch\loch\f0 Tag_field}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls1 {\ltrch\loch\f0 Repeatable or Not Repeatable}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the field is Mandatory / Possible / Ignored. If it's mandatory, the field must be entered. If it's possible, the field can be entered, if it's ignored, the field must be not entered.}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Koha-DB : this field (boolean) can be set to indicate that the tag must be mandatory because it's a part of the koha-DB.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\ltrch\loch\b {\ltrch\loch\f0 Subfield_param :}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 It could contain, for each tag_field/tag_subfield pair :}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Tag_field}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Tag_subfield}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the subfield is Mandatory / Possible / Ignored. If it's mandatory, the subfield must be entered. If it's possible, the field can be entered, if it's ignored, the field must be not entered.}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 If the tag_subfield is Repeatable or Not Repeatable.}
\par \pard\plain {\listtext\pard\plain \li1533\ri0\fi-283\f4\fs18\f4\fs18\f4\fs18 \bullet }\ilvl0 \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033\li1533\ri0\fi-283\ls0 {\ltrch\loch\f0 Koha-DB : this field (boolean) can be set to indicate that the tag must be mandatory because it's a part of the koha-DB.}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Select}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Selects are done through old koha-DB, or through MARC koha-DB, depending on the user choice. In opac, the search is done on koha-DB only. In koha-librarian, it can be done on koha or MARC DB.}
\par
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 Input}
\par \pard\plain \li567\ri0\fi0\sb240\sa120\keepn\f2\fs28\b\fs28\b\fs28\b \s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b {\ltrch\loch\f2 Import}
\par \pard\plain \s2\li567\ri0\fi0\sa120\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 The import script uses the param tables to decide which fields must be added to the DB.}
\par \pard\plain \li567\ri0\fi0\sb240\sa120\keepn\f2\fs28\b\fs28\b\fs28\b \s6\li567\ri0\fi0\sb240\sa120\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ab\ltrch\dbch\afs28\langfe255\ab\loch\f2\fs28\lang1033\b {\ltrch\loch\f2 Manual adds/modifications}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Addings are done through 10 pages, each for NXX (N from 1 to 9). for each NXX tag field/subfield that must be added in the page, a <input type=text> is defined. For Repeatable subfields, a link opens a popup where you can add as many datas as you want.}
\par {\ltrch\loch\f0 Data are stored into an array, and we make a heavy use of javascript.}
\par {\ltrch\loch\f0 Any modifications is done on the MARC-DB and at the same time in the koha-DB.}
\par \pard\plain \sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs32\b\fs32\b\fs32\b \s4\li0\ri0\fi0\sb240\sa120\box\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrl\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28{\*\brdrr\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs32\lang255\ab\ltrch\dbch\afs32\langfe255\ab\loch\f2\fs32\lang1033\b {\ltrch\loch\f2 Walktrough to MARC}
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 1}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033{\ltrch\loch\f6{\i0\f6 Definition of the DB}}
\par {\ltrch\loch\f0 Creation of marcimport and koha2marc script.}
\par {\ltrch\loch\f0 Creation of administration script for MARC structure.}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Modification of present add/modify/delete biblio script.}
\par
\par {\ltrch\loch\f0 Now, we can use the old-koha version with the MARC-DB working in background.}
\par
\par \pard\plain \li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\f2\fs28\i\b\fs28\i\b\fs28\i\b \s5\li283\ri0\fi0\sb240\sa120\brdrb\brdrs\brdrw1\brdrcf1\brsp28{\*\brdrb\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp28\keepn\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\afs28\lang255\ai\ab\ltrch\dbch\afs28\langfe255\ai\ab\loch\f2\fs28\lang1033\i\b {\ltrch\loch\f2 2}
\par \pard\plain \s1\li567\ri0\fi0\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af7\afs24\langfe255\loch\f0\fs24\lang1033 {\ltrch\loch\f0 Creation of MARC-DB add/modify biblio}
\par {\ltrch\loch\f0 Creation of MARC-DB search}
\par
\par }
2
6
A couple of people have suggested that we try to have a meeting via IRC...
I'd suggest Thursday evening (my time, which is eastern standard). Pat has
a list of possible times that work for all the various timezones (more or
less) based on what I know about people's availability [Pat, I seem to have
forgotten to make a note of the ones you thought that worked -- please send
that out and/or to me :)].
Possible agenda items(_very_ random and subject to editing):
* target setting
* coordination of efforts
* timetables, or at least feature ordering
* CVS use, setup, branching
* a steering committee
* outside involvement (ie, K12Linux, oss4lib)
* features and priorities
* new user/installer assistance
* future meetings (and times, etc)
* standards (MARC, circulation, etc)
* resources in re standards
* design, coding practice
* version numbering, etc. (which is semi settled)
* suggestions on documentation
Thoughts?, Suggestions?,
Nick
6
8