Commit graph

3218 commits

Author SHA1 Message Date
769faee11a Bug 5755: Syspref to control facets truncation
On OPAC/staff result page facets are truncated to 20 characters. On some OPAC
layout, it's not enough. A new syspref FacetLabelTruncationLength defines the
length to cut facets if necessary.

This patch add the syspref to searching.pref and add it to syspref various
language default values loaded into DB during installation process. It's not
necessary to update DB since length is fixed to 20 (as before) when this
syspref isn't defined in systemprefercences table.

Rebased to last HEAD: 2011.03.18

[Documentation] FacetLabelTruncationLength syspref in Searching tab

[3.2] It doesn't apply.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-22 21:06:35 +13:00
265ed53f12 3154 Preferences for building facets (functionality)
Based on patch from Fridolyn Somers with input of Frederic Demians.
Added new Searching preference maxRecordsForFacets.
This pref contains number of result records used in facet building.
Also added pref displayFacetCount (with thanks to Frederic).
Follow up patch takes care of install issues; functionality can already be tested with this patch only.

Updated on March 17 for changes in include files.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-22 20:53:28 +13:00
Jared Camins-Esakov
0a1f05a5a2 Bug 5390: OPAC loses library selection
This patch ensures that the OPAC library selection masthead will always default
to the branch that is currently being searched. This only applies to systems
with multiple branches and OpacAddMastheadLibraryPulldown turned on.

To test: do a search in the OPAC, limiting by branch. The search results will
still have that branch selected in the masthead dropdown.

This patch also fixes bug 5852 and bug 3778.

Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Liz Rea <lrea@nekls.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-22 14:59:16 +13:00
Katrin Fischer
e1654e1aa1 Bug 5834: Holds link missing when 942$c is not for loan
Adds a check for item-level_itypes system preference. Note that this only
applies to the search results screens.

To test:
1) Set item-level_itypes to 'specific item'
2) Create record and set 942$c to an itype that is marked not for loan
3) Create item with itype not marked 'not for loan'
Current behaviour: Holds link is not shown, sys pref setting doesn't matter

After patch: Holds link is shown
- when item-level_itype is 'specific item'
- when item-level_itype is 'biblio record' and 942$c itype is for loan

Holds link is not shown
- when item-level_itype is 'biblio record' and 942$c is not for loan

Signed-off-by: Jared Camins-Esakov <jcamins@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-21 20:49:17 +13:00
b9cee99da4 Bug 5065 Add ability to choose framework on import
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-21 20:36:35 +13:00
Paul Poulain
ddbedbfc2f Bug 4330 : Adding some copyright BibLibre statements 2011-03-21 10:57:20 +13:00
975aea1372 Bug 3735: Wrong search results for a few fields in ccl.properties
This patch corrects a syntax error in the definition of bath attributes in
ccl.properties. In particular, it adds the search prefixes 'isbn', 'issn',
'name', and 'notes'. In order to make use of this patch, ccl.properties must be
updated.

Signed-off-by: Jared Camins-Esakov <jcamins@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-18 11:17:24 +13:00
Colin Campbell
7f0a326da5 Bug 5890 Correct Mismatched operator in comparison
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-18 10:47:52 +13:00
Paul Poulain
620ae78f84 Bug 5879 : Biblio.pm : fix isbd syspref and default location
- the systempreference is isbd, not ISBD
- when preparing the ItemRecord (for acq or serials recieving), there was no default value calculated for location. Fixing that

Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-18 10:35:02 +13:00
Sophie Meynieux
6282f652b2 Bug 5889: Messages name in english for notifications on public interface.
Modification of template to allow multilanguage support. Alsa fixing columns
overflow.

BibLibre bug #5939

Tests: It works. Messages strings can now be extracted and placed in .po file
for translation.

