Joe Atzberger [Wed, 25 Jun 2008 23:21:28 +0000 (18:21 -0500)]
Script to correct faulty statistics table entries.
This is the first iteration of this script, likely to be expanded
if other mappings are determined. Currently it populates the
itemtype for all statistics that have itemnumbers and then pulls
borrownumbers from old_issues (or issues). This has the benign
side effect of ignoring whether or not itemtype was a different
value at the time of the transaction.
It then tries to populate null borrowernumbers using a fairly
conservative approach, only where exactly one match exists, else warns.
The process of updating statistics is needlessly complex based on the
lack of a reliable primary key. ALL such tables should have a numerical
primary key. The impression that the timestamp and any other fields
are enough to combine for a "unique enough" key is wrong. For example,
running SIP tests will add multiple transactions that might share
borrowernumber, itemnumber and timestamp. Key uniqueness should be
logically inherent, not de facto.
Andrew Moore [Mon, 23 Jun 2008 17:55:31 +0000 (12:55 -0500)]
bug: 2269 - adding a perltidyrc file
This patch adds xt/perltidyrc, a suggested perltidy configuration file.
It's in the xt directory because I'd like to eventually tie it in with Test::Perl::Critic
to run automated tests on tidyness and other Perl::Critic policies. That stuff belongs in
the xt directory since it's testing for developers use only.
I have only turned on a few directives based on the suggestions by MJ, historical discussion on
the mailing lists, and what I was told when I started contributing to koha. There are many other
directives in this file that are commented out. They are supposed to represent the defaults and
can be adjusted in the future if desired.
Use of this file is encouraged, but not required. It would be really nice if you could at least run
it on new files that you contribute. I would recommend not running it on files that are already
part of koha without writing some tests for those files and discussing your intentions to reformat
entire files in bulk.
Andrew Moore [Mon, 23 Jun 2008 17:35:58 +0000 (12:35 -0500)]
bug: 2272 - remove warning from C4::Koha::getitemtypeimagedir
I changed getitemtypeimagedir to set a default on its argument so that it would not complain if not passed 'opac'.
I improved the documentation on the method.
I edited the t/icondirecotries.t test script to explicitly pass an argument to both getitemtypeimagedir calls.
- and I adjusted one line of whitespace to make similar things look similar
I added a test module for C4::Koha
I added a test module for C4::Koha::getitemtypeimagedir.
ILS::Patron is where most of the intelligence for SIP's representation
is lodged. Currently there is difficulty with C4::Members functions.
GetMemberDetails is required for the needed flags, but it returns
empty structure on bad barcodes, where it should be undef.
Galen Charlton [Wed, 25 Jun 2008 16:30:03 +0000 (11:30 -0500)]
bug 2254 [3/3]: add authority type check
Added a test to the MARC framework checks to
verify that all authority types used in a framework
are defined.
Documentation changes: possible new screenshots
and text to describe the new test.
NOTE: This patch adds strings to the checkmarc template, and thus
violates the string freeze for 3.0. I'm submitting anyway
because 2254 is a blocker, but if no exception is made,
it is safe to not apply this patch for 3.0.
Corrected two errors found in the authority types used
in the MARC21 frameworks:
* one subfield that used "Meeting Name" instead of "MEETI_NAME"
* various subfields that used "CORP0_NAME" instead of "CORPO_NAME"
The biggest visible consequence of this change is that corporate
name headings (110, 610, 710, 810, etc.) will now link correctly
to their authority records.
In addition, brought the fr-FR MARC21 framework scripts up-to-date
with respect to the changes made to the English versions.
Galen Charlton [Wed, 25 Jun 2008 16:30:01 +0000 (11:30 -0500)]
bug 2254 [1/3]: fixed GetAuthType(); avoid crash
Improved C4::AuthoritiesMarc::GetAuthType() so that
it returns either a hashref (if the authority type exists)
or undef (if it does not exist). The same
accessor should not be used to either return a single
value or all values of a settings list. Note that
all existing clients of GetAuthType are expecting
either a single hashref or undef; none of them
expected the arrayref that could be returned by
the previous version of the accessor.
When BiblioAddsAuthorities is ON, addbiblio.pl
now checks the return value of GetAuthType and
no longer crashes as follows if the MARC framework
specifies an invalid authority type for a given subfield:
Can't coerce array into hash at .../cataloging/addbiblio.pl line 738.
Galen Charlton [Tue, 24 Jun 2008 22:12:23 +0000 (17:12 -0500)]
bug 2206: always have $9 for headings fields
If a field can be linked to an authority record (i.e.,
an authtypecode is defined for subfield $a), always
include the subfield $9 in a (readonly) input element even
if it is marked hidden per the MARC framework.
Prior to this patch, a $9 marked hidden per the framework
would not be included in the form, causing the authority record
number link to not be added when choosing a heading from the authority
finder. In other words, with BiblioAddsAuthorities OFF,
any authorized headings in bibs added via the MARC editor
would not have the subfield $9, and thus would appear
to not be used by any bibs.
Note that subfield $9 is set to be readonly, as changing the
authority number link does not currently change the
heading stored in the bib record.
Galen Charlton [Tue, 24 Jun 2008 15:21:12 +0000 (10:21 -0500)]
clean up old-style calls to GetMemberDetails
GetMemberDetails() returns only one hashref now,
not two. In all cases where the caller was
expecting two output values, the $flags return
was ignored anyway.
Galen Charlton [Mon, 23 Jun 2008 20:33:32 +0000 (15:33 -0500)]
bug 2252: item-level hold not waiting until priority = 0
When returning an item that has an item-level hold on it,
CheckReserves() will not consider it waiting unless the
priority has been set to 0 (i.e., the item has specifically
been marked as filling the request.)
Galen Charlton [Mon, 23 Jun 2008 16:15:01 +0000 (11:15 -0500)]
bug 2273: not-for-loan item should not fill hold request
If an item is not for loan (i.e., items.notforloan is not null),
do not use it to fill a title-level hold request when
item is checked in. Prior to this patch, a notforloan item
could fill a request - CheckReserves() was checking only
the item's item type's not for loan flag.
Galen Charlton [Mon, 23 Jun 2008 15:01:33 +0000 (10:01 -0500)]
new automated test for template translatability
This test verifies that the English OPAC and staff templates
can be processed by the string extractor (tmpl_process3.pl)
without error. If a template contains a parsing error
(at least as far as tmpl_process3.pl is concerned), it may
not be correctly converted when a language translation
is applied.
Galen Charlton [Fri, 20 Jun 2008 22:37:05 +0000 (17:37 -0500)]
bug 2248 [2/2]: import item status display in search results
The in transit status now displays as such in the
OPAC search results. In the non-XSLT version, the status
is checked only for bibs having 20 or fewer items to avoid
extra hits on the database during result set presentation.
In the XSLT version, all items are checked.
Note that because an item's transfer status is not
stored in the MARC record, the transfer status
has no effect when limiting a search by item
availability. For a future version, the transit status
should be added to the Zebra index.
This prevents the following log entries:
error EXPR:at pos 42: non-initialized variable OPACViewOthersSuggestions
EXPR must NOT be used unless the author can guarantee ALL names referenced
will be defined at the BEGINNING of TMPL execution. That suggests that in
.inc files, only variables populated by get_template... are valid, since
the author cannot guarantee what other templates might include the file.
Joe Atzberger [Fri, 20 Jun 2008 19:36:29 +0000 (14:36 -0500)]
Remove EXPRs. Also added all jacket images to Overdue tab.
Standardized table layout with colspan=2 for Title header,
the first being the icon or jacket image. Discovered a bug
when I fixed the "toggle/highlight" code to work (using loop
context var __odd__), namely that the highlight styling overrides
the red overdue styling. Commented out that conditional with a
FIXME.
Andrew Moore [Fri, 20 Jun 2008 19:58:42 +0000 (14:58 -0500)]
bug: 2176 - database fix
I had the create table statements in the wrong order, so they would not apply cleanly.
This is an update to database version 091, and does not take a new number.
Galen Charlton [Fri, 20 Jun 2008 18:59:33 +0000 (13:59 -0500)]
bug 1710 and 1739: availability for item-level holds
Fixed rules for determining whether an item is
available for an item-level hold request. Create a
new function in C4::Reserves, IsAvailableForItemRequest(),
that checks whether an item is potentially available for
an item-level hold request.
An item is considered available if:
* it is not lost AND,
* it is not marked not for loan AND,
* it is not withdrawn AND,
* it is not damaged (unless the AllowHoldsOnDamagedItems syspref is ON), AND
* it is not on loan (unless the AllowOnShelfHolds syspref is ON)
Preventing a hold request on withdrawn items is bug 1739, as is
the new preference on whether to allow holds on damaged items.
Removing the condition that an item cannot be requested if
it has already been requested by another patron is the topic of bug 1710.
Note that this patch does not change the behavior where if
independent branches is on and the canreservefromotherbranches
syspref is off, a staff operator is prevented from placing
an item-level hold request on an item from a different branch.
Andrew Moore [Fri, 20 Jun 2008 18:13:44 +0000 (13:13 -0500)]
bug 2176: adding new system preference to French sysprefs script.
I forot to add the new EnhancedMessagingPreferences system preference to the French SQL. I
hope I added it in the right place. The 'explanation' is untranslated.
Andrew Moore [Fri, 20 Jun 2008 18:02:04 +0000 (13:02 -0500)]
Bug 2176: adding SMS::Send to list of dependencies
SMS::Send is used by the new enhanced messaging stuff. It's a pure-perl module that
provides a consistent interface to SMS sending gateways. There are alredy
a handful of driver modules for gateways on CPAN, and adding one for a new gateway
is possible.
Andrew Moore [Fri, 20 Jun 2008 18:02:03 +0000 (13:02 -0500)]
Adding an automated test for POD correctness.
This test script checks all perl files in the C4 directory for POD correctness. It is
completely optional, and as of yet, is not actually run when you run the test suite.
It's just a handy way to check our POD documentation, which should be correct before
we release code.
This script can be invoked with 'prove -v xt/author/podcorrectness.t'
Additionally, this is the first test in the 'xt' directory. Current perl testing practices
have reserved the 'xt' directory for tests that should be run by the code authors before
release. See:
http://perl-qa.hexten.net/wiki/index.php/Oslo_QA_Hackathon_2008_:Achievements#Testing_Best_Practices
for more information.
Andrew Moore [Fri, 20 Jun 2008 18:02:00 +0000 (13:02 -0500)]
Bug 2176 (3/5): adding methods to manage message_queue, new advance_notices.pl, new C4::SMS module
I've added methods to to C4::Letters to manage the database table
message_queue. This will let us keep track of messages sent
via email, sms, and rss to patrons. That way, we can show the history,
deal with failures, and reconstruct an RSS feed when needed.
misc/cronjobs/overduenotics.pl has been added. It prepares advance notices
and item due notices and stages messages to be sent in the message_queue
table.
C4::Overdues::Getoverdues now takes two optional arguments to tell it how
old of overdues to fetch.
Also, a C4::Circualtion::getUpcomingDueIssues method was added that
advance_notices.pl uses.
misc/cronjobs/process_message_queue.pl has been added. It sends the email
or SMS messages out of the message queue.
The C4::SMS module didn't work at all, and it has been rebuilt to use
an external perl module from CPAN, SMS::Send.
Andrew Moore [Fri, 20 Jun 2008 18:01:58 +0000 (13:01 -0500)]
refactor C4::Auth::get_template_and_user for readability
I'd like to add another template parameter to geta_template_and user, but found it diffiult due to unreadability.
I stanadardized the whitespace in a portion of get_template_and_user,
alphabetized the parameters, finding a duplicate in one spot,
and then extracted the common template parameters that are set the same
regardless of template type.
Andrew Moore [Fri, 20 Jun 2008 15:58:31 +0000 (10:58 -0500)]
Bug 2176 (1/5): database update: adding message_queue table and tables to hold patron messaging preferences
Updates to kohastructure.sql and updatedatabase.pl:
- add new message_queue table
- add message_transport_types table
- add message_attributes table
- add message_transports table
- add borrower_message_preferences table
- add borrower_message_transport_preferences table
- adding EnhancedMessagingPreferenes to sysprefs SQL.
Added column to borrowers table to hold SMS Alert Number.
Added some more sample notices (letters) that will be sent for patron alerts
added some sample SQL to configure messaging.
kohabug 1875 Public lists/virtualshelves are displayed and viewable whether a patron is logged in or not.
NOTE: This patch introduces code which generates an anonymous session when a patron first browses to OPAC.
This anonymous session contains a minimal amount of information including the results of a query to discover
all public lists/shevles. When the user logs in, the anonymous session is cleared and a new session created
for that user.
kohabug 1875 - fix error when editing a patron record
C4::Auth::checkauth was not distinguishing between a
'userid' input from an OPAC or staff login form and
a 'userid' input from (e.g.,) the patron editor.
Consequently, adding or editing a patron record would
result in Koha trying to log in as the new patron.
To resolve this, added a hidden input to all login
forms, 'koha_login_context', to explicitly signal
when a login is occurring. The value of this input
can be 'opac', 'intranet', or 'sco' - the value is
not used at present, but may be of use later.
C4::Auth - added debug flag to two warns
kohabug 1875 - create anonymous sessions only for OPAC
No need to create an anonymous session for the intranet.
set yuipath correct for login pages
When preparing the template parameters for a login form,
C4::Auth was overriding the value of yuipath set
by C4::Output::gettemplate(), thus causing 404 errors
if the 'yuipath' syspref was set to 'local'.
During an anonymous OPAC session, the $loggedinuser variable
is not set. As the undefined value causes warns in
C4::VirtualShelves::Page::shelfpage, for the purpose of the
shelfpage call the loggedinuser is set to -1, which should
not correspond to any real borrower number.
This is admittedly a hack to avoid digging through all
of C4::VirtualShelves to deal with lists viewed anonymously.
kohabug 1875 Refactoring of &ModShelf to avoid overwriting list owner needlessly
kohabug 1875 Avoid warning if can't find owner of shelf
Since virtualshelves.owner is not a true FK of borrowersnumber.number,
set ownername to '' if can't find the patron
Galen Charlton [Fri, 20 Jun 2008 14:35:42 +0000 (09:35 -0500)]
bug 2265: fix problem when cloning MARC field
Correctly set indicators when cloning a field
in the MARC editor. Prior this fix, a cloned
field would not be saved. Bug introduced in
patch for bug 2207.
Galen Charlton [Fri, 20 Jun 2008 13:11:22 +0000 (08:11 -0500)]
bug 2000 - remove admin/issuingrules.pl
Patch to remove issuingrules.pl in favor of
using smart-rules.pl to manage loan and fine
rules. Several reasons for this:
* issuingrules.pl's matrix could grow rather large
if the library has a large number of item types
and patron categories
* successfully entering rules via issuingrules.pl
requires placing commas within input fields
* a sparse circulation policy matrix takes the
same amount of screen space as one that uses
rules for a lot of specific patron category/item type
combinations.
* having two administrative interfaces to the same
policy settings could be confusing.
* UI design of smart-rules.pl better lends itself
to adding more policy setting attributes to the
rules matrix.
Galen Charlton [Fri, 20 Jun 2008 13:11:21 +0000 (08:11 -0500)]
bug 2000 - removed finesrules.pl
Removed the separate admin/finesrules.pl script
to set the fines policy matrix: since admin/finesrules.pl
and admin/issuingrules.pl both touch issuingrules.pl, creating
a specific fine rule could silently override a default issuing
rule and prevent items from being checked out.
Circulation policy matrix settings for fines are now
handled in admin/smart-rules.pl
Galen Charlton [Fri, 20 Jun 2008 13:11:20 +0000 (08:11 -0500)]
bug 2000 - changes to TooMany()
The C4::Circulation::TooMany() function, which determines
if a patron is at the maximum loan limit, has been
changed to work as follows:
1. Checks the issuing rule that would apply to the
prospective loan to see if a loan limit (maxissueqty)
has been set.
2. Counts the number of loans that the patron has
that would fall under that loan rule.
IMPORTANT: that means that if a specific loan rule
exists for the branch, patron category, and item type
in question, *only* that rule's maxissueqty will be
checked here - it will not go on to check whether
a less specific rule has a lower loan limit.
3. If adding one more loan would bring that count
over the limit, returns a "too many" error.
4. If the loan hasn't exceeded a specific limit, checks
whether a branch/patron category circ rule has
specified a loan limit, regardless of item type.
If the patron has already reached *that* limit, returns
the "too many" error.