VuFind® Change Log
Release 10.0 - coming June 24, 2024
New features:
Rendering of search results has been improved to take advantage of Javascript where available for a more responsive and accessible user experience. This functionality is on by default but can be disabled if unwanted; see
pull request #2929.
-
An optional “explain” feature can now be enabled in Solr-based search backends to visually explain relevance ranking of individual search results; see
pull request #3069 for details.
On-screen virtual keyboards can now be enabled through searchbox.ini if needed; see
pull request #2952 for more details.
The user interface for browsing full facet lists now includes a “filter” text input when the underlying index supports filtering functionality. In this release, only Solr facets with translation disabled are supported. See
pull request #2991 for more details.
Favorite lists now support multi-page selection (i.e. checkbox states persist across multiple pages of results) for bulk actions; this new option is enabled by default but can be disabled. See
pull request #3142 for details.
Translation strings can now optionally use the ICU MessageFormatter syntax to allow more sophisticated conditional translation (e.g. to handle plural forms); see
pull request #3286 for details.
The content, order and behavior of the user account menu can now be customized using the new AccountMenu.yaml configuration file. See
pull request #3415 for details.
The new Databases recommendation module can be used to display links to external databases based on facet values found in search results. It is primarily designed for use with EDS and LibGuides, but it is adaptable to other scenarios. See
pull request #3160 for details.
The new ConsortialVuFind recommendation module can be enabled to search a third-party VuFind® instance using the public
API in order to display additional results. See
pull request #3270 for details.
Pagination controls can now optionally be added at the top of search result screens via the new top_paginator setting. See
pull request #3034 for details.
There is now an option to use Solr's “direct” spellchecker instead of the index-based spellchecker; see the dictionaries setting in the [Spelling] section of config.ini (and
pull request #3547) for more details.
Bound-with records can now be displayed in holdings using data retrieved from the ILS (where supported – currently only in FOLIO).
The new [HiddenSorting] section of backend-specific configuration files (searches.ini, etc.) makes it possible to enable sort options without adding them to the user-facing sort control, for use cases where sort options are valuable in direct links but not through the user interface. See
pull request #3237 for details.
-
The “new items” search can now use a different default sort than other search types, and it can be configured to display facet values for pre-filtering. See
pull request #3269 for details.
-
-
-
The Primo module now supports display of citation/cited-by lists for eligible records.
There is now a contentsecuritypolicy.ini section for enabling NEL (Network Error Logging) headers. See
pull request #3593 for details.
-
It is now possible to create an aliases.ini file within a language directory to set up translation aliases; see
pull request #3249 for details.
Language names are now internationalized by default (in facets and record displays); see
pull request #3200 for details.
Māori language support has been added to the user interface.
Possible backward compatibility breaks:
The minimum PHP version requirement has been raised to 8.1, as earlier versions are no longer supported by the PHP community. Please make sure your server is running a supported version before upgrading.
A full reindex of the Solr index is required due to the upgrade to Solr 9.5.0; it will also allow you to take advantage of changes to the schema. See the
index schema changelog for details.
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
The default theme has been changed from bootprint3 to sandal; the bootprint3 theme will eventually be retired, so if you are using it as the foundation for your local theme, you should consider revisions.
The new load_results_with_js setting is on by default for all search backends to improve the user search experience. This causes some changes to the user interface, most significantly changing the summary at the top of the search results to include navigation buttons and more concise text. If necessary, this behavior can be changed via settings added to searches.ini and other backend-specific configuration files in
pull request #2929.
The isLoggedIn() method of \VuFind\Auth\Manager and \VuFind\View\Helper\Root\Auth has been deprecated, since returning an object from a method with a Boolean name was potentially confusing. You should use getIdentity() or getUserObject() instead. Use getIdentity() if you only need a basic login status from the RBAC system; use getUserObject if you need to interact with VuFind®-specific user properties.
The \VuFind\Db\Entity\UserEntityInterface has been introduced as an abstraction to reduce dependence on any specific database framework. Several constructors and methods with \VuFind\Db\Row\User typehints have been updated to use the new interface instead. See
pull request #3478,
pull request #3500 and
pull request #3605 for details.
Code related to encryption of passwords has been refactored to the \VuFind\Auth\ILSAuthenticator. The getCatPassword() and encryptOrDecrypt() methods of \VuFind\Db\Row\User have been deprecated. Several constructor signatures have changed (\VuFind\Auth\CAS, \VuFind\Auth\ILSAuthenticator, \VuFind\Auth\LDAP, \VuFind\Auth\Shibboleth, \VuFind\Auth\SimulatedSSO, \VuFind\OAuth2\Entity\UserEntity and \VuFind\OAuth2\Repository\IdentityRepository). See
pull request #3537 for details.
Adjustments have been made to both code and configuration to support changing standards around Content Security Policy violation reporting. If you use the report-to[] setting in contentsecuritypolicy.ini, adjustments will be needed. Additionally, the \VuFind\Security\CspHeaderGenerator::getHeader() method has been deprecated. See
pull request #3591 for details.
The \VuFind\Search\QueryAdapter and related query minification/deminification logic has been significantly refactored to eliminate static methods and improve customizeability. This impacts \VuFind\Search\Base\Params, VuFind\Search\Base\Results and their subclasses and \VuFind\Search\Minified as well as the aforementioned QueryAdapter. Since this code was previously difficult to customize, this probably has limited impact on custom code, but if you have customized logic in these areas, see
pull request #3358 for details.
Javascript code driving the autocomplete feature has been refactored and moved from common.js to searchbox_controls.js. If you have customized this code, adjustments will be needed. See
pull request #3064 for details.
The past_days translation string has been revised to use ICU MessageFormatter syntax, and the Yesterday translation has been removed as redundant; if you use or have overridden these translation strings, you will need to make local adjustments. See
pull request #3286 for details.
Some redundant bulk-action-related language strings have been simplified and replaced with aliases (mostly those starting with “bookbag_”); other such strings have been renamed (from a “_selected” suffix to a “bulk_” prefix). If you have customized these strings, adjustments may be needed. See
pull request #3239 for details.
Language strings related to saved items have been renamed and consolidated; the old strings “Favorites”, “My Favorites” and “Your Favorites” have been removed in favor of “default_list_title” and “saved_items”. If you customized any of those old strings, you should move your customizations to the new keys. See
pull request #3489 for details.
The getResultTotal() method of Results objects can now return a -1 value, indicating that a result total cannot be determined (for example, when processing combined search results). If you have custom code using this value, you may need to add handling for this special case.
The SearchTabs view helper has been significantly simplified and refactored; local customizations may need to be adjusted to match. See
pull request #3309 for details.
Primo Central users are strongly encouraged to switch the api setting in Primo.ini from “legacy” to “rest” to take advantage of newer and more reliable APIs. The legacy connectors will be removed in the next release. See
pull request #3255 for details.
The language translation map used for indexing MARC records has been updated to use labels from the latest MARC standards. You should reindex all of your MARC records to ensure index consistency (and up-to-date language names). See
pull request #2933 for details.
Refactoring of the post-login redirect system has led to the replacement of the \VuFind\Controller\AbstractBase::getFollowupUrl() method with \VuFind\Controller\AbstractBase::getAndClearFollowupUrl(). If you have code that relies on the old method, please review
pull request #2941 and adjust it accordingly.
\VuFind\Auth\Manager has had some minor backward-breaking changes that may require updates to local subclasses or custom code.
The constructor signature has changed to accommodate the new LoginTokenManager used by
persistent logins.
The protected updateUser() method now has a required second argument; see
pull request #3432.
The constructor signatures of the CartController and MyResearchController have been adjusted to reduce direct dependency on the ServiceLocator. Custom subclasses may require adjustments. See
pull request #3239 for details.
Some code has been reorganized to prepare for future database library upgrades.
\VuFind\RecordDriver\AbstractBase::addTags() has been deprecated in favor of \VuFind\Db\Service\TagService::addTagsToRecord()
\VuFind\RecordDriver\AbstractBase::deleteTags() has been deprecated in favor of \VuFind\Db\Service\TagService::deleteTagsFromRecord()
The
record versions functionality has been simplified for consistency and maintainability. If you have customized any functionality related to versions, adjustments may be needed. See
pull request #3295 and
#3300 for full details; significant highlights:
The \VuFind\Record\VersionsHelper and \VuFindSearch\Command\WorkExpressionsCommand classes are no longer needed and have been removed.
The \VuFindSearch\Feature\WorkExpressionsInterface and its implementation in \VuFindSearch\Backend\Solr\Backend are no longer needed and have been removed.
Some methods/method signatures have changed in \VuFindSearch\Query\WorkKeysQuery.
Links to versions of records that are not found in the Solr index (i.e. legacy links to deleted records) will no longer work.
The ProxyManager library is no longer being maintained, so code relying upon it has been refactored. This has resulted in changes to the constructor signatures of \VuFind\Auth\ILSAuthenticator and \VuFind\Auth\Manager and to the behavior of \VuFind\Auth\ILSAuthenticatorFactory, \VuFind\Log\LoggerFactory and \VuFind\Session\SecureDelegatorFactory. See
pull request #3343 and
pull request #3390 for details.
A new SearchSettings view helper has been introduced to simplify template logic related to the display of checkboxes for the cart and bulk actions. See
pull request #3292 for details.
Some logic has been refactored from \VuFind\Controller\CombinedController into \VuFind\Search\Combined\Options to improve encapsulation. As a result, the constructor signature of the Options class has changed. See
pull request #3292 for details.
The signature of \VuFind\Search\SolrCollection\Params::initFromRecordDriver() has changed; if you have customized this in a subclass, you will need to adjust your method to match. See
pull request #3182 for more details.
The \VuFindSearch\Backend\EDS\SearchRequestModel::endsWith() method has been removed, as it can now be replaced by the native PHP str_ends_with() function. Please switch to str_ends_with() if you were using this method in custom code.
Code related to displaying hierarchies of collections has been significantly revised and simplified. If you have custom tree-related code, it will likely need revision. See
pull request #3277 for full details. Highlights:
jsTree is no longer used to render hierarchies and has been removed from the codebase.
The JSTree TreeRenderer class has been replaced by a new HTMLTree class.
XML hierarchy file support has been removed; all tree data is now stored and processed using JSON.
Tree-related styles have been completely rewritten.
Code related to displaying hierarchical facets has been significantly simplified to eliminate the use of jsTree; if you have customized this code, local changes may be needed. See
pull request #3046. Updates include constructor signature changes to \VuFind\AjaxHandler\GetSideFacets and \VuFind\Recommend\FavoriteFacets.
The signature of \VuFindSearch\Backend\Solr\QueryBuilderInterface::build() has been expanded; custom query builder classes may require adjustment. See
pull request #3590.
The signature of \VuFindSearch\Backend\Solr\QueryBuilder::checkParamConditions() has changed. In the unlikely event that you use or extend this method, changes will be required. See
pull request #3590.
The constructor signature for \VuFind\View\Helper\Root\ProxyUrl has changed; local custom subclasses may require adjustments. See
pull request #3199 for details.
Error handling has been simplified in \VuFind\Controller\AjaxController to reduce the likelihood of errors getting missed; AJAX calls are now more likely to fail in development mode when PHP warnings or notices occur during processing, but this should help catch problems earlier instead of concealing them. See
pull request #3267 for details.
The \VuFind\Search\Base\Options::supportsFirstLastNavigation() method has been deprecated in favor of the more clearly-named recordFirstLastNavigationEnabled() method. The supporting protected $firstlastNavigation property has been removed. Custom code leveraging this code will need to be adjusted; see
pull request #3404 for details.
The signature and input of \VuFind\ILS\Driver\Folio::formatHoldingItem have changed slightly; see
pull request #3094 and make adjustments if you locally extend or utilize this method.
The \VuFind\Bootstrapper::initLocaleAndTimeZone() method has been renamed to initTimeZone(), since local initialization is no longer necessary. See
pull request #3526 for details.
Some constructor typehints have been broadened from \Laminas\Cache\Storage\Adapter\AbstractAdapter to \Laminas\Cache\Storage\StorageInterface. This change impacts \VuFind\Recommend\LibGuidesProfile, \View\Helper\Root\ProxyUrl and \VuFindSearch\Backend\EDS. See
pull request #3369.
The CspNonce view helper has been deprecated in favor of the getNonce method in the Csp view helper, and it will be removed in release 11. The Csp view helper's constructor signature has changed to support this merger. In the unlikely event that you use or modify this helper in custom code, adjustments may be needed. See
pull request #3392.
The
alphabetical browse handler has been significantly updated; if you use a custom build of the handler or if you have modified the index-alphabetic-browse scripts, adjustments may be needed
The project layout, code and build process have been modernized to use more up-to-date Java conventions, and Leech classes have been renamed to use more standardized terminology. See
pull request vufind-browse-handler#48 for details.
The index-alphabetic-browse scripts have been updated to use renamed options and classes (see
pull request #3253 for details).
Some deprecated methods (org.vufind.solr.handler.BibDB::matchingIDs, org.vufind.solr.handler::getIds and org.vufind.solr.handler::setIds) have been removed; see
pull request vufind-browse-handler#49.
The signatures of the \VuFind\Controller\ContentController::getViewFor*() methods have been changed to improve flexibility; in the unlikely event that you have changed/extended these, see
pull request #3452 for necessary adjustments.
Javascript code no longer uses DOM CustomEvents, and event names have been revised. See
pull request #3361 if you have custom code that interacts with internal events; it will need to be revised based on these changes.
The .offcanvas
CSS class in the bootstrap3 theme has been renamed to .vufind-offcanvas to prevent conflicts with an .offcanvas class introduced in newer versions of Bootstrap. If you rely on or customize this class in custom code, please adjust accordingly. See
pull request #3484 for details.
The constructor signature of \VuFind\Controller\OAuth2Controller has been adjusted to remove the \LmcRbacMvc\Service\AuthorizationService object, which was not used or needed.
Code deprecated in release 9.x has now been removed:
\VuFind\Auth\AbstractBase::getCannedPasswordPolicyHint() - use getCannedPolicyHint() instead.
\VuFind\Recommend\SearchObject - use AbstractSearchObject instead.
-
\VuFindSearch\Backend\EDS\Backend::debugPrint() and \VuFindSearch\Backend\EDS\Base::debugPrint() - use debug() instead.
Submit inputs named “submit” have been renamed to “submitButton” to avoid side effects caused by using a reserved word as a name; the CAPTCHA processing code now looks for this new name by default (but maintains backward compatibility with the old name). It is strongly recommended that you update any forms you have built or customized to use submitButton instead of submit.
The protected \VuFindTheme\ThemeInfo::mergeWithoutOverride() method has been renamed, refactored and moved into \VuFind\Feature\MergeRecursiveTrait::mergeRecursive() for easier reuse. In the unlikely event that you have custom code relying on this method, minor adjustments will be needed; see
pull request #3417 for details.
The \VuFind\View\Helper\Root\RecordDataFormatter\SpecBuilder::setDefaultPrioritizeAlt() method was removed as it is superseded by RecordDataFormatter.ini functionality; this method was introduced in release 9.1 and never used in core code, so the removal is unlikely to affect anyone.
Historically, the event system has used a mix of “VuFindSearch” and “VuFind\Search” to namespace search-related events. While these old names will still be supported for backward compatibility, it is now recommended that you use \VuFindSearch\Service::class (the class name of the search service) as the event namespace for consistency. See
pull request #3497 for details.
Javascript initialization has been revised and refactored for reduced redundancy and greater flexibility. Significant changes that could impact backward compatibility include refactoring additional logic from search/results.phtml into search/results-scripts.phtml and moving the initResultScripts Javascript function from combined-search.js into common.js. See
pull request #2878 for details.
The “Favorites” controller plug-in now depends on \VuFind\Favorites\FavoritesService, and \VuFind\Favorites\FavoritesService::getListObject is now public, to reduce redundancy. See
pull request #2887 for details.
The \VuFind\View\Helper\Root\RecordDataFormatter class now accepts a configuration object through its constructor; in the unlikely event that you have a custom subclass with a constructor, it will need to be adjusted to match.
The “tag” help screen was removed, because it was no longer linked anywhere, and the content was out of date. See
pull request #3174.
Release 9.1.2 - currently in development
Minor bug fix release.
A bug fix to the conditional filter listener required a change to the constructor signature of \VuFind\Search\Solr\InjectConditionalFilterListener (and associated factory code). See
pull request #3513 for details.
The \VuFind\Search\Solr\InjectHighlightingListener::onSearchPost() method has been deprecated, and its functionality has been refactored to \VuFind\RecordDriver\PluginManager and \VuFindSearch\Backend\Solr\Response\Json\RecordCollectionFactory in order to address a bug in highlighting blended searches. See
#3614 for details.
Fixes to date range handling required signature changes to several methods in \VuFind\Search\Base\Params: formatDateForFullDateRange(), formatValueForNumericRange() and formatYearForDateRange(). In the unlikely event that you have extended these methods, adjustments may be needed. See
pull request #3465 for details.
Fixes to the switch_db_hash command line utility required a change to the constructor signature of \VuFindConsole\Command\Util\SwitchDbHashCommand. In the extremely unlikely situation that you have overridden this constructor, adjustments will be needed. See
pull request #3476 for details.
Due to changes in the phpCAS library, users of CAS authentication are encouraged to populate the service_base_url[] setting in the [CAS] section of config.ini. The log setting in the same configuration section is no longer supported and has been removed; CAS messages will now be sent to the standard configured logger.
Release 9.1.1 - 2/12/2024
Minor bug fix / translation improvement release.
Adds support for FOLIO's new RTR authentication mechanism (disabled by default until the feature is more widely available; see the legacy_authentication setting in Folio.ini)
Includes the addition of Mongolian as a new interface language.
All translations of the tree_search_limit_reached_html string have been adjusted to remove the outgoing link. This rarely-seen link was invalid and has not worked correctly at any point in the project's history, so removing it seemed like the most appropriate solution. See
pull request #3274 for details.
Some method signatures changed as part of a bug fix to the LocalFile cover handler. In the very unlikely situation that you have customized this code, adjustments may be needed. See
pull request #3337.
If you utilize the cover image proxy (most likely only true for Summon users), make sure that the coverproxyAllowedHosts setting in config.ini is set correctly. See
pull request #3385 for details.
Release 9.1 - 10/30/2023
New features:
The EBSCO Publication Finder is now supported as a search backend (requires a valid EBSCO subscription).
-
Added support for the
getUrlsForRecord ILS driver method (currently implemented for KohaRest and the Demo driver).
Users can now view all of their proxy relationships through the Profile page (if supported by the ILS driver). See
pull request #3006.
Added support for the
purgeTransactionHistory ILS driver method (currently implemented for KohaRest, SierraRest and the Demo driver).
ILS drivers can now report an “uncertain” status in addition to the traditional true/false availability status values. This new feature is currently supported by the Alma and Demo drivers. See the locationTypeItemStatus setting in Alma.ini for related configuration.
The import-marc.sh ingest script can now accept multiple MARC files in a single call to reduce overhead of starting up SolrMarc. In Linux, the harvest/batch-import-marc.sh script now takes advantage of this by default, adding a -x switch to set the number of files to index per call to SolrMarc. See
pull request #2995 for details.
The util/deletes command line script now supports an –id-prefix option to prefix the IDs of records being deleted.
Combined search has been enhanced with some new configuration settings to allow the optional inclusion of advanced search links in combined search results (see
pull request #3099), to better retain the order of sections on small screens (see
pull request #3077), to display side recommendations (see
pull request #3135) and to display a “jump menu” at the top of the page (see
pull request #3083).
A new LibGuidesAZ search backend has been added to search Database A-Z lists stored in LibGuides; this serves as a complement to the existing LibGuides search backend, which allows search of regular guides in LibGuides. See
pull request #2860 for details.
It is now possible to configure custom Solr highlighting parameters. See
pull request #2927 for details.
Custom scripts can now be set up to run via the Maintenance page of the Admin module (optional, disabled by default, and permission-controlled). See
pull request #2866 for details.
When records are displayed based on using the record cache in “fallback” mode, a warning message is now displayed. See
pull request #2886 for details.
Turning on debug mode in config.ini now displays ALL messages, not just debug-level messages, to assist with troubleshooting of errors.
File-based caching can now be disabled by default if desired (see the disabled setting in the [Cache] section of config.ini). Additionally, context-specific caching override settings have been introduced for some services (see
pull request #2659 for details).
It is now possible to add a DirLocations.ini file to the root of a
local settings directory in order to customize some of its behavior (adjusting path to configuration files, inheriting from parent directories). See
pull request #2947 for details.
When
search tabs are enabled and hidden filters do not match any tab configurations, a “Custom Search” tab will be displayed. This behavior can be disabled by customizing the temporary_search_tab_title translation string to be empty. See
pull request #2908.
-
It is now optionally possible to include usernames in system-generated logs for diagnostic purposes (off by default – see
pull request #3156).
Sierra users can now configure mappings for patron block codes in SierraRest.ini (see
pull request #2856).
FOLIO users should be aware that the holding_id field in ILS driver responses has been renamed to holdings_id; the original name was a typographical error. Since this data field was not used for anything internally by the driver, the change should not impact users unless they have customized something. Local Folio.ini files should be updated to correct the field name in the HMACKeys setting. See
pull request #3101 for details. A similar fix for Alma has been applied in
pull request #3102, but this is more careful to retain backward-compatibility since the holding_id value is more likely to be used in production under Alma than FOLIO.
When indexing course reserves, the FOLIO driver will now exclude suppressed records by default (but this behavior can be changed via Folio.ini). See
pull request #2935 for details.
The new fallback_languages setting can be used to prioritize where translations are found when they are missing from the currently selected language. See
pull request #2891 for details.
Theme configuration now optionally supports multiple favicons (to allow for more than one size); see
pull request #2862.
The installation process now supports selection of a custom Solr port (see
pull request #2962).
Syndetics cover images can now be configured so that the Syndetics-generated placeholder images are only shown when the user “opts in” with the use_syndetics_cover_image_fallback cover setting. This way, if Syndetics has no available image, other configured cover providers will be used.
The new “LibGuidesProfile” recommendation module can display librarian information from LibGuides; see
pull request #2977.
Updated SolrMarc indexer (version 3.5).
New interface translation: Northern Sámi.
Possible backward compatibility breaks:
Solr has been upgraded to release 9.3.0. A full reindex will be necessary.
The upgraded version of SolrMarc now interprets translation maps as UTF-8 instead of Latin-1/ISO-8859-1. This new behavior is more consistent with the rest of the project, but it means that if you have local translation maps containing non-
ASCII characters, they will need to have their formats converted – e.g. with
iconv -f LATIN1 -t UTF-8 my-map.properties > my-map.properties
.
In order to reconcile inconsistent alphabetical title browse and title sort functionality, some changes had to be made to the way the title_sort field is populated by the XML indexer. If you use alphabetical browse or title sorting and index XML records, you may need to adjust any local custom XSLT sheets. See
pull request #3024 for details.
The
URL used for establishing an EBSCO Discovery Service session is now a configurable setting in EDS.ini. If you are using a non-standard api_url setting in EDS.ini, you may need to adjust the new session_url setting to match it.
As part of the update to add advanced search, the
Blended Search logic has been moved to its own controller and the old Search/Blended route has been deprecated (though it still works). If you have customized anything related to the old route or SearchController::blendedAction, it will need to be updated. See
pull request #3068 for details.
Hierarchical facet displays have been significantly revised to address accessibility problems with jsTree; if you have customized styles or implementation related to hierarchical facets, adjustments will likely be needed. See
pull request #3047 for details.
Escaping of dynamic values in the icon helper was previously done inconsistently and could cause problems in some rare edge cases. This has been fixed by
pull request #3084, which makes some significant changes to all icon-helper-related templates. In the relatively unlikely situation that you have customized these templates or extended the icon helper itself, you should review these changes and make local adjustments to match.
Some language file parsing/normalization logic and translation strings have been adjusted for compatibility with the Lokalise service. If you have custom language files, you may wish to run the
command line normalization tool on them and check whether you have overridden any impacted keys. More details:
Purely numeric language file keys are now enclosed in single quotes; see
pull request #3044.
The “Export to” translation string has been replaced by “export_to”, which includes a target token. The previous version of the translation string relied on whitespace in the translation file and concatenation in templates, which made proper translation more difficult.
The “with_selected” translation string has been removed, as its use in checkbox/button interfaces was inconsistently applied and confusing. If you have a local template that uses this string, you should adjust your template or reintroduce it as a local custom string. See
pull request #2978.
The system for retrieving alternate record versions from Solr has been revised to fix a bug related to large numbers of keys and to improve performance; see
pull request #3087 for details.
The signature of \VuFind\Auth\EmailAuthenticator::sendAuthenticationLink has been changed as part of a bug fix. In the unlikely event that you have customized this method or use it in custom code, adjustments may be needed. See
pull request #3030.
Some functionality of the laminas-mail library has been locally overridden to compensate for an upstream bug that will not be fixed by the package maintainers. If you encounter problems sending email, please review
pull request #3060 in case it is related.
The hash_passwords setting in config.ini is now set to “true” by default. The normal installation process has always changed this setting from “false” to “true” as part of the “security fix” step, but it originally defaulted to false for backward compatibility with release 1.x. Since direct migration from version 1.x to 9.x is extremely unlikely, the default has been changed to reduce the chances of accidental misconfiguration. If for some reason you have this set to false in your configuration, please use the web-based install tool's security fix option to correct it and hash existing passwords. The normal web-based upgrade process will automatically prompt you to take this action if necessary.
A few minor changes have been introduced to the EBSCO Discovery Service backend, which will only impact users who have customized low-level code in that service:
\VuFind\Search\EDS\Params::createBackendFilterParameters has been refactored to \VuFind\Search\EDS\AbstractParams and has had its second parameter ($options) removed, as it was not used for anything.
The edsApiHost property in \VuFindSearch\Backend\EDS\Base has been renamed to apiHost.
The facet_limit setting in EDS.ini has been removed, as it never had any effect due to limitations in the EDS
API.
debugPrint methods have been deprecated, and the debug method should be used instead for logging debug messages (debugPrint is retained for backward compatibility now but will be removed in release 10.0)
The Google, Orb and Syndetics cover image handlers have been refactored to add caching support, with some impact to their factories and internal methods. In the unlikely situation that you have extended these services, see
pull request #2659 and
pull request #3154 for details and adjust your local code to match.
Cart popover displays have been adjusted for validity/accessibility, with minor impact on associated Javascript and styles; see
pull request #2838.
Custom styles associated with the optional cookie consent feature have been significantly refactored; see
pull request #2909.
The GetItemStatuses AjaxHandler has been significantly revised to support a broader range of statuses. See
pull request #2857 for details.
Historic transaction functionality has been refactored to a separate CheckoutsController, and some associated templates and routes have been renamed. Old routes and URLs will redirect to the new ones for backward compatibility, but if you have modified the MyResearchController::historicloansAction() or the myresearch/historicloans.phtml template, you will need to move your changes. See
pull request #2779.
OCLC has shut down the WorldCatIdentities
API without providing a replacement, so the WorldCatIdentities recommendation module has been removed from the code along with the supporting \VuFind\Connection\WorldCatUtils class and the \VuFind\Autocomplete\OCLCIdentities handler. Existing configuration referring to WorldCatIdentities or OCLCIdentities should be removed for the sake of efficiency, but it should not break anything, due to aliasing to the “deprecated” recommendation module and the “none” autocomplete handler. Additionally, any custom code that refers to the WorldCatUtils class will need to be removed, as the functionality of this class is no longer supported by OCLC.
The Alma driver's constructor signature and factory configuration have changed, and its internal availability status logic has been significantly revised. See
pull request #2857 for details.
Improvements to the SierraRest driver have introduced some changes that could impact local custom subclasses: the HOLDINGS_LINE_NUMBER constant has been replaced with HOLDINGS_LOCATION_FIELD; the signatures of the getBibRecord and getItemStatusesForBib methods have changed; and the itemHoldAllowed method has been merged into the isHoldable method (whose signature has also changed). See
pull request #2921 for details.
The bootstrap-custom.css file has been removed from the bootstrap3 theme; this was provided as an example, but it was never used and had grown out of date, so it has been deleted to prevent confusion.
The \VuFind\Service\ReCaptcha class had to be rewritten for compatibility with the latest release of the laminas-recaptcha component. In the very unlikely situation that you locally extend this class, you will need to make adjustments. See
pull request #2911 for details.
The \VuFind\Recommend\SearchObject class has been deprecated and will be removed in release 10.0; please use \VuFind\Recommend\AbstractSearchObject instead.
Various templates have had minor accessibility improvements applied. When upgrading, it is strongly recommended that you synchronize these changes to your local templates. See the
Upgrading VuFind® Using Git video (or the resources linked from that page) for a possible approach to automating this process.
Stamen maps have been removed from the examples in geofeatures.ini, as this service has been discontinued. If you are using these maps, see the
Stamen x Stadia page.
Press Release
Video Summary
Release 9.0.3 - 7/24/2023
Minor bug fix release.
A bug fix to the ChannelsController changes the constructor signature to address an omission; if you have customized this controller or its factory, local adjustments may be needed. See
pull request #2989.
Adds a new “OperatorToFieldPrefix” view helper as part of a bug fix (see
pull request #2992).
The graphical icon used for facet exclusion in the bootprint3 theme has been changed back to a font-based icon matching the bootstrap3/sandal themes for aesthetic reasons including alignment problems (see
pull request #2996).
Release 9.0.2 - 6/26/2023
Release 9.0.1 - 4/24/2023
Release 9.0 - 4/24/2023
New features:
Support for
Blended Search, which can combine results from multiple search backends into a single list.
-
Support for user-provided star ratings of records (off by default; see the rating setting in the [Social] section of config.ini).
A new “interval”
CAPTCHA handler has been added which can be used to restrict user access to specific features based on frequency of activity rather than on a specific input. Useful, for example, to limit the number of emails or text messages that can be sent in a single session.
Support for proxy requests (i.e. one user places a hold for another user); currently FOLIO-only, but can be added to other compatible ILS systems in future.
Support for configurable username policies to restrict account names created within the system. See
pull request #2581 for details.
Feedback forms can now be forwarded/persisted using
Form Handler plugins. The pre-existing email-based functionality remains the default, but it is now also possible to store form submissions in the database or to build custom integrations.
Feedback forms can now be configured to allow some fields to be pre-populated using
URL query parameters.
A new administrative module has been created for managing feedback results stored in the database. See
pull request #2399 for details.
Support for using Koha local cover images as a cover image source.
-
The EDS and Primo backends now support facet value filtering, similar to the pre-existing functionality for Solr (see the [HideFacetValue] and [ShowFacetValue] sections in EDS.ini and Primo.ini for details).
The EDS and Primo backends now support search response caching for improved performance (see the [SearchCache] section in EDS.ini and Primo.ini for details).
Support for storing MARC records in MARC-in-JSON format in the Solr index.
The staff view for MARC records can be configured to also display indexed Solr fields (see
pull request #2540).
The new allowUserLogin setting in the [Catalog] section of config.ini can be turned off to disable direct end user login to the ILS; this can improve security in scenarios where user credentials are auto-loaded during authentication, and should never be input directly by the user.
The new bypass_default_filters setting in the [AlphaBrowse] section of config.ini has been added to solve problems with confusing interactions between default filters and alphabetic browse functionality. This is now on by default, but should be turned off if your default filters include “inverted facets” that expand the result set when applied. See
pull request #2538 for details.
The
BrowZine DOI linker plugin now supports the display of retraction notices.
-
-
-
Example import configuration has been added for ingesting XML harvested from
SubjectsPlus.
Possible backward compatibility breaks:
Press Release
Video Summary
Release 8.1.2 - 2/6/2023
Release 8.1.1 - 10/3/2022
Release 8.1 - 7/18/2022
New features:
A new “custom Solr filters” feature makes it possible to define “inverted facets” which apply filters UNLESS the user applies a specific filter (e.g. if you want to exclude things by default but have an opt-in checkbox). This feature also makes it possible to define more complex checkbox filters without creating unwieldy URLs for the end user. See
pull request #2340 and the [CustomFilters] section of facets.ini for more details.
New
fallback record loader to allow VuFind to look up Solr records based on previous IDs when current ID lookups fail (useful for compatibility with legacy URLs after a system migration); must be configured using the new fallback_id_field setting in
searches.ini.
Translated facet values can now be optionally configured to include both the raw and translated values together (see
pull request #2352 for details). This can be useful for displaying results based on classification systems.
Example configuration settings for importing CSV files exported from Scopus; see
pull request #2345.
New ILS driver: support for Lucidea's
GeniePlus.
New cover image service supported:
Bokinfo.
New interface translations: Armenian and Ukrainian.
Minor accessibility improvements.
-
Improved compatibility with PHP 8.1.
Possible backward compatibility breaks:
The default httpd-vufind.conf configuration for Apache has been changed to include a new public assets directory, which is required to apply styles to RSS feeds. It is strongly recommended that you update your local Apache configuration to match. See
pull request #2385 for details.
The “Loading…” message displayed in lightboxes has been visually improved to prevent formatting problems. If you have customized the lightbox Javascript code or your layout template, you should review the changes in
pull request #2197 and make sure no incompatibilities have been introduced.
For compatibility with PHP 8.1, some method signatures have had return types added in some classes implementing PHP standard interfaces. If you have extended any of the impacted classes, you will need to modify your custom code to match. See
pull request #2423 for details. Impacted code:
Custom session handlers (\VuFind\Session namespace)
Solr response wrapper classes (\VuFindSearch\Backend\Solr\Response\Json namespace)
\VuFindSearch\Response\AbstractRecordCollection
\VuFind\Search\ParamBag (very unlikely to be locally customized)
The Evergreen ILS driver had become outdated; it has been brought up to speed, but this required some backward-incompatible changes (including drop of support for Evergreen versions before 2.10). Evergreen users should review
pull request #2203.
The KohaRest ILS driver has had changes to its constructor signature to fix a problem related to the SafeMoneyFormatter view helper; it now relies on a new CurrencyFormatter service instead. See
commit 8d70097 for details.
The \VuFind\Record\FallbackLoader\SummonFactory has been replaced by \VuFind\Record\FallbackLoader\AbstractFallbackLoaderFactory. In the very unlikely situation that you rely on this in local code, you will need to use the new factory instead of the old one.
The ConfigManager used by SolrMarc custom indexing Java has been revised to solve a thread-related bug (see
VUFIND-1546). The getSanitizedConfigSection method has been deprecated, and the default behavior of getConfigSection has been changed to always sanitize values. If you have written custom indexing Java which utilizes the ConfigManager, you should review
pull request #2376 and adjust your code if necessary.
Language files and templates were adjusted slightly to improve internationalization of periods of ellipsis. In particular, the translation strings for “More EDS Results”, “More Summon Results”, and “Submitting” were updated to include periods of ellipsis in the language files instead of the templates. If you have customized these strings locally, you may need to review your customizations. See
pull request #2381 for details.
Some minor improvements to the accuracy of the FormatCalculator used during MARC indexing may result in slight changes to format assignment when you next reindex your records, particularly for component parts and electronic resources; see
pull request #2403 and
pull request #2408 for details.
The signature of \VuFind\Search\Options\ViewOptionsTrait::initViewOptions() has changed slightly (to make the parameter nullable). In the unlikely event that you have overridden this method, your subclass may need to be adjusted to match. See
pull request #2261.
Default content security policy settings have been changed to improve compatibility with Safari; if you have enabled CSP enforcement, you should review
pull request #2153 and consider adjusting your settings to match.
The
HTML title tag now includes the site title for improved accessibility. You should be sure that the title setting in the [Site] section of config.ini is appropriate. See comments above that setting for notes on how to customize this behavior.
The MultiBackend ILS driver has been refactored significantly to simplify the code. In the unlikely situation that you have built a local subclass of this code, you should review
pull request #2154 and make sure your code remains compatible. The biggest internal interface change is the replacement of methodSupported() with driverSupportsMethod().
Print-related Javascript has been split from common.js into a new separate file, to make targeted customization easier (see
pull request #2143). If you have a locally customized common.js, you should be sure to adjust it to match the upstream refactoring.
Press Release
Release 8.0.4 - 2/28/2022
Minor bug fix release, addressing problems with session management (see
VUFIND-1532) and long binary MARC records (see
VUFIND-1534).
Release 8.0.3 - 12/20/2021
Release 8.0.2 - 11/29/2021
Minor bug fix release.
Note that this release adds a new dependency (the composer/semver library, used to fix a bug in version number comparison during the upgrade process); if you are manually upgrading via Git, don't forget to run “composer install.” If you are installing from a package, no extra action is necessary.
Note that fixes to a problem with hierarchy tree displays in right-to-left languages required significant changes to some styles; if you have customized tree displays, you should review
pull request #2151.
Release 8.0.1 - 9/27/2021
Release 8.0 - 9/20/2021
New features:
It is now possible to import data directly to VuFind's Solr index from
CSV files (to complement existing support for MARC and XML indexing).
-
Significant performance improvements for internal handling of MARC records and search result rendering.
Citation generation has been significantly updated and improved.
Support for
Matomo analytics (for use with Matomo 4 and up; the pre-existing Piwik support remains for legacy versions). See
pull request #1943 for details.
New (optional) SolrPrefix autocomplete handler for making suggestions through the edge n-gram tokenizer (see
pull request #1850).
-
Sitemap generation has been improved to (optionally) include alternate-language versions of pages, as well as static content. See
pull request #1904.
Expanded holds functionality (for supporting ILS drivers): the ability to freeze holds until a start date, and the ability to edit fields in existing holds.
Support for call number prefixes (which are displayed, but do not affect sorting/searching), for supporting ILS drivers.
Improved support for rendering alternate-script versions of titles (and retrieving other data from MARC 880 fields).
Improved handling of punctuation in author names in MARC records (with some new associated configuration settings); see
pull request #2028 for details.
More flexible Javascript configuration in theme.config.php, including better control over loading order, plus the ability to load Javascript in the page footer as well as the
HTML header (see
pull request #1863 and
pull request #1799).
There is now a [ShowFacets] setting in facets.ini which complements the [HideFacets] setting by making it possible to create a fixed list of legal facet values, for fields where only certain specific values are meant to be displayed. See
pull request #2013 for details.
Restored support for XHProf
profiling (in addition to existing Tideways support).
-
The new GlobalExtraParams section in searchspecs.yaml makes it easier to configure custom boosts and other Solr parameters. See
pull request #2104.
The new “Content” view helper makes it easier to utilize VuFind's system for displaying internationalized content inside other templates; see
Embedding Static Content for more details.
Cover images can now be loaded from the
Orb service (with an appropriate subscription); see
pull request #1949.
Cover images can now have associated attribution messages, when required by a provider (currently used for ObalkyKnih).
The optional Memcache session handler now supports both of PHP's Memcache client libraries: \Memcache and \Memcached. Users can configure which one they prefer to use. See
pull request #1945.
All of the XML import example XSLT files have been updated to support both single-record and multi-record import. This means that if you are harvesting via OAI-PMH to index XML, you can turn on the combineRecords setting in oai.ini to save records in batches rather than as separate files, and your subsequent indexing should be significantly faster.
-
Feedback forms have some minor improvements: overrideable email senders, date fields, and improved validation.
Dewey indexing rules have been updated to use DDC 23 instead of DDC 22 by default (but DDC 22 mappings are retained for backward compatibility).
VuFind now supports loading templates from modules as well as loading templates from themes; this will make it easier to build and distribute third-party VuFind plugins that can be loaded via Composer. See
pull request #1424 for details.
The new Icon view helper makes it easier to configure and customize icons used in the user interface; for this release, it is only being used for loading spinners, but future releases will leverage it more widely.
Further improvements to accessibility.
Further improvements to PHP 8 compatibility.
Upgraded to Solr 8.9.0.
-
Possible backward compatibility breaks:
Press Release
Release 7.1.1 - 7/5/2021
Release 7.1 - 2/22/2021
New features:
The new
Record Versions feature provides links between different editions or versions of the same work; this is on by default but can be disabled through the display_versions setting in searches.ini if it is not needed.
PHP 8 compatibility has been improved.
Tags can now be applied to user lists as well as resources; this feature is disabled by default (see the listTags setting in config.ini). The ListItems
channel provider now has new options to take advantage of list tags for channel selection. See
pull request #1645 for details.
Facet values can be filtered natively in Solr (by prefix or regular expression) using the new facet_prefix_by_field and facet_matches_by_field settings in
facets.ini; see
pull request #1694.
Solr has been upgraded to version 7.7.3.
The Shibboleth authentication handler has been significantly revised and improved, with some new features and settings added; see
pull request #1617 for details.
The XCNCIP2 ILS driver has been significantly revised and improved.
If you wish to render a custom template instead of displaying a specific “no cover” image when a cover graphic cannot be found, you can use the useCoverFallbacksOnFail setting in combination with the ajaxcovers setting in config.ini; see
pull request #1679.
Permissions (and associated permission denied behavior) can now be applied to columns within combined search results. See
pull request #1707 for details.
Specific values can be moved to the tops of the advanced search facet lists for Solr (for example, to highlight commonly-used values) using the new limitOrderOverride setting in facets.ini. See
pull request #1807 for details.
A new log writer has been added for Office365 webhooks (for notifications into Microsoft Teams); see
pull request #1757.
The Solr field used for storing full MARC records in the index is now configurable (see
pull request #1813).
Some settings controlling the VuFind
API are now more easily configurable (see
pull request #1838).
Possible backward compatibility breaks:
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
Be sure to reindex your records due to the Solr upgrade and to ensure that Record Version functionality is set up correctly.
If you use VuFind's optional sharding support, note that some additional Solr configuration may now be needed due to the upgrade; see “Configuring the ShardHandlerFactory” in
the Solr documentation for details.
VuFind\Db\Row\UserList now has the VuFind\Tags service as a constructor parameter; in the unlikely case that you have a custom subclass/factory, be sure to adjust it accordingly. See
commit 2b05cef for details.
VuFind\ChannelProvider\ListItems now has the VuFind\Db\Table\ResourceTags table object as a constructor parameter; in the unlikely case that you have a custom subclass/factory, be sure to adjust it accordingly. See
pull request #1645 for details.
The Symfony YAML library has been updated from version 3 to version 4, which has more strict validation rules; if you have custom YAML configurations, you should make sure that they still load correctly, and fix them if they contain errors.
If you use a custom version of the Shibboleth authentication handler, local customizations may need to be adjusted to match the refactoring in
pull request #1617.
If you use the XCNCIP2 ILS driver, you should review
pull request #1672 and make sure that the changes and fixes there do not conflict with any local customizations.
The EDS integration now stores search options in the cache; this improves performance and stability by reducing reliance on the
API, but it also means that you may need to clear your local cache if you change settings in EBSCO's admin panel.
The constructor signature of the KohaRest ILS driver has been changed to make the money format helper optional; in the very unlikely case that you have customized this, your subclass will need to be adjusted to match. See
commit b4edee8 for details.
The constructor signature of the GetRecordCover AJAX handler class has been changed to fix a bug; in the very unlikely situation that you have extended this class, you will need to adjust your custom code to match. See
pull request #1842 for details.
A new transEscAttr() view helper has been added (see
pull request #1820) to escape translated text for use in
HTML attributes. This should not introduce any backward compatibility problems, but if you are inserting translated text into
HTML attributes in local custom templates, you should use this helper to ensure proper escaping with concise code.
VuFind's Markdown processor (
league/commonmark) has been upgraded to version 1.5; this deprecates the “inner_contents” setting for the HeadingPermalink plugin, replacing it with “symbol.” In the unlikely event that you have customized this setting in markdown.ini, you should update its name accordingly.
VuFind\Db\Row\UserList::getTags() has been deprecated in favor of VuFind\Db\Row\UserList::getResourceTags(). VuFind\Db\Table\ResourceTags::destroyLinks() has been deprecated in favor of VuFind\Db\Table\ResourceTags::destroyResourceLinks(). The deprecated methods will be removed in VuFind 8.0. See
commit 2b05cef for details.
Press Release
Release 7.0.2 - 12/7/2020
Minor bug fix release.
Solr has been upgraded to version 7.4.0 in order to fix
VUFIND-1459. A reindex should not be necessary, but may be a good idea as a precaution.
Some style and template details have changed to fix a bug in the Channels interface; see
pull request #1787 for details. This is unlikely to impact you unless you have customized this optional feature.
An incompatibility between
content security policy support and the
asset pipeline has been resolved. If you are using both features, be sure to set the new asset_pipeline_max_css_import_size setting appropriately and/or adjust your CSP rules. See
pull request #1719 for details.
A fix for the KohaRest ILS driver added a parameter to the constructor, which introduced a change to the corresponding factory; if you have a custom subclass of this driver, minor adjustments may be needed.
Release 7.0.1 - 8/31/2020
Release 7.0 - 7/20/2020
New features:
Static pages can now be built using Markdown as well as PHP templates.
New
Content Block plugin: TemplateBased, which allows you to embed a template that will behave similarly to a
static pages in terms of supporting internationalization, Markdown, etc.
VuFind now supports configurable
Content Security Policy headers, for improved security. These default to “report only” mode to avoid breaking existing installations, but administrators are strongly encouraged to turn these to enforcing mode in production.
VuFind now supports
CAPTCHA plug-ins, maintaining the pre-existing ReCaptcha support while making it possible to use alternative mechanisms for blocking automated agents. See
pull request #1574 for additional details.
ArchivesSpace integration (support for ingesting Dublin Core records harvested from ArchivesSpace over OAI-PMH; see
pull request #1623).
Improved ILS drivers: the FOLIO driver is now production-ready, and the new KohaRest driver provides richer support for Koha (compatible with Koha 20.05+ using the
koha-plugin-rest-di plugin).
When using the optional link shortener feature, you can now configure how shortlinks redirect to full URLs (
HTML-based, header-based, or conditional
URL-length-based redirection). See
pull request #1533.
VuFind's integration with EBSCO Discovery Service has been significantly improved, with a large number of bug fixes and added support for citation and export functionality.
-
Custom
Feedback Forms now support help text both before and after form elements through new pre/post help configuration settings.
Unpaywall DOI links now include both PDF and non-PDF resources (previously, only PDFs were linked).
It is now possible to obtain links from multiple DOI handlers (either in sequence or merged together); see
pull request #1560.
You can now choose between extra-short and more private short links via the url_shortener_key_type setting in config.ini; see
pull request #1549 for details.
VuFind's
plugin generator can now build controllers, controller plugins, and Symfony console commands.
The NoILS driver can now extract data from more than one MARC field at a time (for displaying status/call number information). See
pull request #1622.
VuFind's
API now offers access to the secondary Solr index configurable through Search2.ini as well as the website index.
Support routines have been developed for indexing geographic data from dc:coverage fields in XML records; it may be optionally turned on in the DSpace indexing example. See
pull request #1465 for details.
The ObalkyKnih cover image provider is now supported as an
external content source.
In VuFind's browse module, the display order of browse options is now controlled by the order of configuration settings in the [Browse] section of
config.ini.
VuFind's Mailer class now supports multi-part messages (though this capability is not being used in the core code yet). See
pull request #1610 for details.
The util/scssBuilder command line utility has been added for users who wish to use SCSS instead of the default LESS for building VuFind's
CSS.
VuFind now sets the SameSite attribute on cookies for improved browser compatibility; see
pull request #1664.
Possible backward compatibility breaks:
Be sure to run a database upgrade to reflect table changes (see also the
database changelog); if you are using the shortlinks feature, be sure to run the web-based upgrade even if you are using PostgreSQL to back-fill hashes properly.
The Solr schema has changed to remove the deprecated recordtype field, so records should be reindexed after an upgrade. See the
index schema changelog for more details.
VuFind now requires PHP 7.2 or newer; please ensure you have a compatible version installed before upgrading.
Zend Framework has become Laminas; this upgrade has caused significant changes throughout the code because of class and package name changes. You should update your local code to match. See
pull request #1537 for details.
-
The ZfcRbac module has been replaced with LmcRbacMvc to reflect the Laminas migration; custom authentication code may need minor adjustments to reflect the namespace change and the switch of the configuration key from zfc_rbac to lmc_rbac. See
pull request #1657 for details.
VuFind's default Solr port has changed from 8080 to 8983, to better reflect Solr best practices and to reduce port conflicts with other applications; it can easily be
changed back as needed.
As noted above, you are strongly encouraged to configure a
content security policy for improved security. Note that adjustments to local custom themes may be needed to conform to security requirements; for example, Javascript event attributes (onclick, etc.) should not be used, and all scripts should be loaded through the Laminas headScript or inlineScript helpers instead of with hand-written script tags.
If you are using ReCaptcha, several configuration settings have been renamed; the automated configuration updates through the web-based upgrade tool will take care of this, but if you are using a different mechanism to upgrade, you may need to make some adjustments to config.ini; see
pull request #1574 for details.
The recaptcha view helper has been replaced by a more generic helper. If you have custom templates referencing this view helper, you will need to update them; see
pull request #1574 for details.
VuFind's session handler code has been significantly refactored to improve extensibility and testability; see
pull request #1506 for details. If you have built a custom session handler, it will likely need to be adjusted; otherwise, this should not impact you.
VuFind's jQuery version has been upgraded from 2.1.1 to 3.5.1; if you have custom jQuery code, you should double-check its compatibility.
Several templates have been rewritten to use the slot view helper instead of view variables, improving readability and extensibility; if you have extended these templates yourself, the code may need to be adjusted. See
pull request #1454 details.
The record/cover.phtml template has been moved to RecordDriver/DefaultRecord/cover.phtml, so that cover thumbnail rendering is now record-driver-specific. See
pull request #1566 for details.
Support for Amazon cover images and reviews has been removed; the ZendService\Amazon library has been deprecated, and there was insufficient demand to take the time to port the code to a new library. If you need Amazon support, please open a new
JIRA ticket.
The \VuFind\Search\Base\Params::getFilters() method, which was deprecated in release 6.1 (see
pull request #1489), has now been completely removed; use \VuFind\Search\Base\Params::getRawFilters() instead.
The constructor signature of the \VuFindTheme\Initializer has been changed so that it can now optionally accept a service container instead of an MVC event object; if you have subclassed the Initializer, you will have to adjust your method signature to match. See
pull request #1600 for details.
The \VuFindSearch\Backend\Eds\Zend2 class has been renamed to \VuFindSearch\Backend\Eds\Connector to prevent Laminas-related confusion; this should only impact you if you have made low-level changes to the EDS integration. See
pull request #1546.
The sitemap generator now uses the search service instead of direct access to the Solr connector; to support this, the constructor signature of \VuFind\Sitemap\Generator has changed, and the service is now constructed using a factory instead of hard-coded controller logic. If you have customized any of this, adjustments may be needed; see
pull request #1486.
The way feedback forms do text translation has been refactored; if you have customized this code, you may need to adjust to match. See
pull request #1565.
AJAX item status loading has been improved and refactored; in the unlikely event that you have customized or extended this Javascript code, you may need to make adjustments. See
pull request #1663.
The Javascript cookie management library used by the book bag feature has been replaced with something more up-to-date; see
pull request #1673.
Because score values are never used in core code (except when dumped out in non-MARC staff view tabs), the default field list retrieved from Solr has been changed from “*,score” to simply “*”. There is now a default_record_fields setting in searches.ini (and other equivalent Solr backend configurations) which can be used to customize the field list. See
pull request #1568 for details.
The SierraRest ILS driver now defaults to
API version 5 instead of
API version 3 to reflect deprecations in the Sierra platform. See
pull request #1659 for details.
Some internals of the Primo Central integration have changed slightly; see
pull request #1653.
Some configuration settings have been renamed to use more inclusive terminology: whitelist/blacklist in Voyager.ini and VoyagerRestful.ini are now include_list/exclude_list; domain_whitelist in config.ini is now legal_domains. Legacy values will still be acknowledged for backward compatibility, but new values will take precedence. See
pull request #1671 for details.
The EBSCO Discovery Service integration now uses POST instead of GET for search
API requests; the legacy GET behavior can still be accessed through an EDS.ini setting. See
pull request #1627 for details.
The \VuFind\RecordTab\TabManager::zendConfig property has been renamed to legacyConfig to prevent Laminas-related confusion; because this property is only used for accessing obsolete configuration settings, the impact of this change is expected to be minimal… but if you have customized the TabManager, you should check for issues. See
this commit for details.
Press Release
Release 6.1.2 - 7/13/2020
Release 6.1.1 - 3/16/2020
Release 6.1 - 2/3/2020
New features:
An optional
Email Alerts feature can be enabled to allow users to subscribe to saved searches in order to be notified about new search results.
-
Users can now change their email addresses in their accounts (though this feature is disabled by default – see the config.ini change_email setting and
pull request #1401 for details).
The filter interface changes introduced in release 6.0 have been further improved, making the user experience more consistent.
-
Added “PasswordAccess” authentication method to allow login using a single credential rather than a username/password combination (see
pull request #1394).
Added “RecommendLinks” recommendation module, offering a simple mechanism for displaying a static link list.
You can now embed meta tags for Google Scholar and other services by configuring metadata.ini (see
pull request #1529 for details).
It is now possible to limit site permissions on a global or controller-specific basis through configuration files, making it easier to manage protected content. See
pull request #1395 for details.
Improved support for running VuFind behind a reverse proxy (such as Apache's mod_proxy); see
pull request #1429 for details.
-
Added support for storing VuFind sessions in
Redis.
Hierarchical
facets sort options can now be configured independently for search results, home page listings and advanced search options; see
pull request #1389.
Various Alma ILS driver improvements (including the ability to use Alma as an
OpenURL resolver).
ILS drivers can now differentiate between electronic and physical holdings (see the
getHolding driver method documentation for details). This is currently supported by the Alma driver.
-
Upgraded to
SolrMarc 3.3, fixing some bugs and adding some new syntax features.
The OAI-PMH Server now supports a new “delete_lifetime” setting to expire old deleted records, preventing them from slowing down harvests (see
pull request #1496).
Added Croatian and Hindi language support to the user interface.
Added support for ISMNs (International Standard Music Numbers) and National Bibliography Numbers to the cover image loader (see
pull request #1451).
-
VuFind's controllers and controller plugins now respect the same “-aware” interfaces as other VuFind plugins, making it possible to auto-inject loggers, etc. (see
pull request #1441).
-
-
Improved PHP 7.3 and 7.4 compatibility.
Possible backward compatibility breaks:
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
The new email login capability adds some new features to the authentication logic along with some minor refactoring; if you have custom authentication code, you should review
pull request #1409 to be sure you are not impacted by it.
Templates related to search filters have been changed significantly to fix a bug introduced in release 6.0 and to improve the revised functionality; if you have customized the filters.phtml template, or a template that includes filters.phtml, you should adjust to match the changes in
pull request #1482,
pull request #1499 and
pull request #1500 (plus this subsequent
bug fix commit).
Low-level filtering/validation of parameters was introduced by
pull request #1518. This should have no impact on normal activity within the system, but if you encounter unexpected parameter processing behavior, you should investigate these changes.
The itemLimit setting used for paginating holdings in some ILS drivers (Alma/Demo) has been moved from the “Holds” configuration to the more appropriate “Holdings” configuration. If you have taken advantage of this feature in a custom driver or if you have changed it in your driver's .ini file, you should move the setting – see
PR #1463.
To fix a minor bug, the $messages property of VuFind\Form\Form has been redefined – it now contains raw, untranslated messages instead of fully translated messages (see
pull request #1534). If you have extended the class and added values to this property, you may need to make adjustments to avoid double translation.
Some minor improvements have been made to item status display logic; if you notice an unexpected change in behavior, see
pull request #1466 for details.
Some changes to record collection creation have been made for performance reasons, but they should not change behavior; see
#1488 for details.
The title_sort field MARC indexing rule has been made more explicit, instead of using a custom method. In the unlikely event that you have customized the getSortableTitle method in SolrMarc, you may need to adjust your settings. See
pull request #1393.
The default controller permission is now “null” rather than “false” – this is functionally identical, but it is a change needed to support the new configuration options in
pull request #1395. In the unlikely situation that you have customized a controller with an accessPermission property of false, you will be unable to override it with the new configuration settings unless you change the value to null first.
Also related to
pull request #1395: if you have extended a controller simply to change its accessPermission value, you should now be able to use the new permissionBehavior.ini controllerAccess setting instead to reduce the amount of custom code in your instance.
The mechanism for detecting when VuFind is in lightbox mode has been unified; this should not impact downstream code, but if you encounter lightbox problems, see
pull request #1405.
The HierarchicalFacetHelper::sortFacetList method's signature has changed slightly, but in a backward-compatible way. In the very unlikely event that you have extended this service, you may need to make adjustments. See
pull request #1389.
The way the VuFind theme system overrides Zend Framework functionality has been simplified significantly (see
pull request #1436), but there should be no functional differences.
Press Release
Release 6.0.1 - 9/16/2019
Release 6.0 - 7/15/2019
New features:
Significant improvements to the display of active filters in search results, moving the list out of the facet sidebar and into the space beneath the search bar for clarity, and replacing the confusing “Retain Current Filters” checkbox with a more intuitive “Reset Filters” button.
Optional integration with the third-party
Overdrive eBook service.
Introduction of an optional (off by default) mechanism to shorten links shared in text messages and emails (see
pull request #1372).
Minor improvements to the custom feedback form feature (support for new input elements, better translation, etc.).
Minor improvements to the OAI-PMH server (including better performance and the new default_query, page_size and record_format_filters settings).
-
Improved compatibility with MySQL 8 (though legacy authentication mode / default_authentication_plugin=mysql_native_password is required).
Users can now be optionally required to verify their email addresses when registering for accounts in VuFind's internal user database. (This is disabled by default – see
pull request #1354).
New settings have been added to searchbox.ini to support optgroup grouping in the
combined search handler drop down menu.
Added a new “ComponentParts” tab to the record view (disabled by default), which can be enabled in combination with
simple container linking to display whole/part relationships in more detail. See
pull request #1339.
Added a new recommendation module for linking to third-party searches (for example, to direct to an external site when an internal search yields no results). See
pull request #1385 for details.
An example of batch-loading XML records from OJS is now included (see
pull request #1352).
Significant improvements (and new configuration settings) for the Alma and SierraRest ILS drivers.
-
The ability for the user to set a preferred home library can now be disabled through the set_home_library setting in config.ini (see
pull request #1347).
Possible backward compatibility breaks:
VuFind now requires PHP 7.1 or newer; make sure your server can support this before upgrading!
The Solr schema has changed, so records must be reindexed after an upgrade. See the
index schema changelog for more details.
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
As noted above, the display of active filters has been significantly redesigned; if you have customized this, you may need to revise your local templates. See
pull request #1265 and
pull request #1377 for more details.
Facet labels are now displayed based on a labelSections configuration setting instead of through hard-coded activateAllFacets() methods in the Search Params classes. This makes it easier to ensure that facet fields are labeled correctly in all contexts. Be careful that you remove any references to activateAllFacets from custom code/templates, as the method no longer exists. See
pull request #1291 for details.
Record tabs are now configured through a RecordTabs.ini file, instead of through the Zend Framework module.config.php files. This makes configuration significantly less complicated – see
pull request #1370. If you have any custom tab configurations, you should move them out of your local module's configuration and into a local copy of RecordTabs.ini.
The signature of the getHolding ILS driver method has been changed to include an options array, and the return format has been adjusted to support optional pagination. Custom drivers may need to be adjusted for compatibility with these changes. See
pull request #1358 for details.
Several methods deprecated in earlier releases have been removed; see
pull request #1314 for details.
OAI-PMH server classes are now defined as top-level services so they can be more easily extended/overridden. This has changed the constructor signature and added an init method. Additionally, responses are now constructed in a different way for improved performance, replacing the showResponse() method with a createResponse() method. If you have customized OAI-PMH server code, you will have to adjust to match; see
pull request #1237 and
pull request #1356 for details.
As noted above,
pull request #1209 changes the default format determination rules for MARC records; if you have customized this or have a custom marc.properties, you may wish to double-check that the new method is being used and meets your needs.
The constructor signature of the VuFind\Record\Router has changed, because it no longer depends upon the VuFind\Record\Loader (see
pull request #1364).
Buttons for performing actions on records have been re-styled for consistency and easier customization; if you have changed markup or styles on these controls, you may need to revise your customizations. See
pull request #1379 for details.
The VuFindSearch\Query\QueryInterface has been expanded to account for text normalization. Custom subclasses are unlikely, but if you have built one, it will need adjustment. See
pull request #1391 for details.
The custom Java indexing code for tracking record changes has been updated to use java.time.LocalDateTime instead of java.util.Date for clarity; see
pull request #1349 for details.
All static factory methods have been replaced with standard reusable Zend Framework factory classes. This shouldn't break anything, but if you have overridden any factories, you should review whether you can eliminate that local code and simply reuse an existing class.
The 'suppressDisplay' attribute of filters (originally introduced to hide certain advanced EDS parameters) was not working correctly and was not needed (since seeing these parameters is actually useful), so it has been eliminated; see
this commit.
The 'vufindrecord' route definition has been removed (see
this commit); this was intended for legacy compatibility after standardizing the name of the default record source from 'VuFind' to 'Solr' in release 3.0 and is very unlikely to still be needed in correctly upgraded instances.
Press Release
Release 5.1.1 - 5/6/2019
Minor bug fix/translation improvement release.
The automatic LESS to SCSS conversion process has been refined to eliminate bugs in the output. Special comment-based markers are now used to differentiate LESS-specific from SCSS-specific code in the few cases where automatic conversion is not possible. See
pull request #1316 for details.
SolrMarc full text indexing has been adjusted to prevent a crash caused by newer versions of Tika; see
VUFIND-1330.
Some problems with the new AJAX account information feature from 5.1 have been corrected; if you are using this new feature, please upgrade.
Release 5.1 - 2/4/2019
New features:
Status updates on fines, holds, overdues, etc. can now load dynamically into the user account menu to highlight important information; an alert icon can appear in the header even when the user is outside of the account area. This feature is on by default but can be disabled through the enableAjax setting under [Authentication] in config.ini. (See pull request
#966 for implementation details).
New “SideFacetsDeferred” option to load facet data asynchronously, which may improve performance in some environments (off by default; see
pull request #1246 for details).
ILS drivers can now report “last pickup” dates for holds (currently supported by SierraRest driver).
New
DOI Linker plugin interface for providing full text links and contextual information based on record DOIs; currently implemented using the
BrowZine service. See
this commit and
this commit for more details.
-
-
VuFind's OAI-PMH server now supports an oai_vufind_json metadata format which allows harvesting of JSON objects formatted using VuFind's
API configuration. This is disabled by default but can be turned on using the vufind_api_format_fields setting in config.ini. See
pull request #1241 for details.
An experimental, proof-of-concept
FOLIO ILS driver has been created; best practices for data loading still need to be determined, and some details may change as the FOLIO platform develops further.
VuFind now deals more gracefully with changes to Summon record IDs (a normal side effect of reindexing on the Summon side).
-
-
Added Vietnamese language support to the user interface.
Upgraded to SolrMarc 3.2 (improves Java 9/10 compatibility).
Upgraded to Bootstrap 3.4.0 (fixes some minor problems).
Possible backward compatibility breaks:
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
The default retrieval mode in sitemap.ini has changed from “terms” to “search.” This is because the “search” mode is more broadly compatible (“terms” ignores hidden filters). However, the “terms” mode is much faster. If you do not need the full-featured “search” mode, you may wish to adjust this configuration if you regularly generate sitemaps but do not already have a custom sitemap.ini.
The data format returned by VuFind\ILS\Connection::getMyTransactions has changed to support pagination. The underlying ILS driver interface is backward-compatible; drivers can be upgraded to support pagination, but this is not strictly necessary. If you have custom code calling this function, you will need to adjust it.
Some facet-related templates and Javascript functions have been moved around and adjusted for greater flexibility. (See, for example,
this commit and
pull request #1246). If you have customized the SideFacets recommendation module, some adjustments may be needed.
The behavior that hides the facet sidebar in narrow screen widths (such as mobile size) has been adjusted to use a button instead of a wide border (see
PR #999). This may impact custom templates and
CSS if you have made significant layout customizations.
The internals of VuFind\Sitemap\Generator have been refactored and improved; if you have overridden this class, you may need to adjust your subclass to match.
The internals of the VuFind\Record\Loader have been refactored for clarity; however, none of the method signatures have changed. If you have overridden any methods in a custom subclass, you should review
this commit.
All cookies except for those related to the book bag functionality are now flagged as HttpOnly to help prevent XSS attacks; this should not affect anyone unless they have custom functionality to edit cookies in Javascript code. The feature can be disabled through config.ini if necessary but is enabled by default. See
pull request #1243 for more details.
The MyResearch/Fines display's template has been refactored for greater flexibility; if you have customized it, you may wish to make adjustments (though the underlying data structure has not been changed). See
pull request #1251.
The import-marc-auth scripts (for both Linux and Windows) now correctly account for the solr.indexer.properties setting in import_auth.properties, appending to it rather than completely overriding it. If you do authority record importing, you should double-check that it still works as expected, though behavior changes are unlikely unless you have customized something.
Press Release
Release 5.0.1 - 10/10/2018
Release 5.0 - 7/16/2018
New features:
Possible backward compatibility breaks:
The minimum required PHP version has been raised to 7.0.8; make sure you are running an up-to-date version before upgrading.
You should rebuild your index due to the new Solr version. If using authority records, be sure to reindex those as well and confirm that any custom solr_auth.properties file includes a “record_format = marc” line (see the changes to the
authority Solr schema).
The new Solr version may issue a warning about operating system limits; see
Starting and Stopping Solr for some notes on how to configure around these warnings.
Be sure to run a database upgrade to reflect table changes (see also the
database changelog).
Some changes have been made to support the upgrade to Zend Framework's Service Manager v3.
Because the new ServiceManager has case-sensitive service names, the way VuFind retrieves most services has changed significantly. See the
service name migration page for details. If you have services overridden in a custom module, you will need to adjust your names to match.
VuFind's static initializer methods in VuFind\ServiceManager\Initializer have been replaced with Initializer classes (see
pull request #1066).
Default plugin manager configurations have been moved out of module.config.php and into the appropriate plugin manager classes. These settings can still be overridden through module.config.php as before, but this makes the core VuFind module configuration significantly more concise.
Many static factory methods have been replaced by factory classes for cleaner design.
The factory classes for Search Params and Results objects assume that the Options/Params/Results trio exists in the same namespace. If you override a Params object without overriding the corresponding Options, or if you override Results without also overriding Options and Params, you can set up aliases in your configuration to map the custom namespace to point to the appropriate core classes.
Adding a setPluginManager method to a plugin no longer auto-injects the plugin manager; use a factory instead (see
pull request #1069).
-
The initialization of the ResultFeed view helper (used for building RSS feeds) has been adjusted (see
pull request #1072).
The getSuggestions() method has been moved from \VuFind\Autocomplete\PluginManager to a new \VuFind\Autocomplete\Suggester class for cleaner design.
The record driver class hierarchy has been refactored so that non-Solr drivers inherit from DefaultRecord instead of from SolrDefault. If you have custom SolrDefault templates in your theme, you should rename their folder to DefaultRecord. You should also double-check custom SolrDefault record tab settings in module.config.php, and any custom classes you have built extending SolrDefault. Note that for Solr-based records, extending SolrDefault is still the correct course of action. See
this pull request for details on the refactoring.
The authority-related record driver has been refactored to allow support of non-MARC authority records. If you have a custom subclass of \VuFind\RecordDriver\SolrAuth, you should change it to extend \VuFind\RecordDriver\SolrAuthMarc. If you have custom templates in the RecordDriver/SolrAuth directory, you should move them to RecordDriver/SolrAuthDefault or RecordDriver/SolrAuthMarc. See
pull request #1215 for details.
Record driver / ILS connectivity is now set up with the help of VuFind\RecordDriver\IlsAwareDelegatorFactory. If you extend/override the VuFind\RecordDriver\SolrMarc class, be sure to configure this delegator for use with your subclass in your local module's module.config.php. If you set up a new subclass using the extendclass code generator, this will be done for you automatically.
-
AJAX responses have been revised in two important ways: all data values are now keyed arrays to support better extensibility, and internal status codes have been eliminated in favor of using standard HTTP statuses. If you have custom AJAX Javascript and/or handlers, they may need to be adjusted. See
pull request #1189 for more details.
Templates for displaying lists of facet values have been refactored for clarity and consistency; local customizations may need to be adjusted.
When enabled, the “change password” option is now a button on the user Profile page rather than an option in the account side menu.
VuFind's templates now use full <?php open tags instead of short <? open tags. This complies with best PHP practices and makes compatibility with php-fpm in newer Linux distributions easier. You can use php-cs-fixer to automatically update your own templates if you need to.
The HoldingsILS RecordTab template has been significantly refactored for greater flexibility; see
pull request #1100 for details.
-
The VuFind\Cover\Loader now accepts a VuFindHttp\HttpService object instead of a Zend\Http\Client object through its constructor (to facilitate better handling of HTTP proxies).
The search/home.phtml template has been refactored into a collection of
Content Block plugins. Custom home pages should be reimplemented using this mechanism.
Caching of facet values for home page / advanced search use has been completely refactored; see
pull request #1165 for details.
Methods for activating facet configurations have been simplified by using smarter defaults, which may impact custom search Params objects; see
pull request #1198 for details.
The \VuFind\Date\Converter class has been moved to a separate
vufind-org/vufinddate project for improved reusability. Its constructor signature has been changed, and the accompanying \VuFind\Exception\Date has been renamed to \VuFind\Date\DateException for cleaner namespacing. Minor adjustments may be needed to custom date processing code (most likely to be found in custom ILS driver subclasses).
RefWorks exports now use a POST form instead of a
URL callback; you may wish to re-test your integration, especially if you use a custom RefWorks
URL in config.ini.
The default RefWorks
URL has been changed to use HTTPS instead of HTTP; if you have customized this, you may wish to adjust accordingly.
Two unused view helpers have been removed: jqueryValidation (see
this commit) and mobileUrl (see
this commit). If your custom theme relies on these, you should either replace them or copy them into your local module.
ILS driver internal caching behavior has been moved from VuFind\ILS\Driver\AbstractBase to VuFind\ILS\Driver\CacheTrait, since the logic is used by a minority of drivers. If you need this functionality in your custom driver, just add an appropriate “use” statement to the top of your driver class.
The markup and styling for record tabs has been adjusted slightly for greater flexibility; adjustments may be needed if you have custom
CSS or code in this area. See
PR #1158 for details.
If you are using geographic capabilities, it is recommended that you move configuration settings from the [Content] section of config.ini and the [MapSelection] section of searches.ini into the new geofeatures.ini. Also note that custom Javascript and templates will need to be adjusted due to the transition from OpenLayers to Leaflet.
The ChannelsController has been significantly refactored to improve the quality of the channel loading code (see
PR #1174). The front-end channels code has also been completely rewritten to leverage third-party code, improve look and feel, and fix several bugs (see
PR #1190).
Cover loading and generation has been significantly rewritten for better extensibility (see
pull request #1181).
QR code generation has been significantly rewritten to use the endroid/qr-code library (see
pull request #1183).
The getRelated method has been removed from the record drivers; the logic is now part of the related view helper. See
this commit for details.
The AuthorityRecommend module now returns data in a different format (headings only, instead of associative arrays), so custom templates may need to be adjusted; see
this commit.
The Horizon and HorizonXMLAPI ILS drivers have been updated to use PDO instead of the deprecated mssql_* functions. This may require installation of different PHP modules on your system.
The AJAX methods getSalt and login have been removed, along with the VuFind\Crypt\RC4 class that supported them; all of this code has been unused for quite some time.
The ClaviusSQL ILS driver is no longer being maintained or used and has been removed; it is available in a
legacy/clavius branch on GitHub if anyone wishes to revive it.
The Solr query builder is now smarter about which fields it highlights. In support of this, the setCreateHighlightingQuery() method has been deprecated in favor of a new setFieldsToHighlight() method. See
pull request #1078 for details.
Search history management has been refactored to a service, instead of being built into the SearchController; see
pull request #1018.
The $marcRecord property of the SolrMarc record driver (deprecated since release 2.5) has been completely removed; use getMarcRecord() instead.
To improve performance, hierarchy support for non-Javascript browsers has been turned off by default; it can be enabled with the nonJavascriptSupportEnabled setting in config.ini. See
pull request #1145 for details.
The ZF2_PATH environment variable is no longer supported (though it is unlikely anyone ever used it). Loading an external copy of Zend Framework components does not make sense now that VuFind relies on Composer.
Press Release
Release 4.1.3 - 6/11/2018
Release 4.1.2 - 1/29/2018
Release 4.1.1 - 11/20/2017
Release 4.1 - 10/2/2017
New features:
Possible backward compatibility breaks:
AJAX routines for item status, save status and automatic OpenURL embedding now only retrieve information for visible elements, in an effort to improve responsiveness and reduce server load. Custom AJAX code in your theme may need to be adjusted to match. See pull request
#950.
Access to Primo Central is now controlled by an access.PrimoModule permission. By default, this permission is configured to be allowed for everyone; if you have a custom permissions.ini, you may need to copy the relevant block from the default version.
VuFind\Controller\AbstractBase::forceLogin() has been changed from protected to public. If you have overridden this in a subclass, you will need to adjust your code to match.
The translated_facets[] setting is now turned on by default for supported fields in facets.ini, EDS.ini and Summon.ini to provide a more consistent i18n experience. If you have customized these config files, review and make sure that the setting is appropriate for your situation.
The Koha ILS driver now uses VuFind's date converter to format date strings; if you have a custom subclass, you will need to switch your service configuration to use a factory instead of an invokable.
Press Release
Release 4.0.1 - 8/28/2017
Release 4.0 - 7/10/2017
New features:
New serendipitous browsing module: the
Channels interface.
New (beta) theme: sandal, featuring a more modern, flat look than bootprint3.
Swagger-based
APIs for retrieving search results and record details programmatically.
Recommendation module to detect DOIs in search queries and redirect the user to a resolver.
-
New LocalFile cover loading option to retrieve thumbnails from disk using a path pattern (see
this commit).
Support for using VuFind to authenticate
EZproxy users.
-
Support for configurable placeholder text inside search boxes (see [SearchPlaceholder] section in
config.ini).
Improved, more mobile-friendly “add to book bag” interface (see bookbagTogglesInSearch in
config.ini; on by default but can be turned off to restore legacy interface).
Dynamic covers now support multiple sizes through extra configuration (see
this pull request).
Upgraded to Solr 6.4.2.
Upgraded to use newer Zend Framework components.
-
Possible backward compatibility breaks:
This release requires at least PHP version 5.6; please make sure you have this before upgrading.
You should rebuild your index due to the new Solr version and minor schema changes (see also the
schema changelog).
Be sure to run a database upgrade to reflect newly added tables (see also the
database changelog).
Newer versions of Zend Framework no longer support the ServiceLocatorAwareInterface. Many services in VuFind have been refactored to receive their dependencies through their constructors, and many factories have been adjusted accordingly. You should review any custom services/plug-ins you have built and adjust them as needed. Also note that getServiceLocator() should no longer be used in controllers; instead, access the serviceLocator property directly (or better yet, refactor controllers to use dependency injection so that they do not need direct service locator access at all). For some examples, see pull requests
#900,
#909,
#910,
#918,
#919 and
#929.
-
VuFind's built in statistics-gathering functionality has been removed; it is recommended that Google Analytics or Piwik be used instead, as these are more scalable and feature-rich. The old code can be restored from a
legacy branch in Git if actually needed.
Row gateway objects are no longer constructed by table gateway objects; instead, they have their own
plugin manager. If you have customized any database row classes, you may need to adjust your configuration.
A new
RecordDataFormatter view helper has been introduced to help make displays of tabular record data more configurable. This should make many common customizations easier to maintain while also allowing more granular customization on a per-record-driver basis; however, it also adds a learning curve to customizing some templates. See the
wiki page for technical details. If you have custom record driver templates, they may need to be updated. (See also
this commit, which changes the way authors and their roles are rendered, and
this commit, which finalizes the return format of the helper).
The UrlQueryHelper used for generating query parameters for VuFind searches has been significantly revised for more flexibility; see pull requests
#850 and
#851 for details. Most significantly, the removeFacet() method has had its parameter order changed, requiring adjustments to the TopFacets.phtml and SideFacets.phtml Recommend templates.
Some
CSS styling and
HTML structure has been revised in the Bootstrap-based theme to simplify markup; you should double-check your custom templates against the core versions to be sure they are in sync (see also, the
css changelog).
Some
HTML markup related to the search box has been changed; previous VuFind versions had some responsive design features that required two copies of the search box to be included on the page. This caused problems, so the box has been reduced to a singleton. See
this pull request.
The data-lightbox-onclose and data-lightbox-onsubmit attributes no longer support arbitrary Javascript code; instead, for better security, you must pass in a function name. See the
lightbox page and
this pull request for more details.
Some
HTML markup has been revised to use the form attribute to reduce the possibility of problems related to nested forms. See
this commit for details.
Encryption functionality has been changed to use OpenSSL instead of the obsolete Mcrypt module. For most users, this should be a seamless change. However, if you are using a custom encryption method other than aes, blowfish, des, camellia, cast5 or seed, you will need to convert to one of these methods prior to upgrading. See pull request
#895 for details.
Google Maps support has been removed; use the more robust OpenLayers functionality instead. Additionally, some
Solr schema changes have been made related to geographic features.
The Voyager ILS driver now connects to the database more efficiently, and the $db property has been eliminated. If you subclass Voyager or VoyagerRestful, you must change all $this->db references to $this->getDb().
The Voyager/VoyagerRestful ILS drivers now block patron login if the barcode status code is not 1 or 4. If your Voyager installation uses non-standard codes, you can configure this in the relevant driver .ini file. See
this commit for details.
The getAllSubjectHeadings record driver method has been given a new $extended parameter, and some implementations have been refactored to improve extensibility; if you have customized this method, see
this pull request for details.
The format for search tab data used by the SearchBox view helper has changed slightly to accommodate placeholders; if you have customized tab functionality, you may wish to consult
this commit.
Due to changes in the zend-mvc component, the 'viewmanager' service is no longer used to retrieve view-related dependencies; instead, relevant components are retrieved directly using direct service names: 'ConsoleRouteNotFoundStrategy', 'ViewResolver', 'ViewRenderer' and 'ViewHelperManager'.
Some integration details for the zend-eventmanager component have changed to support the 3.x version; see
this commit for details.
Link Resolver Drivers have been restructured; the DriverInterface now supports some new methods, and an AbstractBase class has been introduced to provide useful default implementations. If you have a custom link resolver driver, you will likely need to update it.
VuFind no longer ships with BeanShell indexing scripts for SolrMarc; these are redundant now that the Java code for custom routines is bundled with VuFind and compiled on-the-fly. The Java code has been refactored for ease of maintenance/readability. See
SolrMarc: Custom Java Best Practices for some advice on managing your own custom Java. Note that you can still use BeanShell scripts if you wish – but switching to Java will improve performance.
A new version of the ReCaptcha library used by VuFind has been installed; some details have changed, so custom ReCaptcha code may need to be adjusted; see
this commit and
this commit for details.
If you use the @parent_yaml setting in any of your YAML files, you must put the setting name in quotes – e.g. change
@parent_yaml: “file”
to
“@parent_yaml”: “file”
. This is necessary to comply with stricter syntax checking in the latest version of the Symphony/Yaml library.
VuFind's session cookie is now VUFIND_SESSION by default, instead of the generic PHP_SESS_ID. This can be configured through the session_name setting in
config.ini. This will prevent data contamination during upgrades, since some Zend Framework objects have changed. See
this commit.
A new service has been created for saving favorites, instead of allowing the record driver object to handle this functionality; see
this commit for details.
The VuFind\Log\Logger is now built and configured by a factory; built-in self-configuration logic has been removed. If you have customized the logger, see
this commit and rearrange your code accordingly.
The $left property of VuFind\View\Helper\AbstractLayoutClass and its subclasses has been renamed to $sidebarOnLeft for clarity. If you have created a custom subclass, you may need to make adjustments.
For clarity of naming and consistency with current Solr examples, the default Solr configuration has been changed so that the Terms component is accessible at a /terms
URL instead of the old /term. This is only used for sitemap generation and should not cause any problems as long as your solrconfig.xml comes from the same version as the rest of your VuFind code.
Switching VuFind into “ILS offline” mode has been significantly redesigned to detect a broader range of possible problems; this should not introduce any backward compatibility breaks (unless you are overriding the VuFind\ILS\Connection class, which is unlikely), but it may cause VuFind to behave differently under some failure scenarios. See
this commit for details.
Command line utilities now make better use of native Zend Framework routing, and the custom VuFind-specific filename-based router has been eliminated. See
this pull request.
The logic for dealing with account blocks in the ILS driver has been revised. If your ILS driver uses the special 'block' value when handling requests (holds, recalls, etc.) it will need to be revised to implement the getRequestBlocks method instead. See
this pull request.
The format of the data array returned by the \VuFind\ILS\Logic\Holds class (usually accessed through the getRealTimeHoldings record driver method) has been revised; it now contains 'blocks' and 'holdings' keys instead of simply consisting of holdings. Custom templates may need to be adjusted to match.
\VuFind\ILS\Driver\VoyagerRestful::getRemoteCallSlips has been renamed to getCallSlips and given a parameter to allow optional retrieval of local as well as remote slips. This should only affect you if you have subclassed the VoyagerRestful driver and customized functionality related to callslips.
\VuFind\ILS\Driver\Voyager::processHoldingData has had the default value of the $patron parameter changed from false to null; if you have subclassed the driver and overridden this method you should adjust to match. See
this commit.
The “terms” method of the Solr search backend has been made more flexible, but it should be fully backward-compatible. See
this commit for details.
Some no-longer-used custom indexing code/configuration related to an obsolete OCLC system serving LC name authority records has been removed. See
this commit.
The default holdings_grouping setting in the [Catalog] section of config.ini has been changed from “holdings_id” to “holdings_id,location” for improved accuracy (most users will be unaffected).
The checkILLRequestIsValid / checkRequestIsValid / checkStorageRetrievalRequestIsValid ILS driver methods now can optionally return an array with a custom status message. This does not break backward compatibility with the old boolean return values.
Some status-related blocked*Action() controller methods have been eliminated, as they are no longer needed.
Press Release
Release 3.1.4 - 7/5/2017
Release 3.1.3 - 3/13/2017
Release 3.1.2 - 1/16/2017
Release 3.1.1 - 10/31/2016
Release 3.1 - 9/26/2016
New features:
New optional mechanism to explore/sort facet lists (currently supported for Solr and Summon). See
this pull request for details.
New optional “asset pipeline” to combine and compress
CSS and Javascript files for improved performance. Off by default; see the new asset_pipeline setting in config.ini (and
this commit) for details.
The
SolrMarc indexing tool has been upgraded to version 3.0.1, a major release that adds greatly improved performance and significant new features.
Indexing of MARC relator terms has been improved.
New optional feature (off by default) to dynamically embed full record information into search results and favorite lists instead of loading a separate record page. See
this commit for details.
Improved geographic functionality: existing Google Maps functionality has been updated to reflect
API changes, and new experimental OpenLayers-based modules have been added which include more robust features. See
pull request #722 for details/history.
New (somewhat experimental) KohaILSDI ILS driver, which uses Koha's ILS-DI
API for augmented functionality. The plain Koha driver still remains for users with older Koha systems that do not support the
API.
New PAIA ILS driver, implementing the
PAIA specification as an extension of the DAIA driver.
New settings to enforce specific password patterns; see
this commit.
Optional setting to link displayed call numbers to a specific browse index. See
this commit.
Added optional first/last navigation to supplement next/prev navigation on the record page (for moving through the current set of search results); see the first_last_navigation setting in config.ini.
Tag search now supports wildcards.
Support for faceting authority records using new RDA values.
Improvements to web accessibility within Bootstrap3 theme.
Sidebar facet lists now stay collapsed/expanded across searches/pages for more consistent user experience.
Frequently used record tabs may now be auto-loaded in the background to improve the user experience (this is off by default but can be configured through module.config.php – see
this commit for details).
Optional support for the Solr MoreLikeThis handler allows similar item results to be displayed for sharded indexes; see
this commit for details.
The Voyager and VoyagerRestful ILS drivers are no longer dependent on the poorly-supported PDO_OCI PHP module.
User comments may now optionally be protected with ReCaptcha.
Logger integration with
Slack.
Search specification YAML files now support a @parent_yaml property for manually-chained inheritance.
Possible backward compatibility breaks:
Press Release
Release 3.0.3 - 8/1/2016
Release 3.0.2 - 7/5/2016
Release 3.0.1 - 5/27/2016
Possible backward compatibility breaks:
Release 3.0 - 4/25/2016
New features:
Optional
record cache to improve speed/integrity of favorites by keeping local copies of records in the database.
Optional “privacy mode” to disable storage of personally identifying information in the database (disables many features).
More detailed and flexible indexing of author (and other creator) information.
Improved ipv6 support in permission system.
Dynamic debug mode: by defining the access.DebugMode permission in permissions.ini, selected users may be allowed to turn on debug with ?debug=true in the
URL.
The combined search module now supports column-specific filtering, and multiple columns using the same search backend. Search tabs also support multiple tabs using the same search backend for compatibility with combined search. This allows tabbing between different filtered views of a single index.
New “RemoveFilters” recommendation module (see
this commit) for recommending that users remove filters to obtain more results; this is now on by default for no-results searches.
New “SwitchTab” recommendation module (see
this commit) for recommending that users try a different tab (when multiple tabs are enabled).
New optional “delimited facets” feature to allow greater control over Solr facet display and ordering (see
this commit).
-
Improved support for publication information in MARC 260/264 fields (see
this pull request).
Added
Buchhandel.de cover support (may require local template customization for terms of service compliance).
Added simple
libraryh3lp recommendation module (to allow chat box on “no results” screen).
Upgraded to Solr 5.5.0.
Upgraded to SolrMarc 2.10.
Possible backward compatibility breaks:
Some changes have been made to the resource table of the database; records previously stored with a 'source' value of 'VuFind' are now stored with a value of 'Solr' (for improved consistency). This breaks database compatibility with VuFind 1.x, so you can no longer share a database between 1.x and 3.x – use a 2.x release if you need this capability. You MUST run the web-based update tool (http://your-vufind-url/Upgrade) to adjust database structure and contents when upgrading from a previous release (unless you prefer to manually alter the default value and contents of the resource table's source field).
Some other, lesser, database changes have also been made; see the
database changelog for full details.
All of VuFind's YAML Solr search specification files have been adjusted to favor the eDisMax handler when appropriate. This should result in better, more consistent search results. All legacy configurations will continue to function, but if you have customized searchspecs.yaml or one of its sibling files, you may wish to revise it to match the new defaults in order to take full advantage of eDisMax.
The getResourceSource() method of the record drivers is now deprecated; use getSourceIdentifier() instead.
VuFind's representation of authors has been made significantly more flexible, leading to several record driver changes:
getCorporateAuthor() has been replaced by getCorporateAuthors()
getHighlightedAuthor() has been replaced by getPrimaryAuthorsWithHighlighting()
Use of getPrimaryAuthor() is now discouraged in favor of getPrimaryAuthors()
The Javascript code in the bootstrap3 theme has been significantly revised. Custom Javascript and templates in your own theme may need to be adjusted to match.
The vufind.sh/vufind.bat control scripts for Solr have been replaced with solr.sh/solr.bat for greater naming clarity.
Session handling has been made more efficient. If you use \Zend\Session\Container objects in your custom code, be sure that you inject them with the correct session manager instance upon construction. If you make use of \VuFind\Controller\AbstractBase::writeSession() in a custom controller, note that it has been replaced by \VuFind\Controller\AbstractBase::disableSessionWrites().
Hidden filter functionality has been moved from the Search Options classes into the Search Params classes; any custom code calling getHiddenFilters or addHiddenFilter will need to be adjusted accordingly.
The SearchTabs view helper has been significantly refactored; local customizations will need to be adjusted.
The “Editions”/“WorldCatEditions” related record modules (previously on by default) and all related support functions have been removed due to the shutdown of OCLC's xID services. See
VUFIND-1142 for details.
The GetLastSearchLink view helper has been removed, replaced by a new SearchMemory helper that contains additional functionality.
Functionality related to remembering user search parameters has been moved from \VuFind\Search\Base\Options to \VuFind\Search\Memory; thus, Options::getSession(), Options::rememberLast*() and Options::getLast*() methods no longer exist. See
pull request #576 for more detail/background information.
Some changes have been made to the Solr schema which will require reindexing – see the
Schema Changelog for details.
The default Apache configuration has been changed to use a <Location> section instead of a RewriteBase directive. This makes directory-based multi-site configuration easier. See
this commit.
The Debian package has been renamed from vufind2 to vufind, and the default path in some places has been changed from /usr/local/vufind2 to /usr/local/vufind. Keep this in mind if upgrading using packages – you can install the new “vufind” package, move over your customizations from your “vufind2” installation, then uninstall “vufind2.”
In
config.ini, the [BulkExport] enabled/options settings are now deprecated in favor of an expanded syntax in the [Export] section. If you have customized these settings, please update your configuration accordingly.
The cover loader now accepts an array of settings in place of a long parameter list. The old parameter list is still accepted for backward compatibility, but if you have added custom parameters in a subclass, you will need to adjust the code. See
this commit.
The Primo Central backend configuration now uses the standard VuFind permissions system for authentication/authorization instead of its old custom IP regular expression logic. Additionally, the apiId and port settings have been replaced by a single url setting for connecting to the
API. VuFind's configuration upgrade tool will automatically adjust for all of this, but if you use Primo and are upgrading manually, you will need to update your Primo.ini and permissions.ini appropriately. Details in
this commit and
this commit.
The holdings data passed to RecordTab/holdingsils.phtml is now formatted slightly differently for simplicity; see
this commit.
The
config.ini cache_dir setting in the [Cache] setting has been replaced by a VUFIND_CACHE_DIR environment variable in httpd-vufind.conf. If you use this setting, please relocate it from
config.ini to httpd-vufind.conf. See
this commit.
The SwitchQuery recommendation module no longer supports “transform” methods. Now, everything is a “check” method, and a property controls which checks are opt-in and which are opt-out. Subclasses with custom transform methods will need to be adjusted. See
this commit.
-
If you used makeDynamicCovers = 'solid' in your config.ini file and want things to look the same as before, you should look at the new [DynamicCovers] section of the configuration and adjust some settings to replicate the old behavior.
The controller method “preDispatch” has been changed to have more descriptive names in all of the places where it is used; this prevents inheritance from causing unanticipated conflicts between event handlers. See
this commit for details.
Default Solr facet sorting has been changed to always sort by count unless otherwise specified (see
VUFIND-1128).
The “notes” element in the return value of
getHolding in ILS drivers has been deprecated in favor of separate holdings_notes and item_notes elements. Not all drivers support this yet; for now, the old “notes” field is treated as an alias of “hodlings_notes.”
\VuFind\Db\Table\Search::setSavedFlag() has been removed.
The signature of \VuFind\Db\Table\Search::saveSearch() has changed slightly.
\VuFind\Search\Memory::retrieve() has been deprecated in favor of \VuFind\Search\Memory::retrieveSearch().
\VuFindSearch\Backend\Solr\Response\Json\NamedList::remove has been removed – it was only used in one place and did not work correctly, so this is unlikely to affect anyone (see
this commit).
The \VuFind\ILS\Driver\VoyagerRestful::getRemoteHolds() method has been replaced by getHoldsFromApi(). It is unlikely that anyone relies on this in a custom subclass, but if anyone does, adjustments will need to be made.
Press Release
Release 2.5.4 - 4/25/2016
Release 2.5.3 - 4/18/2016
Release 2.5.2 - 2/3/2016
Release 2.5.1 - 1/11/2016
Minor bug fixes.
Changed default configurations to disable functionality tied to deprecated OCLC services (see
VUFIND-1142).
Expanded translations.
Release 2.5 - 9/28/2015
New features:
Improved user interface for tagging records; users now have the ability to remove the tags they created and easily +1 tags created by others.
Permissions-based Solr filters can now be managed using the [ConditionalHiddenFilters] section of
searches.ini.
New “offcanvas” menus for responsive bootstrap3/bootprint3 theme, optionally activated via offcanvas setting in Site section of
config.ini.
-
Users can manage multiple ILS accounts within a single VuFind account through the optional “library cards” feature.
-
New configuration option to use special default sort for empty searches, since relevance does not apply in this context (Solr/Summon-only).
New configuration option (coversize in [Content] section of
config.ini) to customize or disable thumbnail display without modifying themes.
Support for
image-based linking – display of a graphic in response to a set of OpenURL parameters (where supported by the link resolver).
-
Ability to customize translation strings on a per-theme basis.
-
Added basic right-to-left support for Arabic/Hebrew (Bootstrap3/Bootprint3 themes only).
New “high availability” options (multiple Solr URLs may be specified in config.ini to allow failover; a new AJAX system status endpoint has been introduced to assist load balancers).
Upgraded to Solr 4.10.4.
Upgraded to Zend Framework 2.4.6.
Upgraded bootstrap3/bootprint3 themes to version 3.3.4 of the
Bootstrap library.
OAI-PMH harvester is now more error-tolerant and can resume an interrupted harvest.
Possible backward compatibility breaks:
As noted under release 2.4, the old Blueprint theme has now been removed.
A new \VuFind\Search\SearchRunner class has been added to manage the process of setting up Options/Params/Results objects to perform a search. See
this commit for details. Possible impacts:
Recommendation module handling is now driven by an event system. The interface of the modules has not changed, but the way they are configured and loaded is now more streamlined. Customizations of recommendation logic in existing Options/Params/Results classes will need to be adjusted and calls to obsolete methods such as Params::recommendationsEnabled() will need to be removed.
The signature of the SearchObject abstract recommendation module's constructor has changed. This may impact customizations to CatalogResults, SummonResults and WebResults, or local custom modules extended from this base.
Due to the Solr upgrade, all records should be reindexed after upgrading.
Due to the Solr upgrade, the
SolrMarc “direct write to index on disk” feature is no longer available; all indexing must be done over HTTP. (This has been the default VuFind behavior for the entire 2.x release series, so few if any users should be affected).
OpenURL handling has been significantly rewritten. The OpenUrl view helper has taken on more responsibility in order to simplify templates using OpenURLs, a new
configuration file has been added which may remove the need for some custom record driver code, the “embed counter” has been eliminated, and several record driver methods related to OpenURLs have been added, removed or renamed. Renamed methods have changed “OpenURL” to “OpenUrl” for greater consistency with function naming conventions in Zend Framework 2. If you have done any OpenURL customization, you should review it in light of these changes. See
this commit for key details (with some further adjustments
here,
here,
here and
here).
The advanced search templates have been significantly revised in the bootstrap3/bootprint3 themes. Users with customized advanced search screens may need to rework local code.
ReCaptcha support has been updated to use the latest version of Google's
API. This eliminates some functionality from the previous version (including several themes, and the ability to create a custom theme). If you use a theme option unsupported by the new version, you will get the new default instead.
The \VuFind\Hierarchy\TreeDataSource\Solr class has been substantially refactored for improved performance. Any customizations to this class will have to be refactored to match. The new implementation uses raw Solr data instead of record drivers to reduce overhead (at the cost of some slightly redundant code) and uses separate formatter classes to produce JSON and XML output with less redundant logic.
In the Browse module, the data sent back from the controller now has separate 'value' and 'displayText' keys instead of a single 'result' value to properly account for translation. If you have custom templates, they need to be updated. See
this commit.
The DAIA ILS driver configuration changed in release 2.4, and legacy support for the previous configuration format has been removed. If you have an old DAIA configuration, please update it. Additionally, the constructor signature has changed, so if you have overridden the driver with a local subclass, some adjustments may be needed.
The PICA ILS driver has been removed; it seems likely that no one has ever used it, and the code was never well-maintained in the VuFind 2 code base.
The \VuFind\I18n\Translator\TranslatorAwareTrait has been restructured to add support for text domains.
Related to the TreeDataSource refactoring, the getHierarchyPositionsInParents() and getTitlesInHierarchy() record driver methods are no longer needed and have been removed to prevent confusion.
The marcRecord property of the SolrDefault record driver has been deprecated. Use the getMarcRecord() method instead. This may affect custom subclasses of SolrDefault and WorldCat record drivers.
The [Delimiters] section of MultiBackend.ini is no longer used; configurable delimiters never worked correctly, so the feature has been removed.
The addition of the coversize setting (see
this commit) has introduced template refactoring related to thumbnail display. Prior code should continue to work, but custom templates should be updated to use the new mechanism in order to take advantage of configurability.
Press Release
Release 2.4.1 - 5/25/2015
Possible backward compatibility breaks:
The \VuFind\Hierarchy\TreeRenderer\JSTree class has been significantly rewritten to address some encoding bugs; see PR
#350.
Release 2.4 - 3/23/2015
New features:
A new default theme: bootprint3 offers a look similar to the old blueprint theme with the added benefit of
Bootstrap's responsive design.
-
DPLA recommendation module.
Similar items carousel on record view.
-
Improved Zend Framework configuration to optimize production performance.
-
Improved “send email” configuration options (allow multiple recipients, allow user-edited subjects; see the [Mail] section of
config.ini).
-
-
Updated LibGuides module for compatibility with LibGuides2 (v1 also still supported).
-
More flexible set definition in the OAI-PMH server.
Improved locale support and new configuration option for default currency (see [Site] section of
config.ini).
-
Improved handling of call numbers.
Added
code generators to help automate certain common development/customization tasks.
-
Upgraded to Zend Framework 2.3.7.
Possible backward compatibility breaks:
This version will require at least PHP version 5.4, a higher requirement than previous releases.
The blueprint theme is now deprecated and will be removed in a future release; it is strongly recommended to revise your local theme to derive from either bootstrap3 (a bare-bones base theme) or bootprint3 (a more fleshed-out theme resembling blueprint) in order to make future upgrades easier.
The AJAX authentication mechanism now sends base64-encoded passwords to solve a Unicode compatibility problem. If users have an old cached version of common.js (in bootstrap3) or lightbox.js (in blueprint) the upgrade may cause login problems.
Call number improvements required changes to the Solr schema, so records must be reindexed after an upgrade. See the
index schema changelog for more details.
Zend Framework 2.3 changes the structure of the translator classes; any references in custom code to \Zend\I18n\Translator\Translator should be replaced with \Zend\I18n\Translator\TranslatorInterface.
Spelling suggestions are now displayed through a recommendation module rather than being hard-coded into the search results templates. This offers greater flexibility and configurability, but requires some configuration changes to ensure that spelling suggestions to not disappear. The automatic upgrade script should fix this, but if you are upgrading manually, see
this pull request for details on the changes you'll have to make to custom Summon.ini and searches.ini files.
The VuFind\Auth\Manager has been significantly refactored. If you have customized it, or classes that directly depend on it, some adjustments may be needed.
VuFind\Auth\LDAP has been significantly refactored and custom subclasses will likely need to be rewritten.
The constructor signatures of \VuFind\Cart and the UpgradeController have changed to reflect centralized cookie handling functionality (see
this commit). This will affect custom subclasses.
\VuFind\QRCode\Loader::getQrCode() is now \VuFind\QRCode\Loader::getImage() for consistency with \VuFind\Cover\Loader.
\VuFind\Code\ISBN has been extracted to a
separate library and renamed to \VuFindCode\ISBN. If you depend on this class, you may need to update use statements.
The WorldCat view helper has been eliminated; it was only used by the WorldCatHoldings record tab, so the functionality was moved into \VuFind\RecordTab\WorldCatHoldings.
Renamed and refactored \VuFind\Sitemap to \VuFind\Sitemap\Generator.
The XCNCIP ILS driver has been removed (this was experimental and built for an
obsolete version of the XC NCIP Toolkit; users should upgrade to use the more feature-complete XCNCIP2 driver, which works with the
newer version of the toolkit and is still fully supported).
-
If you need to translate the names of locations provided by your ILS driver, you should prefix them with “location_” in your language file – i.e. location_Main Stacks = “Main Stacks”. Previous versions of VuFind did not uniformly apply this prefixing convention. If you do not need to translate location names, no action is necessary.
The Google/HathiTrust/OpenLibrary preview code has been refactored. If your record driver included a custom preview.phtml template, you will need to make some changes to reflect the
new model.
The \VuFind\Cover\Loader determines the location of its cache files slightly differently (it no longer appends '/covers' to the directory provided to the constructor, instead assuming that the full path will be passed in).
The search backend for EBSCO Discovery Service has been significantly refactored.
The authentication modules now implement a validateCredentials() method which is designed to be a no-side-effects alternative to authenticate(). If you have a custom authentication module that maintains an internal state, you may need to implement a custom validateCredentials() method. See ChoiceAuth for an example of how this is used.
Press Release
Release 2.3.1 - 11/17/2014
Possible backward compatibility breaks:
Release 2.3 - 8/11/2014
New features:
Added support for Ex Libris Primo Central discovery service.
Added support for EBSCO EDS and EIT APIs.
Added support for searching LibGuides via
API.
New themes based on
Bootstrap 3 (to replace the earlier experimental Bootstrap 2-based themes)
Added support for password recovery and user-initiated password change (only when using DB authetication; off by default).
Added support for
ReCAPTCHA in several places (off by default).
Optional dynamic cover image generation (off by default).
Storage retrieval requests (aka “call slips”) and Interlibrary Loan (aka “universal borrowing”) are now supported by the VoyagerRestful ILS driver (and infrastructure is in place so that equivalent functionality can be added to other drivers in the future).
“Visual” view featuring treemap navigation (off by default).
Configurable citation formats (including new support for Chicago Style).
Social features (comments/tags/favorites) may now be turned off via configuration.
Added support for loading cover images based on ISSN, UPC and/or OCLC number (note that UPC numbers may now be indexed into the upc_str_mv field of the Solr index).
MultiILS authentication module for use with MultiBackend driver.
Javascript session keep-alive feature (off by default).
Support for Solr-driven (rather than ILS-driven) “New Item” searches (configurable via
searches.ini).
The ability to pre-filter searches with user-removable limits.
Improved PostgreSQL support (now supported by web-based installer).
Upgrade to Zend Framework 2.2.7.
Added checkbox facet support to advanced search screen.
Possible backward compatibility breaks:
The getHoldUrl() method of the RecordLink view helper has been deprecated in favor of getRequestUrl() and some other changes to improve flexibility of holdings display have been made (see
this commit); custom holdingsils.phtml templates should be updated.
The signature of the getHolding ILS driver method has changed from ($id, $patron = false) to ($id, array $patron = null).
Third-party content loading (book covers/reviews/excerpts) has been significantly refactored to make the code more pluggable. If you have customized the VuFind\Cover\Loader or the Reviews/Excerpt view helpers (which no longer exist in the new architecture), you will need to rework your changes to fit the new system. See
this pull request for details of the changes.
If you are using a custom Voyager/VoyagerRestful driver, be aware that the protected processHoldingData and makeItemRequests methods have changed their signatures. There have been many Voyager improvements in this release, so a general review of custom subclasses would be wise.
If you have a custom citation list in your record driver and wish to support the new configurable citation options, rename your public getCitationFormats() method to protected getSupportedCitationFormats().
The \VuFind\Cover\Loader::isn property has been renamed to isbn to allow it to be differentiated from issn. If you have a custom subclass, you will need to revise it. fetchFromISBN() has been renamed fetchFromAPI().
The side effect that \VuFind\Controller\AbstractRecord::createViewModel() would omit the record driver from the view model if loadRecord() was not called first has been eliminated; createViewModel now
always includes a record driver.
\VuFind\Search\Base\Results::spellingTokens() has been moved to \VuFind\Search\Solr\SpellingProcessor::tokenize(), and the interface of \VuFind\Search\Solr\SpellingProcessor::processSuggestions() has been changed to accept a raw search string rather than a tokenized array – this better encapsulates spelling logic.
View templates have been updated to use the escapeHtmlAttr helper instead of escapeHtml when escaping text within
HTML attributes. Custom templates should be updated to match.
The latest
Solr browse handler does not work with Java 1.6. If you have problems starting Solr or generating browse indexing after your upgrade, you may want to upgrade to Java 1.7 or try manually recompiling the .jar files as documented at the browse handler's
GitHub page.
The /update/json endpoints exposing the solr.JsonUpdateRequestHandler in the biblio and website Solr cores have been removed. The JsonUpdateRequestHandler has been deprecated and is no longer necessary. The removal of this endpoint should not affect any core VuFind functionality but may require reconfiguration for users running the
RecordManager tool.
All module.config.php files have been rewritten to avoid the use of closures. This improves the possibility of caching configurations. If you have local modules with their own configurations, it would be wise to make similar changes there. However, failing to make this change shouldn't break anything.
Handling of date ranges on advanced search screens has changed (see
VUFIND-627).
The VuFind\I18n\Translator\Loader\ExtendedIni translation loader has been significantly rewritten.
The protected process() method of \VuFind\Date\Converter has been changed to public convert().
Support for embedded video clips has been removed – Syndetics was the only supported content provider and has discontinued the service.
The Syndetics url setting in config.ini has been replaced with a use_ssl setting; the upgrade script should automatically take care of migrating old url settings.
The WorldCat search connector constructor parameters have changed to reflect the removal of the non-functional LimitCodes setting.
Press Release
Release 2.2.1 - 2/26/2014
Bug fix release, primarily addressing lightbox issues in the Bootstrap/Bootprint themes.
Release 2.2 - 1/27/2014
New features:
-
Expanded facet functionality: OR/NOT facets may be enabled (instead of/in addition to default AND facets), and facet areas may be configured to be collapsible in the interface.
schema.org microdata integration.
Tag management tools in admin module.
Optional QR code support for convenient smartphone record linking.
Support for CAS authentication.
Support for allowing user-selected authentication methods (multiple parallel authentication options).
Support for Solr's Extended DisMax search handler (disabled by default).
Upgrade to Zend Framework 2.2.5.
Added support for new Summon features: Topic Explorer, query expansion, language-specific relevance ranking, etc.
Expanded functionality in OAI-PMH harvest tool.
New recommendation module: SwitchQuery, to suggest alternate queries that may return more/better results.
Added Slovene translation; significantly expanded Brazilian Portuguese translation.
Assorted minor bug fixes and improvements.
Possible backward compatibility breaks:
All Solr DateField types have been changed to TrieDateField. This means that you should completely rebuild your index to avoid search problems. See
VUFIND-546.
Templates used for the authentication (login/account creation) interface have been changed to support the new ChoiceAuth option; custom login forms may need to be readjusted to reflect new template names and layouts.
Spellcheck behavior in the Solr search backend and related search classes has been significantly refactored (see
VUFIND-840 and
this commit).
Lucene query manipulation logic has been moved from the Solr query builder to its own helper class; this also affects the Summon query builder, which now makes use of the shared helper (see
VUFIND-937 and
this commit).
In the Options/Params/Results search classes, Results::createBackendParameters() has been replaced by Params::getBackendParameters() for all modules using the VuFindSearch system (see
this commit).
The Solr “stats” core (used for collecting statistics) is now disabled by default. Collecting stats in Solr is not recommended, but if you wish to use this mechanism, you must now turn it on in solr/solr.xml first.
The VuFind\Search\Memory class is now accessed as a Zend Framework service rather than being used statically (see
VUFIND-883).
Default record tabs can now be set from within module.config.php; the old $this→defaultTab in record controllers has become $this→fallbackDefaultTab; see
VUFIND-777.
The Sitemap generator's constructor parameters have changed; see
VUFIND-656.
The Aleph ILS driver's constructor parameters have changed.
The code which represents user lists using VuFind's internal facet mechanism has been removed in favor of a simpler solution for rendering the “Your Lists” section of the MyResearch menu.
Press Release
Release 2.1.1 - 9/9/2013
This bug fix release solves some problems in the combined search type functionality, hierarchy tree display, and favorite list maintenance.
Release 2.1 - 8/26/2013
New features:
-
Upgrade to Zend Framework 2.2.1.
Support for
combining search types into multi-column displays, custom search type drop-downs, tabbed search boxes, etc.
-
Expanded information visible in the alphabetical browse lists (titles in call number browse, author in title browse, etc.).
Support for
Booksite content integration.
Basic support for Pazpar2 integration.
New ILS driver for Polaris.
Improved support for using PostgreSQL instead of MySQL.
Improved Summon support (“Best Bets” recommendations, fixed cover
API, etc.)
Added partial Danish translation.
Assorted minor bug fixes and improvements.
Possible backward compatibility breaks:
change to Solr highlighting query generation.
change to renderSpellingSuggestions() method in search() view helper in Blueprint theme.
-
minor adjustments to initialization/registration of VuFindSearch\Service.
Press Release
Release 2.0.1 - 6/25/2013
Release 2.0 - 6/24/2013
Upgrade to a newer version of Solr (4.2.1) and Jetty (8.1.8).
Refinements to
search service architecture (error event, more granular parameter handling).
Built-in Google Analytics support.
Significantly improved Horizon ILS driver.
Addition of “generator” meta tag in output.
Support for RDA 264 field.
Auto-detection of preferred user language.
Miscellaneous bug fixes and improvements.
Press Release
Release 2.0RC1 - 4/29/2013
-
-
-
Security improvements (safer password storage, optional login requirement before emailing).
New “MultiBackend” ILS driver for connecting multiple ILSes to a single VuFind instance.
Enhanced/fixed or added Clavius, Horizon, NewGenLib and Voyager ILS drivers.
Tika full text import support (supplemental to existing Aperture support).
EndNote Web export support.
Clickatell SMS support (consistent with the 1.4 release).
Miscellaneous bug fixes and improvements.
Press Release
Release 2.0beta - 10/1/2012
Release 2.0alpha - 7/2/2012
-
More feature-rich Summon and WorldCat modules (full support for tags, favorites, comments, citations and other standard VuFind features).
More complete mobile theme.
More flexible theme system (allow users to choose from multiple themes).
Configuration-driven record export system supported by more record types.
Streamlined install/upgrade process.
New “related records” plug-in mechanism to allow configuration-driven customization of record views (no more hard-coded “more like this” / “WorldCat editions” functionality).
Language file inheritance (override language settings without editing core files).
Release 1.4 - 1/28/2013
WARNING: If you are upgrading to this release, see the migration notes.
-
-
A “no ILS” driver for users without an integrated library system or for graceful support of temporary outages
Support for title-level (as opposed to item-level) holds
Improved/expanded jquerymobile theme – now the recommended mobile theme
-
-
Home page facets may now be configured independently of advanced search facets
Support for using Tika instead of Aperture for full text harvesting
Support for “no results” recommendation modules – special suggestions displayed only when the result set is empty
New recommendation modules: AuthorityRecommend (provide suggestions based on authority cross-references), FacetCloud (compact display of expanding facet values), SwitchType (for use in “no results” area)
Optional Clickatell support for SMS messaging
-
New languages: Basque, Catalan, Czech and Russian
Support for ldaps scheme in LDAP authentication module
Various bug fixes and minor enhancements
Press Release
Release 1.3 - 1/30/2012
WARNING: If you are upgrading to this release, see the migration notes.
Upgrade to latest versions of Solr (3.5) and
SolrMarc (2.3)
New “book bag” functionality for performing actions (save, email, etc.) on multiple items from result lists (available in Blueprint theme only)
-
Optional Solr-driven Reserves search module
New recommendation modules (Timeline graph, Europeana, Google Maps)
Improved Syndetics integration
Blueprint is now the default theme (since it is most feature-rich and uses jQuery, which will be the standard in VuFind 2.0)
Various bug fixes and minor enhancements
Press Release
Release 1.2 - 8/1/2011
WARNING: If you are upgrading to this release, see the migration notes.
New (experimental) jQuery Mobile theme.
Added infrastructure for holds/recalls and renewals via
ILS drivers (currently supported by Voyager, Horizon and Demo drivers).
Improved advanced search behavior.
Optional support for MARC 7xx linking fields.
Optional support for multiple result views (list vs. grid).
Optional support for multiple result list page sizes.
-
Improved EZProxy integration.
Configurable “retain filters” checkbox.
BibTeX export support.
More complete translations for most supported languages.
Fixed Dewey indexing bugs from release 1.1.
Fixed public list bugs from release 1.1.
Release 1.1 - 3/21/2011
WARNING: If you are upgrading to this release, see the migration notes.
-
Smarter handling of stemming in search results ranking.
Book preview support through Google Books, OpenLibrary and HathiTrust.
-
-
-
-
-
-
-
-
Theme inheritance now includes Javascript support; note that Javascript files have been reorganized to take advantage of this, which may require adjustments to locally customized templates.
Support for cover images from Baker & Taylor's
Content Café subscription service.
Upgraded to latest version of
SolrMarc MARC import tool (v2.2).
Improved favorite list management features.
New optional jQuery/Blueprint theme.
Bug fixes.
Release 1.0.1 - 8/13/2010
WARNING: If you are upgrading to this release, see the migration notes.
Added optional “Next” / “Prev” links to navigate through search results from the Record view (disabled by default – see the new [Record] section of config.ini to enable this option).
Added NewGenLib ILS driver.
-
More flexible configuration of sort options (you can now specify tie-breakers).
Bug fixes to address issues discovered during the first month of VuFind 1.0 deployment. See
JIRA for details on bugs, including patches for the most critical problems.
Release 1.0 - 7/15/2010
WARNING: If you are upgrading to this release, see the migration notes.
Upgraded to Solr 1.4.1, the latest bugfix release of the index engine.
Dewey Decimal support (see
Call Numbers page for more details).
-
Record Driver mechanism to help with ingesting record formats other than MARC.
Mobile interface.
Summon module.
Expanded support for non-English languages.
Many bug fixes and new configuration options.
Release 1.0RC2 - 12/14/2009
WARNING: If you are upgrading to this release, see the migration notes.
Upgraded to Solr 1.4, the latest official release of the index engine.
Dismax search support – the powerful Solr Dismax handler is now used by VuFind, without losing support for advanced features of Lucene like wildcards and Booleans.
Facets are no longer retrieved via AJAX for faster search result display.
Revamped (and fully functional) advanced search (thanks to Greg Pendlebury).
Searches are now fully customizable through configuration files – you don't need to change any code. See
Search Customization for details.
Template inheritance – you can now customize only the templates you need to change for your local setup and inherit the rest from one of the default themes. See
Theme Inheritance for more details.
Updated
SolrMarc importer with support for custom BeanShell scripts (for localized import behavior without needing to recompile the whole program) and external translation maps (so you can edit the files without having to open the SolrMarc .jar file).
Expanded favorites handling – create multiple distinct named lists of favorite records. Keep them private for personal use or make them public to share with others.
New default theme – a whole new user interface look and feel, without losing the option to retain the original “classic” look.
Improved Admin interface – view statistics and configuration files from one convenient place.
Improved authentication code – added Shibboleth support, made LDAP support more flexible, fixed minor problems with other methods.
Flexible session handling: store session in Memcache, MySQL or the local filesystem.
New logging mechanism (configurable in config.ini) allows fatal errors to be captured to file, database or email for better discovery of problems.
Many, many bug fixes and security improvements.
Release 1.0RC1 - 10/15/2008
Change information is unavailable for this release.
Release 0.8.2 (Revision 549) - 4/21/2008
Fixed importing bugs from 0.8.1 release
Improved author information indexing
Revised record format detection in importer
Added clean Era on import
Fixed boolean searching
Fixed Narrow Search Results js error
Fixed Browse Module - Thanks to Bob Wicksall
Fixed Syndetics Reviews - Thanks to Joel Norman
Release 0.8.1 (Revision 530) - 4/15/2008
WARNING: For this release you must re-index records.
Search queries - queries have been restructured to be more powerful and higher quality with better relevancy ranking
Searching - filter out illegal characters
Searching - user's input is now tokenized and a AND query and OR query are now generated
Index data - punctuation in Title, Subject, Date, ISBN fields are now cleaned
Index data - isbn & issn fields are now multivalued
Index data - added new fields to allow more granular control of searching
Languages - All 450+ ISO languages are now recognized
Import - fixed import.sh to work easier
Record View - revised subject links to be accurate
Record View - fixed display of tags
Facets - Fixed narrow by call number
Author page - author name cleaned up to allow better results from wikipedia
Synonyms - added some basic synonyms to synonyms.txt file
Release 0.8 (Revision 402) - 3/18/2008
WARNING: For this release you must re-index records.
New Import Tool - Developed by Wayne Graham of William and Mary College
Data directory is no longer used
Refactored Record Module to use
HTML for display instead of XSL
Place Hold/Recall is now incorporated into the system and available for Voyager Systems. More ILS systems will be intergrated as soon as possible
Book Covers and Book Reviews can now be supplied by other providers other than Amazon. Syndetics and Google Books are included as well.
Innovative Driver - Development by Adam Brin.
Release 0.7 (Revision 264) - 12/12/2007
Internationalization - VuFind has been translated into German, Spanish, French, Japanese, Brazilian Portugese and Chinese.
Zotero - Users of VuFind can now save items to their Zotero plugin.
User Account - Users of VuFind can now see what items they have checked out, any holds they have places as well as any fines that they have.
Browse - A new “prototype” browse application has been added to VuFind to allow users to browse through the library resources through an iTunes style interface.
Narrow Results now include a facet called Subject Area that is based on the Call Number.
Logged in interface has been redesigned
AJAX Queries on search results page were consolidated for better performance Patch by Chris Delis.
Added “more” and “less” functionality to the results facets to allow for more that 5 options to show. Patch by Chris Delis.
Improved all fields search algorithm.
Improved “Similiar Items” algorithm.
Added a “Search Within” feature.
Added basic Aleph Driver by Christoph Krempe
Added basic SirsiDynix Sybase Driver by Matt Mackey
Holdings tab is now the default tab on the Record View page
Bug Fix: Install script now creates the MySQL database correctly
Bug Fix: Deleting of favorites now works correctly
Release 0.6.1 (Revision 133) - 8/22/2007
Bug Fix: Narrow Results did not work in Safari and IE7
Bug Fix: Install script did not install all necessary libraries
Bug Fix: Advanced search not working correctly
Bug Fix: Voyager driver now has configurable port number
Added debug option in configuration
Release 0.6 (Revision 118) - 8/16/2007
New Tagging/Favorites System and New MySQL Database Schema
Redesigned “logged-in” Homepage
Users can view their checked out items
Narrow by Callnumber
New fields in SOLR Schema
Enhanced import script with new data cleanup mechanisms
Revised advanced search mechanism
Enhanced installation script
Migrated from Tomcat to Jetty for ease of packaging (Thanks to Wayne Graham)
New control script (vufind.sh) for new Jetty Server (Thanks to Wayne Graham)
Bug Fix: Login popup window
Bug Fix: Missing book cover images and Amazon reviews
Bug Fix: More Like This - strange inclusions
Bug Fix: Holdings Tab display works with latest Structures_Datagrid library
And many more bug fixes…
Release 0.5 - 7/18/2007
Alpha