Signed-off-by: Frédéric Demians <f.demians@tamil.fr>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-18 09:25:08 +13:00
Paul Poulain
d057f65743 Bug 5880 : C4/Koha.pm : adding two functions GetAutorisedValueByCode and GetKohaImageurlFromAuthorisedValues
just for convenience

Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-17 14:44:38 +13:00
Katrin Fischer
15126b1108 Bug 5861: items.stocknumber not saved correctly
The field was missing in Items.pm.
It will still act strangely if you enter a stocknumber that
already exists in the database. (see Bug 5860)
Adding/editing items with stocknumbers you have not used before
should work as expected.

[F. Demians] Was able to reproduce the bug on an UNIMARC DB. The patch works.

Signed-off-by: Frédéric Demians <f.demians@tamil.fr>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-17 14:36:26 +13:00
Chris Cormack
6f4e7fc971 Merge remote branch 'kc/new/bug_3326' into kcmaster 2011-03-17 09:22:46 +13:00
Jared Camins-Esakov
e18ddca9d4 Follow up for Bug 3326: previous fix broke searches when
This fix ensures that searches will still work when -x is not used when
reindexing Zebra.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Magnus Enger <magnus@bibkat.no>
Signed-off-by: Jane Wagner <jwagner@ptfs.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-17 09:21:54 +13:00
ruth@bywatersolutions.com
784b9df4f2 Bug 3595 (partial): Items seen at checkin are not filling holds well
In Liz's second comment on this bug, she points out that local-only
holds (and also no-holds) items are being used to fill the first hold
in the queue, no matter where located, transitting if necessary.  If
all the items on a biblio are set to no-holds types, this problem
would never arise, as no holds could be *placed*.  But if you have
one or more unlimitedor local-hold items, then holds are getting
filled by the first item to cross a scanner, no matter what.

This patch will check during C4::Reserves::CheckReserves to make sure
that the hold being handed back to AddReturn is actually fillable by
the item just scanned.  One caveat:  If CircControl is set to "the library
you are logged in at", this will cause items checked in at
other-than-their-home-library to fill local holds at the library where
scanned.  This is, however, an edge case!

