[open-ils-commits] [GIT] Evergreen ILS branch tags/rel_2_2_3 created. 97729fd25fc3a1c3b023c52306576961e6212aa4
Evergreen Git
git at git.evergreen-ils.org
Thu Nov 8 13:32:56 EST 2012
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, tags/rel_2_2_3 has been created
at 97729fd25fc3a1c3b023c52306576961e6212aa4 (commit)
- Log -----------------------------------------------------------------
commit 97729fd25fc3a1c3b023c52306576961e6212aa4
Author: Bill Erickson <berick at esilibrary.com>
Date: Tue Nov 6 16:16:36 2012 -0500
Bumping version numbers, adding Upgrade Script and Changelog
Signed-off-by: Bill Erickson <berick at esilibrary.com>
diff --git a/ChangeLog b/ChangeLog
index 1f72b2c..6caaf05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,972 @@
-Evergreen doesn't keep a GNU-style ChangeLog except in release tarballs.
-Those seeking a change log are encouraged to run 'git log -v', or read
-it online at: http://git.evergreen-ils.org/?p=Evergreen.git;a=log
+commit 845e482ab46a2b2ef1c6bf9404ef633b8525e5f2
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Fri Nov 2 15:28:27 2012 -0400
+
+ CStoreEditor auto-activity log redaction
+
+ CStoreEditor logs all update calls to the activity log as key/value
+ pairs on the updated object. Avoid loging key/value pairs for objects
+ when the API call being relayed by CStoreEditor is on the list of
+ log-protect API calls. Instead, log "**DETAILS REDACTED**".
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+20 3 Open-ILS/src/perlmods/lib/OpenILS/Utils/CStoreEditor.pm
+
+commit b230c152544b372d57661f091d8a43568833eba0
+Author: Mike Rylander <mrylander at gmail.com>
+Date: Wed Oct 10 17:36:52 2012 -0400
+
+ Make it possible to suppress IDL fields
+
+ Some clients of external services, particularly pcrud and reporter-store,
+ need to be able to access tables that contain columns we'd rather restrict.
+ For instance, the passwd field on actor.usr.
+
+ To effect this feature we provide a blacklist attribute for fields, called
+ suppress_controller, which works in the same way as the class controller
+ attribute but names controllers not allowed to use the field. When the field
+ is explicitly named in a query (fieldmapper select block or json_query) an
+ error is thrown, and suppressed fields are ingored in general fieldmapper
+ search/retreive requests.
+
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+1 1 Open-ILS/examples/fm_IDL.xml
+1 0 Open-ILS/examples/fm_IDL.xsd
+7 0 Open-ILS/src/c-apps/oils_idl-core.c
+27 2 Open-ILS/src/c-apps/oils_sql.c
+3 0 Open-ILS/web/reports/xul/source-browse.js
+3 0 Open-ILS/web/reports/xul/source-setup.js
+
+commit 245c4faa7a22f9c67a3a738913df6fd5df15a06f
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Wed Oct 31 09:00:19 2012 -0400
+
+ Add sample log redaction config to EG opensrf_core
+
+ Redact parameter logging for the following API calls:
+
+ Login:
+ open-ils.auth.authenticate.verify
+ open-ils.auth.authenticate.complete
+ open-ils.auth_proxy.login
+
+ User updates:
+ open-ils.actor.user.password
+ open-ils.actor.user.username
+ open-ils.actor.user.email
+ open-ils.actor.patron.update
+ open-ils.cstore.direct.actor.user.create
+ open-ils.cstore.direct.actor.user.update
+ open-ils.cstore.direct.actor.user.delete
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+18 0 Open-ILS/examples/opensrf_core.xml.example
+
+commit 650caa116c210bb5b8c1903239b27e04ab5f6d30
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Tue Nov 6 09:48:51 2012 -0500
+
+ Document log redaction XML for opensrf_core.xml (2.2)
+
+ Based on Bill Erickson's original text.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+28 1 docs/RELEASE_NOTES_2_2.txt
+
+commit 92f9a371dffad6a741dd5e6abc6ab8ba65a82713
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Wed Oct 10 17:26:06 2012 -0400
+
+ Sample Apache error syslog captures stderr
+
+ Not all STDERR output and not all $req->log->foo() output makes it to
+ the Apache error log when using the 'ErrorLog syslog:local7'
+ configuration directive. This changes the sample config to match the
+ CustomLog config so that all output is captured and redirected to
+ syslog.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+1 1 Open-ILS/examples/apache/eg.conf
+
+commit ea7ecb2dc7bdb12582aac55ca7e92a416592cecd
+Author: Mark Cooper <markchristophercooper at gmail.com>
+Date: Mon Oct 22 22:01:22 2012 -0700
+
+ LP#1066629: Acq: Receiving an item should not change the status to "In Process" in many cases
+
+ As suggested, when received, restrict copy status update for lineitem copies to only those that were on-order. Otherwise copies may have the status set to 'In Process' inappropriately.
+
+ Signed-off-by: Mark Cooper <markchristophercooper at gmail.com>
+ Signed-off-by: Kathy Lussier <klussier at masslnc.org>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+
+commit 2d83263fcaadde28e4d0ed511b09154653a8ae84
+Author: Mark Cooper <markchristophercooper at gmail.com>
+Date: Tue Oct 9 21:04:32 2012 -0700
+
+ LP#826917: Marc editor, CTRL+F6, F7, F8 no longer working on 2.0+
+
+ Updated marcedit.js to recognize F6/7/8 according to codes at:
+ http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes.
+ Did not modify behavior (so input focus is not adjusted post record load).
+
+ Signed-off-by: Mark Cooper <markchristophercooper at gmail.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+6 6 Open-ILS/xul/staff_client/server/cat/marcedit.js
+
+commit 5cf254fb3e63fb3e700cbfc743fcf5270c8e4d0c
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Thu Oct 18 14:54:08 2012 -0400
+
+ Rollback cstore transaction before bbag record load
+
+ To avoid timeouts, which results in transaction rollbacks, preemptively
+ roll back the bookbag fetching cstore transaction before we retrieve
+ what could be a very large list of bookbag records data.
+
+ Conflicts:
+
+ Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+
+9 0 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
+
+commit 94051cef50fe8a7248ba305db60e50ae27384c17
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Mon Oct 8 22:30:32 2012 -0400
+
+ Enable maintain_control_number() to handle new OCLCnums
+
+ In July 2013, per LP# 1049171, OCLC will begin generating control
+ numbers beginning with the "on" prefix.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+ Conflicts:
+
+ Open-ILS/src/sql/Pg/002.schema.config.sql
+
+2 2 Open-ILS/src/sql/Pg/002.functions.config.sql
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+137 0 Open-ILS/src/sql/Pg/upgrade/0742.schema.maintain_control_number_oclc.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0742.schema.maintain_control_number_oclc.sql
+
+commit 30b6b8c483962ae24e47eb61450dc59534a3b896
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Thu Oct 11 16:00:36 2012 -0400
+
+ TPAC: Make facet display work as in JSPAC
+
+ Namely, this means:
+ - You see five facets per category by default, not ten.
+ - You can click a link to see all the facets in a category
+ (before this it was impossible to display more than ten).
+ - When viewing all the facets in a category, you can click a link
+ to reduce the list back to five.
+ - This number five I'm talking about is configurable in config.tt2.
+ - Alphabetical sorting of facets grouped by the same numbers of
+ results is restored.
+
+ This addresses LP #1065109.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Kathy Lussier <klussier at masslnc.org>
+
+ Conflicts:
+
+ Open-ILS/src/templates/opac/css/style.css.tt2
+
+8 2 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
+1 0 Open-ILS/src/templates/opac/parts/config.tt2
+31 27 Open-ILS/src/templates/opac/parts/result/facets.tt2
+6 3 Open-ILS/web/css/skin/default/opac/style.css
+
+commit dabeec45dc60f64e697ef661963f2245d519fc4f
+Author: Steven Callender <stevecallender at esilibrary.com>
+Date: Mon Oct 15 10:48:28 2012 -0400
+
+ Added a check for the money.collections_tracker table when using the open-ils.collections.users_of_interest.warning_penalty.retrieve API call.
+
+ Users that are already entered into the money.collections_tracker table should not be recalled from the open-ils.collections.users_of_interest.warning_penalty.retrieve API. This change will check for the existance of the user in the money.colletions_tracker table.
+
+ Signed-off-by: Steven Callender <stevecallender at esilibrary.com>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+10 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Collections.pm
+
+commit dd646c9a28910c4b5319d7ce149b5c955e52cec5
+Author: Galen Charlton <gmc at esilibrary.com>
+Date: Fri Oct 12 15:38:59 2012 -0400
+
+ trivial whitespace cleanup
+
+ Locally consistent, globally all over the map in this file.
+
+ Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm
+
+commit 97d8f94f37e2f57e2b4cf448c201bd3b996392c4
+Author: Chris Sharp <csharp at georgialibraries.org>
+Date: Thu Oct 11 19:33:16 2012 -0400
+
+ Adding a WHERE clause to prevent timeout of juv-to-adult function
+
+ Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+ Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+
+2 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm
+
+commit bda6a467b549e103f87efbfab9c87e94170bf5ec
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Thu Oct 11 01:43:01 2012 -0400
+
+ TPAC: Respect location visibility for result copies
+
+ Robert Soulliere noted in LP# 1062502 that copies in a location marked
+ "opac_visible = FALSE" were erroneously being displayed in search
+ results. This would occur if at least one copy on a record was in a
+ visible location, but other copies were in an invisible location.
+
+ This commit prevents copies in hidden locations from being displayed,
+ and also adds guards for the visibility of the copy status and the
+ circulation library.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Robert Soulliere <robert.soulliere at mohawkcollege.ca>
+
+5 0 Open-ILS/src/templates/opac/parts/misc_util.tt2
+
+commit 695745b457e8d89b070e9916986c0b3b34062bfe
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Thu Sep 27 14:51:44 2012 -0400
+
+ Serials: Don't force a Receive Unit Template in Alt Serials Control
+
+ Mary Llewellyn reported that she used to be able to use serials and
+ perform copy-less receiving without any value in this field.
+
+ The requirement that a value be set in the Receive Unit Template field
+ of serial distributions was added (by me) in 2.1 to the alternate serials
+ control interface, but is not enforced at lower levels.
+
+ I now believe that requiring a value here must have been a ham-handed
+ way to avoid a difficult-to-troubleshoot issue in copy-FUL receiving,
+ but copy-LESS serials receiving workflows indeed don't need this, so
+ this commit removes the requirement.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+0 1 Open-ILS/src/templates/serial/subscription/distribution.tt2
+
+commit 2ece1249b2aaa53e2b98e2707a41416ae1807b15
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Wed Sep 5 14:39:36 2012 -0400
+
+ Use current fiscal year for PO creation (API)
+
+ When creating a PO, if no fiscal_year is specified by the caller, use
+ the current fiscal year of the ordering agency. This change primarily
+ affects the Open-ILS/src/support-scripts/acq_order_reader.pl script (and
+ any other direct API callers) which does not offer the user a chance to
+ set the fiscal year manually.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+
+11 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+
+commit 0a3b116b2292601048a72351330427c694b12f2b
+Author: Mike Rylander <mrylander at gmail.com>
+Date: Thu Sep 20 15:17:36 2012 -0400
+
+ Fix autosuggest when in no-vis-check mode
+
+ When autosuggest is configured to avoid visiblity checking, it sends a
+ special org unit id of -1 to the database as a signal. However, the stored
+ procedure is expecting a NULL instead. This allows either by transforming
+ -1 to NULL within the stored procedure.
+
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+ Conflicts:
+
+ Open-ILS/src/sql/Pg/002.schema.config.sql
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+1 0 Open-ILS/src/sql/Pg/030.schema.metabib.sql
+134 0 Open-ILS/src/sql/Pg/upgrade/0740.schema.checkless_browse_fix.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0740.schema.checkless_browse_fix.sql
+
+commit 684c17f38e48c5d774dc0ce2136796c5533590e4
+Author: Mark Cooper <markchristophercooper at gmail.com>
+Date: Tue Oct 9 12:41:44 2012 -0700
+
+ LP#1007020: Using checkout, last activity shows as unset
+
+ Added usr_activity to $fields for flesh_user function.
+
+ Signed-off-by: Mark Cooper <markchristophercooper at gmail.com>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
+
+commit 4aa6ba3446d22881fc7761d7ab7773acbc35f6d3
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Thu Aug 30 00:21:01 2012 -0400
+
+ Remove C compiler warning for writeAuditInfo
+
+ The C compiler was throwing the following warning:
+
+ oils_sql.c: In function 'writeAuditInfo':
+ oils_sql.c:7244:1: warning: control reaches end of non-void function
+ [-Wreturn-type]
+
+ By shifting the "return 0" to the end of the function, outside of the if
+ statements, we can ensure that we always return an int value.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+
+1 1 Open-ILS/src/c-apps/oils_sql.c
+
+commit 235b2e93f2be65c6e490d6390bd6252f35345353
+Author: Mike Rylander <mrylander at gmail.com>
+Date: Mon Oct 8 14:12:49 2012 -0400
+
+ Be more strict about dates we generate
+
+ ISO-8601 dates must have a 4-character year component, however strftime does
+ not left-pad years to 4 characters when the century is one character long even
+ though the man page for strftime(3) suggests otherwise:
+
+ %F Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99)
+
+ This makes stricter ISO-8601 parsers, such as Perl's DateTime module, unhappy.
+ So, we'll do it ourselves using the glibc extensions available to strftime for
+ specifying a padding character and desired length.
+
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+4 4 Open-ILS/src/c-apps/oils_sql.c
+
+commit fb103be06ed98b1cca9dd1e4bfbe91377e978498
+Author: Dan Scott <dan at coffeecode.net>
+Date: Mon Oct 8 15:08:47 2012 -0400
+
+ Checkout: further validation of due date override
+
+ The check_past() function failed if given a date that was not strictly
+ in YYYY-mm-dd format; interestingly, a common transposition typo such
+ as "0212-10-20" results in "212-10-20" getting passed to check_past(),
+ and therefore generating an invalid date. Throw an exception in
+ check_past() rather than returning true, because we are not in fact
+ stating that the due date is in the past - and catch the exception and
+ flag the due date override box accordingly in the checkout screen.
+
+ We could bubble the exception up to the user, but hopefully highlighting
+ the checkout box as being in an invalid state will catch the attention
+ of the users.
+
+ [LFW: Slightly amended a comment in OpenILS/WWW/EGCatLoader/Util.pm]
+
+ Signed-off-by: Dan Scott <dan at coffeecode.net>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+1 1 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
+9 1 Open-ILS/xul/staff_client/chrome/content/util/date.js
+12 5 Open-ILS/xul/staff_client/server/circ/checkout.js
+
+commit c5bf1c88b9cb072f7d00df6f3ded9280b5b85f56
+Author: Dan Scott <dan at coffeecode.net>
+Date: Mon Oct 8 11:25:41 2012 -0400
+
+ TPAC: Invalid due dates cause 500 server error
+
+ CStore appears to return dates with leading 0s (such as '0212-10-08
+ 23:59:59-05:17:32') with the leading 0s stripped off, resulting in
+ cases with 1-digit or 3-digit years for which DateTime::Format::ISO8601
+ returns an error.
+
+ We can protect against this problem by adding some defensive code to the
+ TPAC utility method to add the 0s back to the start of the year. We can
+ also log the problem when it occurs so that administrators can fix the
+ problem dates in the database.
+
+ Signed-off-by: Dan Scott <dan at coffeecode.net>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+16 1 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
+
+commit 5842afbf1590d6ff580168b8f59640d0f8a6f0e0
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Thu Aug 30 11:55:10 2012 -0400
+
+ Slightly saner login form markup
+
+ Try to provide accessibility via label attributes and move from a
+ table-within-a-table layout to a single table for the form.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+43 124 Open-ILS/src/templates/opac/parts/login/form.tt2
+
+commit d1ea5dbdbc01ef8fb3f5e7fbfca621304df796ad
+Author: Steven Chan <schan at sitka.bclibraries.ca>
+Date: Wed Jul 25 13:45:40 2012 -0700
+
+ Fix LP1029095, Acq: Receive Items on an Invoice does not work with Line Item Alerts
+
+ 1. Item reception was encountering a Javascript exception in the
+ check_lineitem_alerts() helper function, because there was a mismatch
+ between the input parameter name and the variable name actually used.
+
+ 2. Also, took the opportunity to improve the performance of the for loop
+ to scan through alerts.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+6 4 Open-ILS/web/js/ui/default/acq/invoice/receive.js
+
+commit ba4e46321ca727ee86df1f167e01a5df6373931a
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Fri Sep 28 15:26:06 2012 -0400
+
+ Make scrollOnFocus default to false for dojo-based/conify interfaces
+
+ This change is intended to prevent a phenomenon in certain user
+ interfaces wherein clicking on a button or other widget can cause a
+ user's screen to suddenly jump and the user to need to click the widget
+ a second time before the desired function actually happens.
+
+ Dijits that have the scrollOnFocus property are the ones that tend to
+ exhibit this issue, especially, but not always, within the staff client
+ when the user's xulrunner window is not maximized.
+
+ There may be cases of interfaces actually relying on scrollOnFocus to do
+ something, but I think those cases should be so rare that this is still
+ worth doing, and exceptions can be applied there as needed.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+6 1 Open-ILS/web/js/ui/base.js
+
+commit 81128c1b53f5649f25f0cea8ba06c491731fe630
+Author: Thomas Berezansky <tsbere at mvlc.org>
+Date: Tue Jun 19 12:23:09 2012 -0400
+
+ Can't use README for version, so use configure.ac
+
+ Because one good "this works for now" being broken can be replaced with
+ another one easily.
+
+ Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+2 2 Open-ILS/xul/staff_client/Makefile.am
+
+commit fc75ed33c18251a165701c3b2e543cfef6bd91ff
+Author: Michael Peters <mrpeters at library.in.gov>
+Date: Mon Oct 1 14:51:31 2012 -0400
+
+ LP#1020261 Better label for "Host" field in acq.edi_account
+
+ The host field of acq.edi_account is really meant to contain more than just a hostname.
+ It needs a scheme part, so that the whole contents of the field should be URI-ish, like
+
+ ftp://ftp1.somevendor.com
+
+ Otherwise Evergreen's EDI mechanism can guess wrongly that we want to use
+ SSH instead of FTP to connect.
+
+ This also adds a description for the field, in the footer, along with the other
+ "helpers".
+
+ Signed-off-by: Michael Peters <mrpeters at library.in.gov>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+1 0 Open-ILS/src/templates/conify/global/acq/edi_account.tt2
+
+commit 53c0ef3fdb76f95395e829de2cef2c0c6f63d401
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Fri Sep 21 17:10:58 2012 -0400
+
+ Copy location group searching repairs
+
+ In the get_library BLOCK, upgrade any use of 'loc' to 'locg' instead of
+ trying to determine which to use in which situation. Before this change,
+ 'loc' was being used as the loc_name for the main org unit selector,
+ which should always use 'locg'. For any other cases (related to search
+ params), it's always safe to use 'locg' over 'loc'.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+4 10 Open-ILS/src/templates/opac/parts/misc_util.tt2
+
+commit fc00263d5b96c04af4b9e5bc5e167019427854b5
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Mon Sep 17 09:55:07 2012 -0400
+
+ back-port tpac get_library macro
+
+ Code which uses this macro was back-ported without defining the macro.
+ Back-ported here for great justice.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+16 0 Open-ILS/src/templates/opac/parts/misc_util.tt2
+
+commit 9326986172d4db62c9c2423e6feae532c9c41cec
+Author: Galen Charlton <gmc at esilibrary.com>
+Date: Wed Sep 26 23:34:32 2012 -0400
+
+ After upgrade, list records with missing or incorrect 901$c
+
+ This is a common cause of pain for upgrades. Let's try to identify the
+ problem early (even if it takes forever on a site with 3 million bibs)
+ and offer advice on correcting the problem if it is flagged.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+19 0 Open-ILS/src/sql/Pg/version-upgrade/2.1-2.2-upgrade-db.sql
+
+commit 8800bd9e106d03709ad460eb177e9beb03bd386a
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Wed Sep 26 23:47:26 2012 -0400
+
+ Set eg_version at start of 2.2 upgrade scripts
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+1 0 Open-ILS/src/sql/Pg/version-upgrade/2.2.0-2.2.1-upgrade-db.sql
+1 0 Open-ILS/src/sql/Pg/version-upgrade/2.2.1-2.2.2-upgrade-db.sql
+
+commit ca739b2cdd13115f61bc4b8b397609ed2efafa1d
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Wed Sep 26 23:25:53 2012 -0400
+
+ Apply the 0715 update for acq settings_group
+
+ We add the 'acq' config.settings_group in the seed data, and add the
+ other settings groups in the 2.1-2.2 upgrade script, but need to add the
+ acq settings_group to the 2.1-2.2 upgrade script.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+9 0 Open-ILS/src/sql/Pg/version-upgrade/2.1-2.2-upgrade-db.sql
+
+commit 92a09b52c5096ab85ff9151cd5e46005d6dc5337
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Mon May 14 14:50:43 2012 -0400
+
+ Copy Location Order Editor: avoid interface failure with blank area
+
+ Symptom is "ll is undefined" at line 65 of previous version of this
+ file.
+
+ Reported by George Duimovich and John Jones.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+6 3 Open-ILS/web/js/ui/default/conify/global/asset/copy_location_order.js
+
+commit 887fe856e579d04d6f608a71dcfda4fbd20bb6da
+Author: Thomas Berezansky <tsbere at mvlc.org>
+Date: Thu Sep 20 15:45:05 2012 -0400
+
+ TPac: Disable "Enter places hold" for staff
+
+ This should prevent barcode scanners from auto-submitting on scan.
+
+ Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1 1 Open-ILS/src/templates/opac/parts/place_hold.tt2
+7 0 Open-ILS/web/js/ui/default/opac/staff.js
+
+commit 0775659def4500dd3e5a0aad1dfc21e78c74f591
+Author: Jeff Godin <jgodin at tadl.org>
+Date: Wed Apr 25 02:59:01 2012 -0400
+
+ Syndetic AC: Add more review sources with comments
+
+ * Add more Syndetic review sources (commented out)
+ Add additional Syndetic review sources, commented out
+ for performance reasons -- each source represents a distinct
+ request from the server to the AC provider, and we currently
+ lack a means of configuring which are on/off, short of
+ commenting / uncommenting.
+
+ * Add comments for Syndetics review sources
+ * Fix file name for School Library Journal reviews, add New
+ York Times reviews.
+
+ Signed-off-by: Jeff Godin <jgodin at tadl.org>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+18 8 Open-ILS/src/perlmods/lib/OpenILS/WWW/AddedContent/Syndetic.pm
+
+commit 9dcca3fcbca4a3ac96039275185603843a7ff107
+Author: Ben Shum <bshum at biblio.org>
+Date: Tue Apr 24 23:23:04 2012 -0400
+
+ Do not hide copy counts from results in staff client.
+
+ Remove the check for whether you are a staff login or not.
+
+ Ideally, we would want the copy counts to be displayed in both
+ public catalog and staff client.
+
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+ Signed-off-by: Olli-Antti Kivilahti <olli-antti.kivilahti at jns.fi>
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+1 1 Open-ILS/src/templates/opac/parts/result/copy_counts.tt2
+
+commit e1014dff83a6a1cab910315a430a426bdc40755d
+Author: Thomas Berezansky <tsbere at mvlc.org>
+Date: Mon Aug 20 12:22:44 2012 -0400
+
+ Enable 1-hit redirect for item barcode searches
+
+ Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+ Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+4 1 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
+
+commit 2b77c235a9da8bdfe77316d2c64d42e6b5c3ee43
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Mon Sep 17 08:48:26 2012 -0400
+
+ Protect against fleshed circ_lib in legacy check_age_protect
+
+ Retrieving org settings with an org unit object as the context org unit
+ results in errors and dying.
+
+ This affects legacy scripts only.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Michael Peters <mrpeters at library.in.gov>
+
+3 1 Open-ILS/src/perlmods/lib/OpenILS/Utils/PermitHold.pm
+
+commit b757adaa91825788a10ef302f37481b9d7bf6469
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Fri Sep 7 11:42:12 2012 -0400
+
+ Revert "Bug #1044721: QP handles explicit group+joiner badly"
+
+ This reverts commit b77bb9943009b81042b4ef1a6ac33ec9e3e96dd7.
+
+ Unfortunately this had side effects that escaped our manual testing
+ processes. Especially with facets as reported by Ben Shum.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+0 1 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
+
+commit d4cc86cca92296e5af37312a8d4aee6e23b0c602
+Author: Dan Wells <dbw2 at calvin.edu>
+Date: Tue Sep 4 17:09:44 2012 -0400
+
+ Upgrade bits for Vandelay Overlay Changes
+
+ Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+1 1 Open-ILS/src/sql/Pg/002.schema.config.sql
+249 0 Open-ILS/src/sql/Pg/upgrade/0738.schema.vandelay.import-match-no-like-any.sql
+0 249 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay.import-match-no-like-any.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0738.schema.vandelay.import-match-no-like-any.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay.import-match-no-like-any.sql
+
+commit a9f8d2c6c2dd143be427f6281e93447f9e69bf10
+Author: Dan Wells <dbw2 at calvin.edu>
+Date: Thu Aug 30 15:26:15 2012 -0400
+
+ Increase Overlay Speed for Standard Identifiers
+
+ Due to an inefficient query order and a confused query planner,
+ some overlay matching can end up going abysmally slow. See LP
+ bug #1024095 for elaboration on the issue.
+
+ This commit reorders the joins as originally suggested by Lebbeous,
+ then adds a specific index to coax the query planner into making the
+ best choices. The example index here only targets the 02x identifier
+ fields, so other tag/subfield/substring(value) indexes will likely
+ be necessary for maximum benefit when matching on other fields
+ (e.g. 010).
+
+ These changes combined with the previous commit which replaces 'LIKE
+ ANY' with 'LIKE (... OR ...)' has shown great promise in testing.
+
+ Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+26 19 Open-ILS/src/sql/Pg/012.schema.vandelay.sql
+14 0 Open-ILS/src/sql/Pg/030.schema.metabib.sql
+41 20 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay.import-match-no-like-any.sql
+
+commit 0a2007b4efb151e5221c653f217869eec1b2b80e
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Mon Jun 25 20:00:33 2012 -0400
+
+ Vandelay: Fix index-miss with MARC Imports using Match Sets
+
+ In some Postgres installations, an expression such as:
+
+ (value LIKE '13423488%' OR value LIKE '245425%') will use a btree index,
+ but
+
+ value LIKE ANY('{13423488%,245425%}'::TEXT[])
+
+ will not.
+
+ Missing such an index can make matching incoming bibs based on a field
+ that's present in most of your existing records terrifically slow.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+56 14 Open-ILS/src/sql/Pg/012.schema.vandelay.sql
+228 0 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay.import-match-no-like-any.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay.import-match-no-like-any.sql
+
+commit 304d7065458cfc6c01043c2c6f529abaa50e19f7
+Author: Jared Camins-Esakov <jcamins at cpbibliography.com>
+Date: Sat Sep 1 10:21:51 2012 -0400
+
+ Bug #1044721: QP handles explicit group+joiner badly
+
+ Although the following four queries should be equivalent:
+ george || fred
+ (george) || fred
+ george || (fred)
+ (george) || (fred)
+
+ The Pg QueryParser driver generates SQL queries that return different
+ numbers of results for each of those queries, with all desired results
+ appearing only with the first query. This seems to be because of the way
+ filters are added in the interface.
+
+ This patch adjusts the Search code in TPAC to add an explicit group
+ around the user-entered query, which enables the Pg QueryParser driver
+ to handle all four of the above queries properly.
+
+ This patch should also resolve the problems encountered with the patch
+ for bug #1040740, "Implicit ANDs should have higher precedence than
+ explicit ORs"
+
+ Signed-off-by: Jared Camins-Esakov <jcamins at cpbibliography.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+1 0 Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
+
+commit 9eeb9e6b251d77915d9033f49186a3b376f30f2c
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Mon Aug 13 16:50:33 2012 -0400
+
+ TPAC: Make call number browse record links retain search lib
+
+ In addition to maintaining scope for the call number browse search
+ results, we also need to maintain the scope for the links for the call
+ number records in the results themselves (for example, the "retrieve
+ this record" link, or the "search for this author" link).
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+7 5 Open-ILS/src/templates/opac/parts/record/cnbrowse.tt2
+
+commit 2cd6ebfb6d173fbe43f8902e54086c9e58fd1813
+Author: Steven Callender <stevecallender at esilibrary.com>
+Date: Tue Jul 10 15:43:59 2012 -0400
+
+ Changed the thawing of a hold to first update the hold record and then re-target.
+
+ When thawing a hold, originaly we were first re-targeting before actually saving the hold record. On items with large quantities, sometimes the hold would timeout on targetig before getting a chance to actually save. This patch moves things around to first save the hold record before attempting to retarget.
+
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+11 1 Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
+
+commit 5f62d8b337f0e6937967b10a8926377ad1a8c52a
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Tue Aug 28 16:09:00 2012 -0400
+
+ Acq: New lineitems added to existing POs should inherit provider
+
+ Jeremy Miller of the Albany Public Library in Albany, OR, reports that
+ through the interface at
+ Actions For This Record -> View/Place Orders
+ in the staff client, when you add a lineitem to an existing PO, the new
+ lineitem has a null value in the "provider" field, instead of inheriting
+ the expected value from the PO.
+
+ This causes problems for some Acquisitions workflows.
+
+ The feature containing the bug appeared in 2.2, and this fix for it can be
+ backported that far.
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+
+1 0 Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+
+commit 23bb2a43464704a13db9b5b37201a716588e2e5f
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Wed May 2 09:55:06 2012 -0400
+
+ ACQ support for two-step vandelay imports
+
+ If a lineitm is loaded into a queue via ACQ+Vandelay and a later attempt
+ is made to load the record into the catalog via ACQ+Vandelay, the
+ attempt will fail, because ACQ+Vandelay treats all
+ not-yet-fully-imported lineitems as new to vandelay. This change
+ inspects lineitems at vandelay processing time to determine if they are
+ already linked to a VL record or if a new one is needed. It also
+ removes the requirement that a queue be provided when all records in
+ process are already linked to a VL record (which already lives in a
+ queue).
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Kathy Lussier <klussier at masslnc.org>
+
+55 15 Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+
+commit fdcab6cb9db557faa4a556d8306e87b6b2e80186
+Author: Robert Soulliere <robert.soulliere at mohawkcollege.ca>
+Date: Thu Aug 23 12:58:40 2012 -0400
+
+ Documentation: Update upgrade instructions for 2.2.2.
+
+ Signed-off-by: Robert Soulliere <robert.soulliere at mohawkcollege.ca>
+
+11 10 docs/installation/server_upgrade.txt
+
+commit 1f2a69f8829989bb4f5c77c0371a1b91ce259926
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Thu Aug 23 09:43:18 2012 -0400
+
+ Add 2.1.2-2.1.3 database schema upgrade script
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+
+114 0 Open-ILS/src/sql/Pg/version-upgrade/2.1.2-2.1.3-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.1.2-2.1.3-upgrade-db.sql
+
+commit 97fd7113783e0de46e826f994ad61b2ea7854459
+Author: Thomas Berezansky <tsbere at mvlc.org>
+Date: Thu Jul 12 11:42:21 2012 -0400
+
+ Remove an extra ternary op
+
+ And adjust the comment to make more sense. There is no higher level filter
+ that prevents copy holds on parted items, so there is no filter for them to
+ "slip through".
+
+ Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2 2 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit c327c1c08f247689aa020240240408f0610b0372
+Author: Mike Rylander <mrylander at gmail.com>
+Date: Wed Jun 13 09:37:54 2012 -0400
+
+ Allow copy-ish holds to target, even for part-copies, if they somehow slip through the UI pre-checks
+
+ Signed-off-by: Mike Rylander <mrylander at gmail.com>
+ Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+ Signed-off-by: Ben Shum <bshum at biblio.org>
+
+12 11 Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit 969dfd735415509d0fbcf65a4e3c8275d4462853
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Wed Aug 22 14:49:02 2012 -0400
+
+ 2.2.1 -> 2.2.2 upgrade script
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+13 0 Open-ILS/src/sql/Pg/version-upgrade/2.2.1-2.2.2-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.2.1-2.2.2-upgrade-db.sql
+
+commit 0e10e2613a4bf92cabb9314bfe3f1029dc08f16f
+Author: Bill Erickson <berick at esilibrary.com>
+Date: Thu Aug 16 15:40:58 2012 -0400
+
+ Sanity check cstore limit/offset param values
+
+ Certain cstore calls (direct / json_query) that support limit/offset
+ params called with a non-string / non-numeric value
+
+ e.g. { "limit": null }
+
+ result in a cstore segfault as it tries to call atoi(NULL) under the
+ covers. This patch prevents this by verifying that the limit/offset
+ values are actual strings or numbers (i.e. return a value from
+ jsonObjectGetString) and not JSON_NULL, etc.
+
+ Signed-off-by: Bill Erickson <berick at esilibrary.com>
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+20 12 Open-ILS/src/c-apps/oils_sql.c
+
+commit 01f1ea70d07de59e3c85af44b7c1a2f98cde0323
+Author: Dan Scott <dscott at laurentian.ca>
+Date: Wed Aug 15 07:18:53 2012 -0400
+
+ TPAC: Move "Export to RefWorks" into utility area
+
+ When the RefWorks functionality was being added to TPAC, the design and
+ layout were very much in flux. Now that the layout has been established
+ with utilities like "Place Hold" on the right hand side, move the
+ "Export to RefWorks" button into the same location.
+
+ Signed-off-by: Dan Scott <dscott at laurentian.ca>
+ Signed-off-by: Art Rhyno <art632000 at yahoo.ca>
+
+3 3 Open-ILS/src/templates/opac/parts/record/refworks.tt2
+3 4 Open-ILS/src/templates/opac/parts/record/summary.tt2
+
+commit 8c5d40deb4284be07ecded1904b44ca5a482914d
+Author: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+Date: Wed Aug 22 12:20:22 2012 -0400
+
+ 2.2.0 -> 2.2.1 upgrade script never actually went into master or rel_2_2
+
+ Signed-off-by: Lebbeous Fogle-Weekley <lebbeous at esilibrary.com>
+
+366 0 Open-ILS/src/sql/Pg/version-upgrade/2.2.0-2.2.1-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.2.0-2.2.1-upgrade-db.sql
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
index 7e36e0e..ef61078 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
@@ -6,7 +6,7 @@ use base qw/OpenSRF::Application/;
sub ils_version {
# version format is "x-y-z", for example "2-0-0" for Evergreen 2.0.0
# For branches, format is "x-y"
- return "2-2";
+ return "2-2-3";
}
__PACKAGE__->register_method(
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index a8f6d0f..d8eccd8 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -88,6 +88,7 @@ CREATE TRIGGER no_overlapping_deps
FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0742', :eg_version); -- dbs/senator
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.2.3', :eg_version);
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/2.2.2-2.2.3-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/2.2.2-2.2.3-upgrade-db.sql
new file mode 100644
index 0000000..25a16cc
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/version-upgrade/2.2.2-2.2.3-upgrade-db.sql
@@ -0,0 +1,518 @@
+--Upgrade Script for 2.2.2 to 2.2.3
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.2.3', :eg_version);
+
+-- 0738.schema.vandelay.import-match-no-like-any.sql
+
+SELECT evergreen.upgrade_deps_block_check('0738', :eg_version);
+
+CREATE OR REPLACE FUNCTION vandelay.match_set_test_marcxml(
+ match_set_id INTEGER, record_xml TEXT
+) RETURNS SETOF vandelay.match_set_test_result AS $$
+DECLARE
+ tags_rstore HSTORE;
+ svf_rstore HSTORE;
+ coal TEXT;
+ joins TEXT;
+ query_ TEXT;
+ wq TEXT;
+ qvalue INTEGER;
+ rec RECORD;
+BEGIN
+ tags_rstore := vandelay.flatten_marc_hstore(record_xml);
+ svf_rstore := vandelay.extract_rec_attrs(record_xml);
+
+ CREATE TEMPORARY TABLE _vandelay_tmp_qrows (q INTEGER);
+ CREATE TEMPORARY TABLE _vandelay_tmp_jrows (j TEXT);
+
+ -- generate the where clause and return that directly (into wq), and as
+ -- a side-effect, populate the _vandelay_tmp_[qj]rows tables.
+ wq := vandelay.get_expr_from_match_set(match_set_id, tags_rstore);
+
+ query_ := 'SELECT DISTINCT(record), ';
+
+ -- qrows table is for the quality bits we add to the SELECT clause
+ SELECT ARRAY_TO_STRING(
+ ARRAY_ACCUM('COALESCE(n' || q::TEXT || '.quality, 0)'), ' + '
+ ) INTO coal FROM _vandelay_tmp_qrows;
+
+ -- our query string so far is the SELECT clause and the inital FROM.
+ -- no JOINs yet nor the WHERE clause
+ query_ := query_ || coal || ' AS quality ' || E'\n';
+
+ -- jrows table is for the joins we must make (and the real text conditions)
+ SELECT ARRAY_TO_STRING(ARRAY_ACCUM(j), E'\n') INTO joins
+ FROM _vandelay_tmp_jrows;
+
+ -- add those joins and the where clause to our query.
+ query_ := query_ || joins || E'\n' || 'JOIN biblio.record_entry bre ON (bre.id = record) ' || 'WHERE ' || wq || ' AND not bre.deleted';
+
+ -- this will return rows of record,quality
+ FOR rec IN EXECUTE query_ USING tags_rstore, svf_rstore LOOP
+ RETURN NEXT rec;
+ END LOOP;
+
+ DROP TABLE _vandelay_tmp_qrows;
+ DROP TABLE _vandelay_tmp_jrows;
+ RETURN;
+END;
+
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION vandelay.get_expr_from_match_set(
+ match_set_id INTEGER,
+ tags_rstore HSTORE
+) RETURNS TEXT AS $$
+DECLARE
+ root vandelay.match_set_point;
+BEGIN
+ SELECT * INTO root FROM vandelay.match_set_point
+ WHERE parent IS NULL AND match_set = match_set_id;
+
+ RETURN vandelay.get_expr_from_match_set_point(root, tags_rstore);
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION vandelay.get_expr_from_match_set_point(
+ node vandelay.match_set_point,
+ tags_rstore HSTORE
+) RETURNS TEXT AS $$
+DECLARE
+ q TEXT;
+ i INTEGER;
+ this_op TEXT;
+ children INTEGER[];
+ child vandelay.match_set_point;
+BEGIN
+ SELECT ARRAY_ACCUM(id) INTO children FROM vandelay.match_set_point
+ WHERE parent = node.id;
+
+ IF ARRAY_LENGTH(children, 1) > 0 THEN
+ this_op := vandelay._get_expr_render_one(node);
+ q := '(';
+ i := 1;
+ WHILE children[i] IS NOT NULL LOOP
+ SELECT * INTO child FROM vandelay.match_set_point
+ WHERE id = children[i];
+ IF i > 1 THEN
+ q := q || ' ' || this_op || ' ';
+ END IF;
+ i := i + 1;
+ q := q || vandelay.get_expr_from_match_set_point(child, tags_rstore);
+ END LOOP;
+ q := q || ')';
+ RETURN q;
+ ELSIF node.bool_op IS NULL THEN
+ PERFORM vandelay._get_expr_push_qrow(node);
+ PERFORM vandelay._get_expr_push_jrow(node, tags_rstore);
+ RETURN vandelay._get_expr_render_one(node);
+ ELSE
+ RETURN '';
+ END IF;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION vandelay._get_expr_push_jrow(
+ node vandelay.match_set_point,
+ tags_rstore HSTORE
+) RETURNS VOID AS $$
+DECLARE
+ jrow TEXT;
+ my_alias TEXT;
+ op TEXT;
+ tagkey TEXT;
+ caseless BOOL;
+ jrow_count INT;
+ my_using TEXT;
+ my_join TEXT;
+BEGIN
+ -- remember $1 is tags_rstore, and $2 is svf_rstore
+
+ caseless := FALSE;
+ SELECT COUNT(*) INTO jrow_count FROM _vandelay_tmp_jrows;
+ IF jrow_count > 0 THEN
+ my_using := ' USING (record)';
+ my_join := 'FULL OUTER JOIN';
+ ELSE
+ my_using := '';
+ my_join := 'FROM';
+ END IF;
+
+ IF node.tag IS NOT NULL THEN
+ caseless := (node.tag IN ('020', '022', '024'));
+ tagkey := node.tag;
+ IF node.subfield IS NOT NULL THEN
+ tagkey := tagkey || node.subfield;
+ END IF;
+ END IF;
+
+ IF node.negate THEN
+ IF caseless THEN
+ op := 'NOT LIKE';
+ ELSE
+ op := '<>';
+ END IF;
+ ELSE
+ IF caseless THEN
+ op := 'LIKE';
+ ELSE
+ op := '=';
+ END IF;
+ END IF;
+
+ my_alias := 'n' || node.id::TEXT;
+
+ jrow := my_join || ' (SELECT *, ';
+ IF node.tag IS NOT NULL THEN
+ jrow := jrow || node.quality ||
+ ' AS quality FROM metabib.full_rec mfr WHERE mfr.tag = ''' ||
+ node.tag || '''';
+ IF node.subfield IS NOT NULL THEN
+ jrow := jrow || ' AND mfr.subfield = ''' ||
+ node.subfield || '''';
+ END IF;
+ jrow := jrow || ' AND (';
+ jrow := jrow || vandelay._node_tag_comparisons(caseless, op, tags_rstore, tagkey);
+ jrow := jrow || ')) ' || my_alias || my_using || E'\n';
+ ELSE -- svf
+ jrow := jrow || 'id AS record, ' || node.quality ||
+ ' AS quality FROM metabib.record_attr mra WHERE mra.attrs->''' ||
+ node.svf || ''' ' || op || ' $2->''' || node.svf || ''') ' ||
+ my_alias || my_using || E'\n';
+ END IF;
+ INSERT INTO _vandelay_tmp_jrows (j) VALUES (jrow);
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION vandelay._node_tag_comparisons(
+ caseless BOOLEAN,
+ op TEXT,
+ tags_rstore HSTORE,
+ tagkey TEXT
+) RETURNS TEXT AS $$
+DECLARE
+ result TEXT;
+ i INT;
+ vals TEXT[];
+BEGIN
+ i := 1;
+ vals := tags_rstore->tagkey;
+ result := '';
+
+ WHILE TRUE LOOP
+ IF i > 1 THEN
+ IF vals[i] IS NULL THEN
+ EXIT;
+ ELSE
+ result := result || ' OR ';
+ END IF;
+ END IF;
+
+ IF caseless THEN
+ result := result || 'LOWER(mfr.value) ' || op;
+ ELSE
+ result := result || 'mfr.value ' || op;
+ END IF;
+
+ result := result || ' ' || COALESCE('''' || vals[i] || '''', 'NULL');
+
+ IF vals[i] IS NULL THEN
+ EXIT;
+ END IF;
+ i := i + 1;
+ END LOOP;
+
+ RETURN result;
+
+END;
+$$ LANGUAGE PLPGSQL;
+
+-- drop old versions of these functions with fewer args
+DROP FUNCTION vandelay.get_expr_from_match_set( INTEGER );
+DROP FUNCTION vandelay.get_expr_from_match_set_point( vandelay.match_set_point );
+DROP FUNCTION vandelay._get_expr_push_jrow( vandelay.match_set_point );
+
+-- This next index might fully supplant an existing one but leaving both for now
+-- (they are not too large)
+-- The reason we need this index is to ensure that the query parser always
+-- prefers this index over the simpler tag/subfield index, as this greatly
+-- increases Vandelay overlay speed for these identifiers, especially when
+-- a record has many of these fields (around > 4-6 seems like the cutoff
+-- on at least one PG9.1 system)
+-- A similar index could be added for other fields (e.g. 010), but one should
+-- leave out the LOWER() in all other cases.
+-- TODO: verify whether we can discard the non tag/subfield/substring version
+-- (metabib_full_rec_isxn_caseless_idx)
+CREATE INDEX metabib_full_rec_02x_tag_subfield_lower_substring
+ ON metabib.real_full_rec (tag, subfield, LOWER(substring(value, 1, 1024)))
+ WHERE tag IN ('020', '022', '024');
+
+
+
+SELECT evergreen.upgrade_deps_block_check('0740', :eg_version);
+
+CREATE OR REPLACE
+ FUNCTION metabib.suggest_browse_entries(
+ raw_query_text TEXT, -- actually typed by humans at the UI level
+ search_class TEXT, -- 'alias' or 'class' or 'class|field..', etc
+ headline_opts TEXT, -- markup options for ts_headline()
+ visibility_org INTEGER,-- null if you don't want opac visibility test
+ query_limit INTEGER,-- use in LIMIT clause of interal query
+ normalization INTEGER -- argument to TS_RANK_CD()
+ ) RETURNS TABLE (
+ value TEXT, -- plain
+ field INTEGER,
+ buoyant_and_class_match BOOL,
+ field_match BOOL,
+ field_weight INTEGER,
+ rank REAL,
+ buoyant BOOL,
+ match TEXT -- marked up
+ ) AS $func$
+DECLARE
+ prepared_query_texts TEXT[];
+ query TSQUERY;
+ plain_query TSQUERY;
+ opac_visibility_join TEXT;
+ search_class_join TEXT;
+ r_fields RECORD;
+BEGIN
+ prepared_query_texts := metabib.autosuggest_prepare_tsquery(raw_query_text);
+
+ query := TO_TSQUERY('keyword', prepared_query_texts[1]);
+ plain_query := TO_TSQUERY('keyword', prepared_query_texts[2]);
+
+ visibility_org := NULLIF(visibility_org,-1);
+ IF visibility_org IS NOT NULL THEN
+ opac_visibility_join := '
+ JOIN asset.opac_visible_copies aovc ON (
+ aovc.record = x.source AND
+ aovc.circ_lib IN (SELECT id FROM actor.org_unit_descendants($4))
+ )';
+ ELSE
+ opac_visibility_join := '';
+ END IF;
+
+ -- The following determines whether we only provide suggestsons matching
+ -- the user's selected search_class, or whether we show other suggestions
+ -- too. The reason for MIN() is that for search_classes like
+ -- 'title|proper|uniform' you would otherwise get multiple rows. The
+ -- implication is that if title as a class doesn't have restrict,
+ -- nor does the proper field, but the uniform field does, you're going
+ -- to get 'false' for your overall evaluation of 'should we restrict?'
+ -- To invert that, change from MIN() to MAX().
+
+ SELECT
+ INTO r_fields
+ MIN(cmc.restrict::INT) AS restrict_class,
+ MIN(cmf.restrict::INT) AS restrict_field
+ FROM metabib.search_class_to_registered_components(search_class)
+ AS _registered (field_class TEXT, field INT)
+ JOIN
+ config.metabib_class cmc ON (cmc.name = _registered.field_class)
+ LEFT JOIN
+ config.metabib_field cmf ON (cmf.id = _registered.field);
+
+ -- evaluate 'should we restrict?'
+ IF r_fields.restrict_field::BOOL OR r_fields.restrict_class::BOOL THEN
+ search_class_join := '
+ JOIN
+ metabib.search_class_to_registered_components($2)
+ AS _registered (field_class TEXT, field INT) ON (
+ (_registered.field IS NULL AND
+ _registered.field_class = cmf.field_class) OR
+ (_registered.field = cmf.id)
+ )
+ ';
+ ELSE
+ search_class_join := '
+ LEFT JOIN
+ metabib.search_class_to_registered_components($2)
+ AS _registered (field_class TEXT, field INT) ON (
+ _registered.field_class = cmc.name
+ )
+ ';
+ END IF;
+
+ RETURN QUERY EXECUTE '
+SELECT DISTINCT
+ x.value,
+ x.id,
+ x.push,
+ x.restrict,
+ x.weight,
+ x.ts_rank_cd,
+ x.buoyant,
+ TS_HEADLINE(value, $7, $3)
+ FROM (SELECT DISTINCT
+ mbe.value,
+ cmf.id,
+ cmc.buoyant AND _registered.field_class IS NOT NULL AS push,
+ _registered.field = cmf.id AS restrict,
+ cmf.weight,
+ TS_RANK_CD(mbe.index_vector, $1, $6),
+ cmc.buoyant,
+ mbedm.source
+ FROM metabib.browse_entry_def_map mbedm
+ JOIN (SELECT * FROM metabib.browse_entry WHERE index_vector @@ $1 LIMIT 10000) mbe ON (mbe.id = mbedm.entry)
+ JOIN config.metabib_field cmf ON (cmf.id = mbedm.def)
+ JOIN config.metabib_class cmc ON (cmf.field_class = cmc.name)
+ ' || search_class_join || '
+ ORDER BY 3 DESC, 4 DESC NULLS LAST, 5 DESC, 6 DESC, 7 DESC, 1 ASC
+ LIMIT 1000) AS x
+ ' || opac_visibility_join || '
+ ORDER BY 3 DESC, 4 DESC NULLS LAST, 5 DESC, 6 DESC, 7 DESC, 1 ASC
+ LIMIT $5
+' -- sic, repeat the order by clause in the outer select too
+ USING
+ query, search_class, headline_opts,
+ visibility_org, query_limit, normalization, plain_query
+ ;
+
+ -- sort order:
+ -- buoyant AND chosen class = match class
+ -- chosen field = match field
+ -- field weight
+ -- rank
+ -- buoyancy
+ -- value itself
+
+END;
+$func$ LANGUAGE PLPGSQL;
+
+
+SELECT evergreen.upgrade_deps_block_check('0742', :eg_version);
+
+-- Prepare for the July 2013 introduction of OCLC's "on" prefix
+-- Per LP# 1049171
+
+CREATE OR REPLACE FUNCTION maintain_control_numbers() RETURNS TRIGGER AS $func$
+use strict;
+use MARC::Record;
+use MARC::File::XML (BinaryEncoding => 'UTF-8');
+use MARC::Charset;
+use Encode;
+use Unicode::Normalize;
+
+MARC::Charset->assume_unicode(1);
+
+my $record = MARC::Record->new_from_xml($_TD->{new}{marc});
+my $schema = $_TD->{table_schema};
+my $rec_id = $_TD->{new}{id};
+
+# Short-circuit if maintaining control numbers per MARC21 spec is not enabled
+my $enable = spi_exec_query("SELECT enabled FROM config.global_flag WHERE name = 'cat.maintain_control_numbers'");
+if (!($enable->{processed}) or $enable->{rows}[0]->{enabled} eq 'f') {
+ return;
+}
+
+# Get the control number identifier from an OU setting based on $_TD->{new}{owner}
+my $ou_cni = 'EVRGRN';
+
+my $owner;
+if ($schema eq 'serial') {
+ $owner = $_TD->{new}{owning_lib};
+} else {
+ # are.owner and bre.owner can be null, so fall back to the consortial setting
+ $owner = $_TD->{new}{owner} || 1;
+}
+
+my $ous_rv = spi_exec_query("SELECT value FROM actor.org_unit_ancestor_setting('cat.marc_control_number_identifier', $owner)");
+if ($ous_rv->{processed}) {
+ $ou_cni = $ous_rv->{rows}[0]->{value};
+ $ou_cni =~ s/"//g; # Stupid VIM syntax highlighting"
+} else {
+ # Fall back to the shortname of the OU if there was no OU setting
+ $ous_rv = spi_exec_query("SELECT shortname FROM actor.org_unit WHERE id = $owner");
+ if ($ous_rv->{processed}) {
+ $ou_cni = $ous_rv->{rows}[0]->{shortname};
+ }
+}
+
+my ($create, $munge) = (0, 0);
+
+my @scns = $record->field('035');
+
+foreach my $id_field ('001', '003') {
+ my $spec_value;
+ my @controls = $record->field($id_field);
+
+ if ($id_field eq '001') {
+ $spec_value = $rec_id;
+ } else {
+ $spec_value = $ou_cni;
+ }
+
+ # Create the 001/003 if none exist
+ if (scalar(@controls) == 1) {
+ # Only one field; check to see if we need to munge it
+ unless (grep $_->data() eq $spec_value, @controls) {
+ $munge = 1;
+ }
+ } else {
+ # Delete the other fields, as with more than 1 001/003 we do not know which 003/001 to match
+ foreach my $control (@controls) {
+ $record->delete_field($control);
+ }
+ $record->insert_fields_ordered(MARC::Field->new($id_field, $spec_value));
+ $create = 1;
+ }
+}
+
+my $cn = $record->field('001')->data();
+# Special handling of OCLC numbers, often found in records that lack 003
+if ($cn =~ /^o(c[nm]|n)\d/) {
+ $cn =~ s/^o(c[nm]|n)0*(\d+)/$2/;
+ $record->field('003')->data('OCoLC');
+ $create = 0;
+}
+
+# Now, if we need to munge the 001, we will first push the existing 001/003
+# into the 035; but if the record did not have one (and one only) 001 and 003
+# to begin with, skip this process
+if ($munge and not $create) {
+
+ my $scn = "(" . $record->field('003')->data() . ")" . $cn;
+
+ # Do not create duplicate 035 fields
+ unless (grep $_->subfield('a') eq $scn, @scns) {
+ $record->insert_fields_ordered(MARC::Field->new('035', '', '', 'a' => $scn));
+ }
+}
+
+# Set the 001/003 and update the MARC
+if ($create or $munge) {
+ $record->field('001')->data($rec_id);
+ $record->field('003')->data($ou_cni);
+
+ my $xml = $record->as_xml_record();
+ $xml =~ s/\n//sgo;
+ $xml =~ s/^<\?xml.+\?\s*>//go;
+ $xml =~ s/>\s+</></go;
+ $xml =~ s/\p{Cc}//go;
+
+ # Embed a version of OpenILS::Application::AppUtils->entityize()
+ # to avoid having to set PERL5LIB for PostgreSQL as well
+
+ # If we are going to convert non-ASCII characters to XML entities,
+ # we had better be dealing with a UTF8 string to begin with
+ $xml = decode_utf8($xml);
+
+ $xml = NFC($xml);
+
+ # Convert raw ampersands to entities
+ $xml =~ s/&(?!\S+;)/&/gso;
+
+ # Convert Unicode characters to entities
+ $xml =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
+
+ $xml =~ s/[\x00-\x1f]//go;
+ $_TD->{new}{marc} = $xml;
+
+ return "MODIFY";
+}
+
+return;
+$func$ LANGUAGE PLPERLU;
+
+COMMIT;
diff --git a/Open-ILS/xul/staff_client/chrome/content/main/about.html b/Open-ILS/xul/staff_client/chrome/content/main/about.html
index 7443192..b792f5f 100644
--- a/Open-ILS/xul/staff_client/chrome/content/main/about.html
+++ b/Open-ILS/xul/staff_client/chrome/content/main/about.html
@@ -1,7 +1,7 @@
<html><head><script></script></head><body onload="var x = document.getElementById('version'); var version ='/xul/server/'.split(/\//)[2]; if (version == 'server') { version = 'versionless debug build'; } x.appendChild(document.createTextNode(version));">
<h1 style="text-decoration: underline">Evergreen</h1>
<p>Target Server ID: <span id="version"></span></p>
-<p>http://git.evergreen-ils.org/Evergreen.git?h=refs/heads/rel_2_2</p>
+<p>http://git.evergreen-ils.org/Evergreen.git?h=refs/heads/rel_2_2_3</p>
<h2>What is Evergreen?</h2>
<blockquote>
<p>
diff --git a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
index 97dbf01..ebbaf1d 100644
--- a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
+++ b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
@@ -11,7 +11,7 @@ pref("toolkit.singletonWindowType", "eg_main");
pref("open-ils.enable_join_tabs", true);
// We'll use this one to help brand some build information into the client, and rely on subversion keywords
-pref("open-ils.repository.headURL","http://git.evergreen-ils.org/Evergreen.git?h=refs/heads/rel_2_2");
+pref("open-ils.repository.headURL","http://git.evergreen-ils.org/Evergreen.git?h=refs/heads/rel_2_2_3");
pref("open-ils.repository.author","$Author$");
pref("open-ils.repository.revision","$Revision$");
pref("open-ils.repository.date","$Date$");
diff --git a/README b/README
deleted file mode 120000
index b57451a..0000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-docs/installation/server_installation.txt
\ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000..19ae158
--- /dev/null
+++ b/README
@@ -0,0 +1,549 @@
+Installing the Evergreen server
+===============================
+:toc:
+:numbered:
+
+Preamble: referenced user accounts
+----------------------------------
+
+In subsequent sections, we will refer to a number of different accounts, as
+follows:
+
+ * Linux user accounts:
+ ** The *user* Linux account is the account that you use to log onto the
+ Linux system as a regular user.
+ ** The *root* Linux account is an account that has system administrator
+ privileges. On Debian and Fedora you can switch to this account from
+ your *user* account by issuing the `su -` command and entering the
+ password for the *root* account when prompted. On Ubuntu you can switch
+ to this account from your *user* account using the `sudo su -` command
+ and entering the password for your *user* account when prompted.
+ ** The *opensrf* Linux account is an account that you create when installing
+ OpenSRF. You can switch to this account from the *root* account by
+ issuing the `su - opensrf` command.
+ ** The *postgres* Linux account is created automatically when you install
+ the PostgreSQL database server. You can switch to this account from the
+ *root* account by issuing the `su - postgres` command.
+ * PostgreSQL user accounts:
+ ** The *evergreen* PostgreSQL account is a superuser account that you will
+ create to connect to the PostgreSQL database server.
+ * Evergreen administrator account:
+ ** The *egadmin* Evergreen account is an administrator account for
+ Evergreen that you will use to test connectivity and configure your
+ Evergreen instance.
+
+Preamble: developer instructions
+--------------------------------
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/downloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, must install some extra packages
+and perform one step before they can proceed with the `./configure` step.
+
+As the *root* Linux account, install the following packages:
+
+ * autoconf
+ * automake
+ * libtool
+
+As the *user* Linux account, issue the following command in the Evergreen
+source directory to generate the configure script and Makefiles:
+
+[source, bash]
+------------------------------------------------------------------------------
+autoreconf -i
+------------------------------------------------------------------------------
+
+After running `make install`, developers also need to install the Dojo Toolkit
+set of JavaScript libraries. The appropriate version of Dojo is included
+in Evergreen release tarballs. Developers should install the Dojo 1.3.3
+version of Dojo by issuing the following commands as the *opensrf* Linux
+account:
+
+[source, bash]
+------------------------------------------------------------------------------
+wget http://download.dojotoolkit.org/release-1.3.3/dojo-release-1.3.3.tar.gz
+tar -C /openils/var/web/js -xzf dojo-release-1.3.3.tar.gz
+cp -r /openils/var/web/js/dojo-release-1.3.3/* /openils/var/web/js/dojo/.
+------------------------------------------------------------------------------
+
+Installing prerequisites
+------------------------
+
+Evergreen has a number of prerequisite packages that must be installed
+before you can successfully configure, compile, and install Evergreen.
+
+1. Begin by installing the most recent version of OpenSRF (2.1 or later).
+ You can download OpenSRF releases from http://evergreen-ils.org/opensrf.php
+2. On many distributions, it is necessary to install PostgreSQL 9 from external
+ repositories.
++
+ * On Debian Squeeze, open `/etc/apt/sources.list` in a text editor as the
+ *root* Linux account and add the following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+deb http://backports.debian.org/debian-backports squeeze-backports main contrib
+------------------------------------------------------------------------------
++
+ * On Ubuntu Lucid, you can use a PPA (personal package archive), which are
+ package sources hosted on Launchpad. The one most commonly used by Evergreen
+ Community members is maintained by Martin Pitt, who also maintains the
+ official PostgreSQL packages for Ubuntu. As the *root* Linux account, issue
+ the following commands to add the PPA source:
++
+[source, bash]
+------------------------------------------------------------------------------
+apt-get install python-software-properties
+add-apt-repository ppa:pitti/postgresql
+------------------------------------------------------------------------------
++
+ * Ubuntu Precise comes with PostgreSQL 9, so no additional steps are required.
++
+ * Fedora comes with PostgreSQL 9, so no additional steps are required.
++
+3. On Debian and Ubuntu, run `aptitude update` as the *root* Linux account to
+ retrieve the new packages from the backports repository.
+4. Issue the following commands as the *root* Linux account to install
+ prerequisites using the `Makefile.install` prerequisite installer,
+ substituting `debian-squeeze`, `fedora`, `ubuntu-lucid`, or
+ `ubuntu-precise` for <osname> below:
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>
+------------------------------------------------------------------------------
++
+5. Add the libdbi-libdbd libraries to the system dynamic library path by
+ issuing the following commands as the *root* Linux account:
++
+[NOTE]
+You should skip this step if installing on Ubuntu Precise. The ubuntu-precise
+target uses libdbd-pgsql from packages.
++
+.Debian / Ubuntu Lucid
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/local/lib/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
++
+.Fedora
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/lib64/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
+
+Configuration and compilation instructions
+------------------------------------------
+
+For the time being, we are still installing everything in the `/openils/`
+directory. From the Evergreen source directory, issue the following commands as
+the *user* Linux account to configure and build Evergreen:
+
+[source, bash]
+------------------------------------------------------------------------------
+./configure --prefix=/openils --sysconfdir=/openils/conf
+make
+------------------------------------------------------------------------------
+
+Installation instructions
+-------------------------
+
+1. Once you have configured and compiled Evergreen, issue the following
+ command as the *root* Linux account to install Evergreen, build the server
+ portion of the staff client, and copy example configuration files to
+ `/openils/conf`.
+ Change the value of the `STAFF_CLIENT_STAMP_ID` variable to match the version
+ of the staff client that you will use to connect to the Evergreen server.
++
+[source, bash]
+------------------------------------------------------------------------------
+make STAFF_CLIENT_STAMP_ID=rel_2_2_3 install
+------------------------------------------------------------------------------
++
+2. The server portion of the staff client expects `http://hostname/xul/server`
+ to resolve. Issue the following commands as the *root* Linux account to
+ create a symbolic link pointing to the `server` subdirectory of the server
+ portion of the staff client that we just built using the staff client ID
+ 'rel_name':
++
+[source, bash]
+------------------------------------------------------------------------------
+cd /openils/var/web/xul
+ln -sf rel_name/server server
+------------------------------------------------------------------------------
+
+Change ownership of the Evergreen files
+---------------------------------------
+
+All files in the `/openils/` directory and subdirectories must be owned by the
+`opensrf` user. Issue the following command as the *root* Linux account to
+change the ownership on the files:
+
+[source, bash]
+------------------------------------------------------------------------------
+chown -R opensrf:opensrf /openils
+------------------------------------------------------------------------------
+
+Configure the Apache Web server
+-------------------------------
+
+1. Use the example configuration files in `Open-ILS/examples/apache/` to
+configure your Web server for the Evergreen catalog, staff client, Web
+services, and administration interfaces. Issue the following commands as the
+*root* Linux account:
++
+.Debian and Ubuntu
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/
+cp Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/
+cp Open-ILS/examples/apache/startup.pl /etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------
++
+.Fedora
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache/eg.conf /etc/httpd/conf.d/
+cp Open-ILS/examples/apache/eg_vhost.conf /etc/httpd/
+cp Open-ILS/examples/apache/startup.pl /etc/httpd/
+# Now set up SSL
+mkdir /etc/httpd/ssl
+cd /etc/httpd/ssl
+------------------------------------------------------------------------------
++
+2. The `openssl` command cuts a new SSL key for your Apache server. For a
+production server, you should purchase a signed SSL certificate, but you can
+just use a self-signed certificate and accept the warnings in the staff client
+and browser during testing and development. Create an SSL key for the Apache
+server by issuing the following command as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------
+openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
+------------------------------------------------------------------------------
++
+3. As the *root* Linux account, edit the `eg.conf` file that you copied into
+place.
+ a. Replace `Allow from 10.0.0.0/8` with `Allow from all` (to enable
+ access to the offline upload / execute interface from any workstation on
+ any network - note that you must secure this for a production instance)
+ b. (Fedora): Change references from the non-existent `/etc/apache2/` directory
+ to `/etc/httpd/`.
+4. Change the user for the Apache server.
+ * (Debian and Ubuntu): As the *root* Linux account, edit
+ `/etc/apache2/envvars`. Change `export APACHE_RUN_USER=www-data` to
+ `export APACHE_RUN_USER=opensrf`.
+ * (Fedora): As the *root* Linux account , edit `/etc/httpd/conf/httpd.conf`.
+ Change `User apache` to `User opensrf`.
+5. Configure Apache with performance settings appropriate for Evergreen:
+ * (Debian and Ubuntu): As the *root* Linux account, edit
+ `/etc/apache2/apache2.conf`:
+ * (Fedora): As the *root* Linux account, edit `/etc/httpd/conf/httpd.conf`:
+ a. Change `KeepAliveTimeout` to `1`. Higher values reduce the chance of
+ a request timing out unexpectedly, but increase the risk of using up
+ all available Apache child processes.
+ b. 'Optional': Change `MaxKeepAliveRequests` to `100`
+ c. Update the prefork configuration section to suit your environment. The
+ following settings apply to a busy system:
++
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+ StartServers 20
+ MinSpareServers 5
+ MaxSpareServers 15
+ MaxClients 150
+ MaxRequestsPerChild 10000
+</IfModule>
+------------------------------------------------------------------------------
++
+6. (Fedora): As the *root* Linux account, edit the `/etc/httpd/eg_vhost.conf`
+ file to change references from the non-existent `/etc/apache2/` directory
+ to `/etc/httpd/`.
+7. (Debian and Ubuntu): As the *root* Linux account, enable the Evergreen site:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite default # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
+
+Configure OpenSRF for the Evergreen application
+-----------------------------------------------
+There are a number of example OpenSRF configuration files in `/openils/conf/`
+that you can use as a template for your Evergreen installation. Issue the
+following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml
+cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
+------------------------------------------------------------------------------
+
+When you installed OpenSRF, you created four Jabber users on two
+separate domains and edited the `opensrf_core.xml` file accordingly. Please
+refer back to the OpenSRF README and, as the *opensrf* Linux account, edit the
+Evergreen version of the `opensrf_core.xml` file using the same Jabber users
+and domains as you used while installing and testing OpenSRF.
+
+[NOTE]
+The `-b` flag tells the `cp` command to create a backup version of the
+destination file. The backup version of the destination file has a tilde (`~`)
+appended to the file name, so if you have forgotten the Jabber users and
+domains, you can retrieve the settings from the backup version of the files.
+
+`eg_db_config.pl`, described in the following section, sets the database
+connection information in `opensrf.xml` for you.
+
+Creating the Evergreen database
+-------------------------------
+
+By default, the `Makefile.install` prerequisite installer does not install
+the PostgreSQL 9 database server required by every Evergreen system;
+for production use, most libraries install the PostgreSQL database server on a
+dedicated machine. You can install the packages required by Debian or Ubuntu Lucid
+on the machine of your choice using the following commands as the *root*
+Linux account:
+
+.(Debian and Ubuntu Lucid) Installing PostgreSQL 9.1 server packages
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install install_pgsql_server_backport_debs_91
+------------------------------------------------------------------------------
+
+.(Ubuntu Precise) Installing PostgreSQL 9.1 server packages
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install install_pgsql_server_debs_91
+------------------------------------------------------------------------------
+
+You can install the packages required by Fedora on the machine of your choice
+using the following commands as the *root* Linux account:
+
+.(Fedora) Installing PostgreSQL server packages
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install install_fedora_pgsql_server
+postgresql-setup initdb
+------------------------------------------------------------------------------
+
+For a standalone PostgreSQL server, install the following Perl modules as the
+*root* Linux account:
+
+.(Debian / Ubuntu) Installing additional Perl modules on a standalone PostgreSQL 9 server
+[source, bash]
+------------------------------------------------------------------------------
+aptitude install gcc libxml-libxml-perl libxml-libxslt-perl
+cpan Business::ISBN
+cpan JSON::XS
+cpan Library::CallNumber::LC
+cpan MARC::Record
+cpan MARC::File::XML
+cpan UUID::Tiny
+------------------------------------------------------------------------------
+
+.(Fedora) Installing additional Perl modules on a standalone PostgreSQL 9 server
+[source, bash]
+------------------------------------------------------------------------------
+yum install gcc perl-XML-LibXML perl-XML-LibXSLT perl-Business-ISBN
+cpan Library::CallNumber::LC
+cpan MARC::Record
+cpan MARC::File::XML
+cpan UUID::Tiny
+------------------------------------------------------------------------------
+
+You need to create a PostgreSQL superuser to create and access the database.
+Issue the following command as the *postgres* Linux account to create a new
+PostgreSQL superuser named `evergreen`. When prompted, enter the new user's
+password:
+
+[source, bash]
+------------------------------------------------------------------------------
+createuser -s -P evergreen
+------------------------------------------------------------------------------
+
+Once you have created the *evergreen* PostgreSQL account, you also need to
+create the database and schema, and configure your configuration files to point
+at the database server. Issue the following command as the *root* Linux account
+from inside the Evergreen source directory, replacing <user>, <password>,
+<hostname>, <port>, and <dbname> with the appropriate values for your
+PostgreSQL database (where <user> and <password> are for the *evergreen*
+PostgreSQL account you just created), and replace <admin-user> and <admin-pass>
+with the values you want for the *egadmin* Evergreen administrator account:
+
+[source, bash]
+------------------------------------------------------------------------------
+perl Open-ILS/src/support-scripts/eg_db_config.pl --update-config \
+ --service all --create-database --create-schema --create-offline \
+ --user <user> --password <password> --hostname <hostname> --port <port> \
+ --database <dbname> --admin-user <admin-user> --admin-pass <admin-pass>
+------------------------------------------------------------------------------
+
+This creates the database and schema and configures all of the services in
+your `/openils/conf/opensrf.xml` configuration file to point to that database.
+It also creates the configuration files required by the Evergreen `cgi-bin`
+administration scripts, and sets the user name and password for the *egadmin*
+Evergreen administrator account to your requested values.
+
+Creating the database on a remote server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In a production instance of Evergreen, your PostgreSQL server should be
+installed on a dedicated server.
+
+PostgreSQL 9.1 and later
+^^^^^^^^^^^^^^^^^^^^^^^^
+To create the database instance on a remote database server running PostgreSQL
+9.1 or later, simply use the `--create-database` flag on `eg_db_config.pl`.
+
+For PostgreSQL 9.0
+^^^^^^^^^^^^^^^^^^
+To create the database instance on a remote database server running PostgreSQL
+9.0, you can either:
+
+ * Install the PostgreSQL contrib modules on the machine on which you
+ are installing the Evergreen code, and use the `--create-database`
+ option from that machine, or
+ * Copy the `Open-ILS/src/sql/Pg/create_database.sql` script to your
+ PostgreSQL server and invoke it as the *postgres* Linux account:
++
+[source, bash]
+------------------------------------------------------------------------------
+psql -vdb_name=<dbname> -vcontrib_dir=`pg_config --sharedir`/contrib -f create_database.sql
+------------------------------------------------------------------------------
+
+Then you can issue the `eg_db_config.pl` command as above _without_ the
+`--create-database` argument to create your schema and configure your
+configuration files.
+
+Starting Evergreen
+------------------
+1. As the *root* Linux account, start the `memcached` and `ejabberd` services
+(if they aren't already running):
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/ejabberd start
+/etc/init.d/memcached start
+------------------------------------------------------------------------------
++
+2. As the *opensrf* Linux account, start Evergreen. The `-l` flag in the
+following command is only necessary if you want to force Evergreen to treat the
+hostname as `localhost`; if you configured `opensrf.xml` using the real
+hostname of your machine as returned by `perl -ENet::Domain 'print
+Net::Domain::hostfqdn() . "\n";'`, you should not use the `-l` flag.
++
+[source, bash]
+------------------------------------------------------------------------------
+osrf_ctl.sh -l -a start_all
+------------------------------------------------------------------------------
++
+ ** If you receive the error message `bash: osrf_ctl.sh: command not found`,
+ then your environment variable `PATH` does not include the `/openils/bin`
+ directory; this should have been set in the *opensrf* Linux account's
+ `.bashrc` configuration file. To manually set the `PATH` variable, edit the
+ configuration file `~/.bashrc` as the *opensrf* Linux account and add the
+ following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+export PATH=$PATH:/openils/bin
+------------------------------------------------------------------------------
++
+3. As the *opensrf* Linux account, generate the Web files needed by the staff
+ client and catalogue and update the organization unit proximity (you need to do
+ this the first time you start Evergreen, and after that each time you change
+ the library hierarchy in `config.cgi`):
++
+[source, bash]
+------------------------------------------------------------------------------
+autogen.sh -u
+------------------------------------------------------------------------------
++
+4. As the *root* Linux account, restart the Apache Web server:
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/apache2 restart
+------------------------------------------------------------------------------
++
+If the Apache Web server was running when you started the OpenSRF services, you
+might not be able to successfully log in to the OPAC or staff client until the
+Apache Web server is restarted.
+
+Testing connections to Evergreen
+--------------------------------
+
+Once you have installed and started Evergreen, test your connection to
+Evergreen via `srfsh`. As the *opensrf* Linux account, issue the following
+commands to start `srfsh` and try to log onto the Evergreen server using the
+*egadmin* Evergreen administrator user name and password that you set using the
+`eg_db_config.pl` command:
+
+[source, bash]
+------------------------------------------------------------------------------
+/openils/bin/srfsh
+srfsh% login <admin-user> <admin-pass>
+------------------------------------------------------------------------------
+
+You should see a result like:
+
+ Received Data: "250bf1518c7527a03249858687714376"
+ ------------------------------------
+ Request Completed Successfully
+ Request Time in seconds: 0.045286
+ ------------------------------------
+
+ Received Data: {
+ "ilsevent":0,
+ "textcode":"SUCCESS",
+ "desc":" ",
+ "pid":21616,
+ "stacktrace":"oils_auth.c:304",
+ "payload":{
+ "authtoken":"e5f9827cc0f93b503a1cc66bee6bdd1a",
+ "authtime":420
+ }
+
+ }
+
+ ------------------------------------
+ Request Completed Successfully
+ Request Time in seconds: 1.336568
+ ------------------------------------
+
+If this does not work, it's time to do some troubleshooting.
+
+ * As the *opensrf* Linux acccount, run the `settings-tester.pl` script to see
+ if it finds any system configuration problems. The script is found at
+ `Open-ILS/src/support-scripts/settings-tester.pl` in the Evergreen source
+ tree.
+ * Follow the steps in the http://evergreen-ils.org/dokuwiki/doku.php?id=troubleshooting:checking_for_errors[troubleshooting guide].
+ * If you have faithfully followed the entire set of installation steps
+ listed here, you are probably extremely close to a working system.
+ Gather your configuration files and log files and contact the
+ http://open-ils.org/listserv.php[Evergreen development mailing list]
+ for assistance before making any drastic changes to your system
+ configuration.
+
+Getting help
+------------
+
+Need help installing or using Evergreen? Join the mailing lists at
+http://evergreen-ils.org/listserv.php or contact us on the Freenode
+IRC network on the #evergreen channel.
+
+License
+-------
+This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
+Unported License. To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
+Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
diff --git a/configure.ac b/configure.ac
index d599a51..8ec4fb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,8 +20,8 @@
export PATH=${PATH}:/usr/sbin
AC_PREREQ(2.61)
-AC_INIT(Open-ILS, 2.2, open-ils-dev at list.georgialibraries.org)
-AM_INIT_AUTOMAKE([OpenILS], [2.2])
+AC_INIT(Open-ILS, 2.2.3, open-ils-dev at list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [2.2.3])
AC_REVISION($Revision: 0.1 $)
AC_CONFIG_SRCDIR([configure.ac])
AC_PREFIX_DEFAULT([/openils/])
commit 845e482ab46a2b2ef1c6bf9404ef633b8525e5f2
Author: Bill Erickson <berick at esilibrary.com>
Date: Fri Nov 2 15:28:27 2012 -0400
CStoreEditor auto-activity log redaction
CStoreEditor logs all update calls to the activity log as key/value
pairs on the updated object. Avoid loging key/value pairs for objects
when the API call being relayed by CStoreEditor is on the list of
log-protect API calls. Instead, log "**DETAILS REDACTED**".
Signed-off-by: Bill Erickson <berick at esilibrary.com>
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/CStoreEditor.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/CStoreEditor.pm
index d41e435..70553b7 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Utils/CStoreEditor.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/CStoreEditor.pm
@@ -1,6 +1,7 @@
use strict; use warnings;
package OpenILS::Utils::CStoreEditor;
use OpenILS::Application::AppUtils;
+use OpenSRF::Application;
use OpenSRF::AppSession;
use OpenSRF::EX qw(:try);
use OpenILS::Utils::Fieldmapper;
@@ -624,9 +625,25 @@ sub _checkperm {
# Logs update actions to the activity log
# -----------------------------------------------------------------------------
sub log_activity {
- my( $self, $type, $action, $arg ) = @_;
+ my( $self, $method, $type, $action, $arg ) = @_;
my $str = "$type.$action";
- $str .= _prop_string($arg);
+
+ if ($arg) {
+
+ my $redact = $OpenSRF::Application::shared_conf->shared->log_protect;
+ if (ref($redact) eq 'ARRAY' and grep { $method =~ /^$_/ } @{$redact}) {
+
+ # when API calls are marked as log-protect, avoid
+ # dumping the param object to the activity log.
+ $str .= " **DETAILS REDACTED**";
+
+ } else {
+
+ $str .= _prop_string($arg);
+ }
+ }
+
+
$self->log(A, $str);
}
@@ -747,7 +764,7 @@ sub runmethod {
$logger->error("Attempt to update DB while not in a transaction : $method");
throw OpenSRF::EX::ERROR ("Attempt to update DB while not in a transaction : $method");
}
- $self->log_activity($type, $action, $arg);
+ $self->log_activity($method, $type, $action, $arg);
}
if($$options{checkperm}) {
commit b230c152544b372d57661f091d8a43568833eba0
Author: Mike Rylander <mrylander at gmail.com>
Date: Wed Oct 10 17:36:52 2012 -0400
Make it possible to suppress IDL fields
Some clients of external services, particularly pcrud and reporter-store,
need to be able to access tables that contain columns we'd rather restrict.
For instance, the passwd field on actor.usr.
To effect this feature we provide a blacklist attribute for fields, called
suppress_controller, which works in the same way as the class controller
attribute but names controllers not allowed to use the field. When the field
is explicitly named in a query (fieldmapper select block or json_query) an
error is thrown, and suppressed fields are ingored in general fieldmapper
search/retreive requests.
Signed-off-by: Mike Rylander <mrylander at gmail.com>
Signed-off-by: Bill Erickson <berick at esilibrary.com>
diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml
index d388b86..af64c25 100644
--- a/Open-ILS/examples/fm_IDL.xml
+++ b/Open-ILS/examples/fm_IDL.xml
@@ -2686,7 +2686,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
<field reporter:label="Is Group Lead Account" name="master_account" reporter:datatype="bool"/>
<field reporter:label="Internet Access Level" name="net_access_level" reporter:datatype="link"/>
<field reporter:label="Other Phone" name="other_phone" reporter:datatype="text"/>
- <field reporter:label="Password" name="passwd" reporter:datatype="text"/>
+ <field reporter:label="Password" name="passwd" suppress_controller="open-ils.pcrud open-ils.reporter-store" reporter:datatype="text"/>
<field reporter:label="Photo URL" name="photo_url" reporter:datatype="text"/>
<field reporter:label="Prefix/Title" name="prefix" reporter:datatype="text"/>
<field reporter:label="Main (Profile) Permission Group" name="profile" reporter:datatype="link"/>
diff --git a/Open-ILS/examples/fm_IDL.xsd b/Open-ILS/examples/fm_IDL.xsd
index b2720a1..7ebbd51 100644
--- a/Open-ILS/examples/fm_IDL.xsd
+++ b/Open-ILS/examples/fm_IDL.xsd
@@ -51,6 +51,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
<xs:element ref="idl:description" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name"/>
+ <xs:attribute name="suppress_controller"/>
<xs:attribute ref="oils_obj:array_position"/>
<xs:attribute ref="oils_obj:required"/>
<xs:attribute ref="oils_obj:validate"/>
diff --git a/Open-ILS/src/c-apps/oils_idl-core.c b/Open-ILS/src/c-apps/oils_idl-core.c
index 471435c..5d432ab 100644
--- a/Open-ILS/src/c-apps/oils_idl-core.c
+++ b/Open-ILS/src/c-apps/oils_idl-core.c
@@ -156,6 +156,13 @@ osrfHash* oilsIDLInit( const char* idl_filename ) {
snprintf( array_pos_buf, sizeof( array_pos_buf ), "%u", array_pos++ );
osrfHashSet( field_def_hash, strdup( array_pos_buf ), "array_position" );
+ // Tokenize suppress_controller attribute into an osrfStringArray
+ if( (prop_str = (char*)xmlGetProp(_f, BAD_CAST "suppress_controller")) ) {
+ osrfLogDebug(OSRF_LOG_MARK, "Controller suppression list is %s", prop_str );
+ osrfStringArray* controller = osrfStringArrayTokenize( prop_str, ' ' );
+ osrfHashSet( field_def_hash, controller, "suppress_controller");
+ }
+
if( (prop_str = (char*)xmlGetNsProp(_f, BAD_CAST "i18n", BAD_CAST PERSIST_NS)) ) {
osrfHashSet(
field_def_hash,
diff --git a/Open-ILS/src/c-apps/oils_sql.c b/Open-ILS/src/c-apps/oils_sql.c
index b262a70..a0ba678 100644
--- a/Open-ILS/src/c-apps/oils_sql.c
+++ b/Open-ILS/src/c-apps/oils_sql.c
@@ -4203,7 +4203,16 @@ char* SELECT (
// Look up the field in the IDL
const char* col_name = jsonObjectGetString( selfield );
- osrfHash* field_def = osrfHashGet( class_field_set, col_name );
+ osrfHash* field_def;
+
+ if (!osrfStringArrayContains(
+ osrfHashGet(
+ osrfHashGet( class_field_set, col_name ),
+ "suppress_controller"),
+ modulename
+ ))
+ field_def = osrfHashGet( class_field_set, col_name );
+
if( !field_def ) {
// No such field in current class
osrfLogError(
@@ -4282,7 +4291,16 @@ char* SELECT (
jsonObjectGetKeyConst( selfield, "column" ) );
// Get the field definition from the IDL
- osrfHash* field_def = osrfHashGet( class_field_set, col_name );
+ osrfHash* field_def;
+ if (!osrfStringArrayContains(
+ osrfHashGet(
+ osrfHashGet( class_field_set, col_name ),
+ "suppress_controller"),
+ modulename
+ ))
+ field_def = osrfHashGet( class_field_set, col_name );
+
+
if( !field_def ) {
// No such field in current class
osrfLogError(
@@ -5202,6 +5220,9 @@ static char* buildSELECT ( const jsonObject* search_hash, jsonObject* rest_of_qu
if( !field )
continue;
+ if (osrfStringArrayContains( osrfHashGet(field, "suppress_controller"), modulename ))
+ continue;
+
if( first ) {
first = 0;
} else {
@@ -6056,6 +6077,10 @@ int doUpdate( osrfMethodContext* ctx ) {
if( str_is_true( osrfHashGet( field_def, "virtual") ) )
continue;
+ if (osrfStringArrayContains( osrfHashGet(field_def, "suppress_controller"), modulename ))
+ continue;
+
+
const char* field_name = osrfHashIteratorKey( field_itr );
if( ! strcmp( field_name, pkey ) )
continue;
diff --git a/Open-ILS/web/reports/xul/source-browse.js b/Open-ILS/web/reports/xul/source-browse.js
index 4075dd1..0442e3a 100644
--- a/Open-ILS/web/reports/xul/source-browse.js
+++ b/Open-ILS/web/reports/xul/source-browse.js
@@ -36,6 +36,9 @@ function sourceTreeHandler (ev, dbl) {
var name = field.getAttributeNS(rptNS,'label');
if (!name) name = field.getAttribute('name');
+ var suppress = field.getAttribute('suppress_controller');
+ if (suppress && suppress.indexOf('open-ils.reporter-store') > -1) continue;
+
var idlclass = link_fields[i].getAttribute('class');
var map = link_fields[i].getAttribute('map');
var link = link_fields[i].getAttribute('field');
diff --git a/Open-ILS/web/reports/xul/source-setup.js b/Open-ILS/web/reports/xul/source-setup.js
index 7a9ca84..ebb6a6d 100644
--- a/Open-ILS/web/reports/xul/source-setup.js
+++ b/Open-ILS/web/reports/xul/source-setup.js
@@ -300,6 +300,9 @@ function populateDetailTree (tcNode, c, item) {
var type = fields[i].getAttributeNS(rptNS, 'datatype');
//if (!type) type = 'text';
+ var suppress = fields[i].getAttribute('suppress_controller');
+ if (suppress && suppress.indexOf('open-ils.reporter-store') > -1) continue;
+
var label = fields[i].getAttributeNS(rptNS, 'label');
var name = fields[i].getAttribute('name');
if (!label) label = name;
commit 245c4faa7a22f9c67a3a738913df6fd5df15a06f
Author: Bill Erickson <berick at esilibrary.com>
Date: Wed Oct 31 09:00:19 2012 -0400
Add sample log redaction config to EG opensrf_core
Redact parameter logging for the following API calls:
Login:
open-ils.auth.authenticate.verify
open-ils.auth.authenticate.complete
open-ils.auth_proxy.login
User updates:
open-ils.actor.user.password
open-ils.actor.user.username
open-ils.actor.user.email
open-ils.actor.patron.update
open-ils.cstore.direct.actor.user.create
open-ils.cstore.direct.actor.user.update
open-ils.cstore.direct.actor.user.delete
Signed-off-by: Bill Erickson <berick at esilibrary.com>
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/examples/opensrf_core.xml.example b/Open-ILS/examples/opensrf_core.xml.example
index 440bd8b..7bc022f 100644
--- a/Open-ILS/examples/opensrf_core.xml.example
+++ b/Open-ILS/examples/opensrf_core.xml.example
@@ -170,4 +170,22 @@ Example OpenSRF bootstrap configuration file for Evergreen
</router>
</routers>
<!-- ======================================================================================== -->
+
+ <!-- Any methods which match any of these match_string node values will
+ have their params redacted from lower-level input logging.
+ Adjust these examples as needed. -->
+ <shared>
+ <log_protect>
+ <match_string>open-ils.auth.authenticate.verify</match_string>
+ <match_string>open-ils.auth.authenticate.complete</match_string>
+ <match_string>open-ils.auth_proxy.login</match_string>
+ <match_string>open-ils.actor.user.password</match_string>
+ <match_string>open-ils.actor.user.username</match_string>
+ <match_string>open-ils.actor.user.email</match_string>
+ <match_string>open-ils.actor.patron.update</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.create</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.update</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.delete</match_string>
+ </log_protect>
+ </shared>
</config>
commit 650caa116c210bb5b8c1903239b27e04ab5f6d30
Author: Dan Scott <dscott at laurentian.ca>
Date: Tue Nov 6 09:48:51 2012 -0500
Document log redaction XML for opensrf_core.xml (2.2)
Based on Bill Erickson's original text.
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/docs/RELEASE_NOTES_2_2.txt b/docs/RELEASE_NOTES_2_2.txt
index 11ac2ef..5961379 100644
--- a/docs/RELEASE_NOTES_2_2.txt
+++ b/docs/RELEASE_NOTES_2_2.txt
@@ -6,6 +6,33 @@ Release notes
Upgrade notes
-------------
+Log Protect (redaction)
+~~~~~~~~~~~~~~~~~~~~~~~
+To prevent sensitive information such as passwords from being logged
+in general activity logs, add the following XML chunk to the bottom of
+`opensrf_core.xml`, just inside the `<config>` section:
+
+[source, xml]
+----------------------------------------------------------------
+ ...
+ </routers>
+ <shared> <!-- new block starts here -->
+ <log_protect>
+ <match_string>open-ils.auth.authenticate.verify</match_string>
+ <match_string>open-ils.auth.authenticate.complete</match_string>
+ <match_string>open-ils.auth_proxy.login</match_string>
+ <match_string>open-ils.actor.user.password</match_string>
+ <match_string>open-ils.actor.user.username</match_string>
+ <match_string>open-ils.actor.user.email</match_string>
+ <match_string>open-ils.actor.patron.update</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.create</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.update</match_string>
+ <match_string>open-ils.cstore.direct.actor.user.delete</match_string>
+ </log_protect>
+ </shared> <!-- new block ends here -->
+</config>
+----------------------------------------------------------------
+
Z39.50 Server Definitions
~~~~~~~~~~~~~~~~~~~~~~~
Z39.50 server target definitions have been removed from the sample
@@ -608,4 +635,4 @@ License
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Unported License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
-Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
\ No newline at end of file
+Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
-----------------------------------------------------------------------
hooks/post-receive
--
Evergreen ILS
More information about the open-ils-commits
mailing list