Signed-off-by: Liz Rea <lrea@nekls.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-16 20:53:20 +13:00
Jared Camins-Esakov
d52f3680f4 Bug 3326: Work around Zebra's handling of &amp; entities
When using XSLT mode, the OPAC results display will show "&amp;" instead of "&"
when Zebra is indexing in XML mode. This patch works around this by replacing
"&amp;" with "&" and then extends the previous fix to apply to all occurrences
of "& " instead of just the first.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-16 20:48:50 +13:00
Chris Cormack
c8c62e2fa1 Merge remote branch 'kc/new/bug_5595' into kcmaster 2011-03-13 20:31:38 +13:00
Chris Cormack
8215cc8bad Bug 5595 : Fixing a security glitch (please always use placeholders or
dbh->quote and fixing the tests
2011-03-13 20:30:13 +13:00
Jared Camins-Esakov
4bc293c3aa Bug 5810: Subject tracings search complete subfields
This patch adds the syspref TraceCompleteSubfields. When TraceCompleteSubfields
is set to "force," clicking on links in non-authority controlled subject
tracings will only find other records where the entire subfields match. Leaving
it at "don't force" keeps the current behavior of doing a keyword search of the
subject indexes.

This patch implements complete-subfield subject tracings in MARC21 XSLTs (OPAC
and Staff) and all Normal mode interfaces. UNIMARC XSLTs have not been updated.

This patch also adds the syspref UseAuthoritiesForTracings. When set to "Do not"
tracings in the XSLT detail displays will never generate links using authority
numbers, but rather use the heading strings (NB: the tracings currently use only
subfield 'a' for generating links).

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Jane Wagner <jwagner@ptfs.com>
Signed-off-by: Jared Camins-Esakov <jcamins@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-13 15:02:59 +13:00
326222e3f1 Bug 4072 Lost items aren't hidden on OPAC result page
When hidelostitems system preference is enabled, lost items are hidden on OPAC
detail page but are shown on result page. This patch modify MARC21/UNIMARC XSL
in order to take into account hidelostitems syspref on OPAC result page.

Signed-off-by: Liz Rea <lrea@nekls.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-12 12:52:57 +13:00
Stéphane Delaune
0ee0cc18b3 Bug 5595: (MT #5757)adding additional attributes support on patrons's search
Restores ability to search on extended borrower attributes that are configured to be searchable

Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-12 12:46:05 +13:00
Colin Campbell
0d082204ea Bug5063: C4::Bookseller Changes
Merge unfao changes to C4::Bookseller
Enable warnings in Bookseller.pm
Some cleanups in Bookseller code
Do not export everything by default
Display vendors more rationally
    Was displaying by id make it name as the searchstring is for all
    embedded substrings
Have removed "if mysql" logic as we want to deal with this by
    abstracting the DB interaction and it makes cleaner code until then

Sponsered by UN FAO, Rome

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-12 08:42:26 +13:00
Frédérick Capovilla
b39466c965 Bug 5703: Hide the $9 subfield (linked authid) when showing series for a MARC record in normal view.
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-12 08:22:15 +13:00
d163e7e578 Bug 5830 Using XSLT on OPAC Lists page
On OPAC Lists page (opac-shelves.pl), biblio records are now displayed
accordingly to OPACXSLTResultsDisplay system preference.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-08 08:53:56 +13:00
04f78e57c3 bug 5783: follow-up - fix logging of modifications
Fix so that modifying an authority record is not logged
as both an ADD and a MODIFY.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-07 15:04:20 +13:00
8af91c079a bug 5783: Authorities edit logging
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-07 15:04:12 +13:00
Reed Wade
c84dad3b18 bug 5693 - mc-ccode parens fix
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-06 08:35:29 +13:00
0ba9aab76b Fix for Bug 4290 - search for author in repository
Reimplementation of Nahuel's patch from 2010-03-02

Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-06 08:22:06 +13:00
Frédérick Capovilla
dbe3780fc0 Bug 3341: Fines calculation erroneous when a repeatable holiday is added
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-06 08:15:44 +13:00
Robin Sheat
87ec412648 Bug 4852 - rewrite the query to include limits if using ccl=
Signed-off-by: Jared Camins-Esakov <jcamins@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-04 12:58:52 +13:00
Jared Camins-Esakov
83ab549724 Bug 5811: Add sysprefs to control overriding fines
This patch adds two sysprefs to allow libraries more fine-grained control over
when fines can and can't be overridden. The two sysprefs are:
* AllFinesNeedOverride - when this syspref is set to "Require" (default) any
    fine will require a staffmember to override the fine in order to check out a
    book.  When set to "Don't require," fines below noissuescharge will not need
    any override.
* AllowFineOverride - when this syspref is set to "Allow," staff will be able to
    override fines that are above noissuescharge. When set to "Don't allow"
    (default), staff will not be able to check out items to patrons with fines
    greater than noissuescharge.

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-03-04 09:33:18 +13:00
439d2224e1 Bug 1953 - Follow up fix on security patch
Fixing: Undefined subroutine prepare called on line 722.

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-28 21:34:40 +13:00
MJ Ray
74cdd57ecb bug 1953: Reduce risk of possible tainted supplierid call to C4::Serials::GetLateIssues
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-26 20:02:25 +13:00
Chris Nighswonger
b0f60221f4 Security Bugfix: Bug 1953 Adding Placeholders to SQL To Avoid Potential Injection Attacks
This patch addresses both security issues mentioned in the summary of the report
submitted by Frère Sébastien Marie included below.

---------------------------
The problem is here: 'C4/AuthoritiesMarc.pm' in the function 'DelAuthority':
The argument $authid is included directly (not via statement) in the SQL.

For the exploit of this problem, you can use 'authorities/authorities-home.pl'
with authid on the URL and op=delete (something like
"authorities/authorities-home.pl?op=delete&authid=xxx").

This should successfully call DelAuthority, without authentification...
(DelAuthority is call BEFORE get_template_and_user, so before authentification
[This should be an issue also...]).

Please note that the problem isn't only that anyone can delete an authority of
this choose, it is more general: with "authid=1%20or%1=1" (after inclusion sql
will be like: "delete from auth_header where authid=1 or 1=1") you delete all
authorities ; with "authid=1;delete%20from%xxx" it is "delete from auth_header
where authid=1;delete from xxx" and so delete what you want...

SQL-INJECTION is very permissive: you can redirect the output in a file (with
some MySQL function), so write thea file of you choose in the server, in order
to create a backdoor, and compromise the server.

Signed-off-by: Frère Sébastien Marie <semarie-koha@latrappe.fr>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-25 07:08:39 +13:00
Chris Cormack
92f52dc850 Merge remote branch 'kc/new/bug_5682' into kcmaster 2011-02-18 10:42:28 +13:00
Paul Poulain
4117b293f6 NormalizeString POD Fixing and variable renaming
POD was mistakenly telling that NFD was supposed to be the default
    encoding.  In fact, it is not, it is NFC.
    So the variable $nfc to change to the not default encoding was misleading.
    Renaming it into $nfd

(written by hdl)

Refactored by Chris Cormack

Signed-off-by: Davi <davi@gnu.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-18 10:39:56 +13:00
Chris Cormack
6a37aaf010 Merge remote branch 'kc/new/enh/bug_5462' into kcmaster 2011-02-17 08:56:43 +13:00
Ian Walls
b2c56dfe62 Follow up on Bug 5462: fixing variable names breaks messaging preference form
The messaging prefs form was hardcoded to use 'transport-$transport_type', rather than
'transport_$transport_type'.  The result was an uneditable messaging preferences form.

Signed-off-by: Nicole Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-17 08:50:26 +13:00
50c0ae09a1 Partial fix for Bug 5745, Overdues with fines report not showing titles
- Adding title, subtitle, and author to output
- Reworking display of shelving location selection

Patch does not address the contents of 'overdue status' and 'notified by'

Signed-off-by: Nicole Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-15 10:12:36 +13:00
311d051f77 bug 4306: respect item-level_itypes when displaying item label batches
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Salvador Zaragoza Rubio <salvazm@masmedios.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-14 10:09:05 +13:00
bfec5ef4c1 Bug 5727 Warning in log due to XSLT.pm
XSLT.pm add few syspref to MARCXML record send to be transformed by XSLT. If
one of those syspref doesn't exist, it generated a warning.

Signed-off-by: Colin Campbell <colin.campbell@ptfs-europe.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-14 09:46:20 +13:00
Colin Campbell
1a0b6ded11 Bug 4263: Remove duplicated lines from C4::Items
Merge of bug 4263 duplicates the bulk of
ModItemFromMarc causing compile time errors

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-14 09:05:36 +13:00
Chris Cormack
083fd5776a Merge remote branch 'kc/new/enh/bug_5462' into kcmaster 2011-02-08 21:05:14 +13:00
6709d0e4f7 Follow-up correction for Bug 5462 - Fix variable names for template::toolkit
Previous commit modified checks for the item-level_itypes preference
to look for a different variable name but didn't update where that
variable is set in Auth.pm.

Other scripts perform a direct check of item-level_itypes and must
continue to use the name of the variable in the database.

Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-08 21:03:28 +13:00
Chris Cormack
a4cc394508 Bug 5691 - Delete all items respects independentbranches system preferences
Squashed commit of the following:

commit 66cdb8804136803a3f626d183c8f192f61f3c7b1
Author: Chris Cormack <chrisc@catalyst.net.nz>
Date:   Fri Feb 4 12:55:10 2011 +1300

    Bug 5691: Updating copyright statement

commit 79ef6c269afc9c644c51709a7657542a0fc6d7d6
Author: Chris Cormack <chrisc@catalyst.net.nz>
Date:   Fri Feb 4 12:52:13 2011 +1300

    Bug 5691 - Fixing a syntax error and tidying up some formatting

commit a66485dba113c05ed51a3b4ff19f788e335aa1f6
Author: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
Date:   Tue Oct 5 17:23:55 2010 +0200

    (MT #1365) Delete all items

    Using DelItemCheck in cataloguing/additem.pl
    when deleting all items

commit fe845fd48ab22ff82ad6d8971c468c327b49f3c4
Author: Christophe Croullebois <christophe.croullebois@biblibre.com>
Date:   Wed Sep 22 11:39:28 2010 +0200

    (MT #1365) Delete all items

    Now if IndependantBranches is on and a user try to delete all items, only the items of his branch will be deleted.
    A message explain this fact.

Signed-off-by: Chris Nighswonger <cnighswonger@foundations.edu>

Followup: (MT #1365) Fixing up the English idiom
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-05 07:41:29 +13:00
Henri-Damien LAURENT
60dd25b5c2 Bug 5690
MT3947: items.timestamp were not updated on edition

If items.timestamp is used in the framework and hidden
the fact that it is NOT deleted before update is done would input the previous timestamp,
which is not the desired behaviour.

Signed-off-by: Chris Nighswonger <cnighswonger@foundations.edu>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-04 13:22:02 +13:00
Chris Cormack
e29aca325d Fixing a syntax error, that snuck in with a merge 2011-02-03 22:52:36 +13:00
f1f36a0c94 Bug 3212 Force leader 9 position to 'a' for new biblios
When Creating a new biblio record, if the cataloguer doesn't use the leader
plugin, a biblio record can be saved with a leader not containing a 'a' in 9
position. If the biblio contains UTF-8 characters, its decoding can fail.

This issue applies to MARC-21 not UNIMARC.

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-03 22:15:25 +13:00
Ian Walls
f692123bf1 Bug 2341: items marked 'on order' not reserveable from search results
Items created as part of the acquisitions process, and assigned the temporary notforloan value of -1,
cannot be placed on hold from the search results in either the OPAC or staff client (the link is missing).

This patch changes the evaluation of items->notforloan from a Boolean (if $items->{notforloan}) to a comparison
(if $items->{notforloan} > 0).  Any notforloan status with a negative value can therefore be reserved.

Signed-off-by: Nicole Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-03 22:00:01 +13:00
Chris Cormack
aa398ed055 Bug: 4263 - Repeatable subfields in items
Squashed commit of the following:

commit f441094d5095d165eab18340c983a831cce8f6e0
Author: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
Date:   Mon Jul 5 20:33:23 2010 +0200

    bug4263 followup : Can't blank subfields

    Previous bug4263 reintroduced bug 2466: fix clearing item field
    This keeps bug4263 followup to be assigned (donot blank dateaccessioned)
    But also allow to blank item subfields.

commit 92889b766c41b48bdd0e3a33ca4b183b1e259805
Author: Nahuel ANGELINETTI <nahuel.angelinetti@biblibre.com>
Date:   Fri Apr 23 13:54:30 2010 +0200

    (bug #4263) dateaccessionned is cleaned on item modification

    Every item modification, date accessionned is cleaned, if there is no modification made, we must'nt reset to "undef" the value.

commit 5abb2db16b2564d32e84b7cc680acbc301d73179
Author: Nahuel ANGELINETTI <nahuel.angelinetti@biblibre.com>
Date:   Tue Mar 2 09:57:33 2010 +0100

    (bug #4263) fix the edition of items with repeatable subfields

    The subfield management in item level is broken, fields are concatenated in one field, and if the librarian edit it, the values are not selected.
    This big patch fix three things:
     1) saving fields that are stocked in SQL(using koha2marc mapping) are now well cut and separated in _REAL_ subfields
     2) loading records with repeatable subfields are now well returned
     3) Editing items with repeatable fields works well

Signed-off-by: Chris Nighswonger <cnighswonger@foundations.edu>

Bug 4263 Removing extranious block of code
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-02-03 16:08:08 +13:00