CINXE.COM

changelog [VuFind Documentation]

<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <meta name="description" content="A flexible discovery tool used by libraries worldwide." /> <meta name="keywords" content="library, discovery, catalog, search, portal, opac, federated, villanova, university, college" /> <title>changelog [VuFind Documentation]</title> <script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script> <link href='https://fonts.googleapis.com/css?family=Roboto:400,500,700' rel='stylesheet' type='text/css'> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="noindex,nofollow"/> <meta name="keywords" content="changelog"/> <link rel="search" type="application/opensearchdescription+xml" href="/wiki/lib/exe/opensearch.php" title="VuFind Documentation"/> <link rel="start" href="/wiki/"/> <link rel="contents" href="/wiki/changelog?do=index" title="Sitemap"/> <link rel="manifest" href="/wiki/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/wiki/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Current namespace" href="/wiki/feed.php?mode=list&amp;ns="/> <link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/changelog"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/changelog"/> <link rel="canonical" href="https://vufind.org/wiki/changelog"/> <link rel="stylesheet" href="/wiki/lib/exe/css.php?t=vufind_wiki&amp;tseed=253e14ebccfe88618e28ad9d292f38a4"/> <link type="text/css" rel="stylesheet" href="/wiki/lib/plugins/datatables/assets/datatables.net-fixedheader-dt/css/fixedHeader.dataTables.min.css"/> <link type="text/css" rel="stylesheet" href="/wiki/lib/plugins/datatables/assets/datatables.net-fixedcolumns-dt/css/fixedColumns.dataTables.min.css"/> <link type="text/css" rel="stylesheet" href="/wiki/lib/plugins/datatables/assets/datatables.net/css/dataTables.jqueryui.min.css"/> <link type="text/css" rel="stylesheet" href="/wiki/lib/plugins/datatables/assets/datatables.net-buttons/css/buttons.jqueryui.min.css"/> <!--[if gte IE 9]><!--> <script >/*<![CDATA[*/var NS='';var JSINFO = {"plugin":{"datatables":{"config":{"dom":"lBfrtip","language":{"url":"\/wiki\/lib\/plugins\/datatables\/assets\/datatables.net-i18n\/en-GB.json"}},"enableForAllTables":0}},"move_renameokay":false,"plugins":{"struct":{"isPageEditor":false,"disableDeleteSerial":0}},"id":"changelog","namespace":"","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0}; /*!]]>*/</script> <script src="/wiki/lib/exe/jquery.php?tseed=f0349b609f9b91a485af8fd8ecd4aea4" defer="defer">/*<![CDATA[*/ /*!]]>*/</script> <script src="/wiki/lib/exe/js.php?t=vufind_wiki&amp;tseed=253e14ebccfe88618e28ad9d292f38a4" defer="defer">/*<![CDATA[*/ /*!]]>*/</script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net/js/jquery.dataTables.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-fixedheader-dt/js/fixedHeader.dataTables.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-fixedcolumns-dt/js/fixedColumns.dataTables.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-buttons/js/dataTables.buttons.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-buttons/js/buttons.html5.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-buttons/js/buttons.print.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/jszip/jszip.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/pdfmake/pdfmake.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/pdfmake/vfs_fonts.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net/js/dataTables.jqueryui.min.js" defer="defer"></script> <script type="text/javascript" src="/wiki/lib/plugins/datatables/assets/datatables.net-buttons/js/buttons.jqueryui.min.js" defer="defer"></script> <!--<![endif]--> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/wiki/lib/tpl/vufind_wiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/wiki/lib/tpl/vufind_wiki/images/apple-touch-icon.png" /> </head> <body> <div class="header"> <a href="/vufind/" class="logo"><img src="https://vufind.org/vufind/assets/images/vf-beta.png"/></a> <br class="header-break"/> <!--<a href="https://vufind.org/ddoc.html">Design Doc</a>--> <a href="/vufind/about.html">About</a> <a href="/vufind/features.html">Features</a> <a href="/vufind/downloads.html">Downloads</a> <a href="/wiki/installation">Getting Started</a> <a href="/wiki">Documentation</a> <a href="/vufind/schedule.html">Events</a> <a href="/vufind/support.html">Support</a> <a href="https://github.com/vufind-org/vufind" class="github-link">GitHub</a> </div> <div class="header-announcement"> <p> Love VuFind®? Consider becoming a <a href="https://vufind.org/donate">financial supporter</a>. Your support helps build a better VuFind®! </p> </div> <!--Conference banner in main.php--> <div class="content"> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_vufind_wiki "> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">skip to content</a></li> </ul> <h1 class="logo"><a href="/wiki/start" accesskey="h" title=" [h]"><img src="/wiki/lib/tpl/vufind_wiki/images/logo.png" width="64" height="64" alt="" /><span>VuFind Documentation</span></a></h1> </div> <div class="tools group"> <!-- USER TOOLS <div id="dokuwiki__usertools"> <h3 class="a11y">User Tools</h3> <ul> <li class="action login"><a href="/wiki/changelog?do=login&amp;sectok=" title="Log In" rel="nofollow"><span>Log In</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> --> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Site Tools</h3> <form action="/wiki/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="changelog" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Search" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Search">Search</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/wiki/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="changelog" /><select name="do" class="edit quickselect" title="Tools"><option value="">Tools</option><optgroup label="Page Tools"><option value="edit">Show pagesource</option><option value="revisions">Old revisions</option><option value="backlink">Backlinks</option></optgroup><optgroup label="Site Tools"><option value="recent">Recent Changes</option><option value="media">Media Manager</option><option value="index">Sitemap</option></optgroup><optgroup label="User Tools"><option value="login">Log In</option></optgroup></select><button type="submit">&gt;</button></div></form> </div> <ul> <li class="action recent"><a href="/wiki/changelog?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/wiki/changelog?do=media&amp;ns=" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/wiki/changelog?do=index" title="Sitemap [x]" rel="nofollow" accesskey="x">Sitemap</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="youarehere"><span class="bchead">You are here: </span><span class="home"><bdi><a href="/wiki/start" class="wikilink1" title="start" data-wiki-id="start">start</a></bdi></span> » <bdi><a href="/wiki/changelog" class="wikilink1" title="changelog" data-wiki-id="changelog">changelog</a></bdi></div> <div class="trace"><span class="bchead">Trace:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/wiki/changelog" class="breadcrumbs" title="changelog">changelog</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="alert--outdated"> <b>Warning:</b> This page has not been updated in over <span id="outdated-diff">over a year</span> and may be outdated or deprecated. </div> <div class="pageId"><span>changelog</span></div> <div class="page group prose prose-invert"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Table of Contents</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#vufind_change_log">VuFind® Change Log</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#release_110_-_currently_in_development">Release 11.0 - currently in development</a></div></li> <li class="level2"><div class="li"><a href="#release_1011_-_currently_in_development">Release 10.1.1 - currently in development</a></div></li> <li class="level2"><div class="li"><a href="#release_101_-_11_4_2024">Release 10.1 - 11/4/2024</a></div></li> <li class="level2"><div class="li"><a href="#release_1001_-_10_14_2024">Release 10.0.1 - 10/14/2024</a></div></li> <li class="level2"><div class="li"><a href="#release_100_-_6_24_2024">Release 10.0 - 6/24/2024</a></div></li> <li class="level2"><div class="li"><a href="#release_912_-_6_17_2024">Release 9.1.2 - 6/17/2024</a></div></li> <li class="level2"><div class="li"><a href="#release_911_-_2_12_2024">Release 9.1.1 - 2/12/2024</a></div></li> <li class="level2"><div class="li"><a href="#release_91_-_10_30_2023">Release 9.1 - 10/30/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_903_-_7_24_2023">Release 9.0.3 - 7/24/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_902_-_6_26_2023">Release 9.0.2 - 6/26/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_901_-_4_24_2023">Release 9.0.1 - 4/24/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_90_-_4_24_2023">Release 9.0 - 4/24/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_812_-_2_6_2023">Release 8.1.2 - 2/6/2023</a></div></li> <li class="level2"><div class="li"><a href="#release_811_-_10_3_2022">Release 8.1.1 - 10/3/2022</a></div></li> <li class="level2"><div class="li"><a href="#release_81_-_7_18_2022">Release 8.1 - 7/18/2022</a></div></li> <li class="level2"><div class="li"><a href="#release_804_-_2_28_2022">Release 8.0.4 - 2/28/2022</a></div></li> <li class="level2"><div class="li"><a href="#release_803_-_12_20_2021">Release 8.0.3 - 12/20/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_802_-_11_29_2021">Release 8.0.2 - 11/29/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_801_-_9_27_2021">Release 8.0.1 - 9/27/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_80_-_9_20_2021">Release 8.0 - 9/20/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_711_-_7_5_2021">Release 7.1.1 - 7/5/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_71_-_2_22_2021">Release 7.1 - 2/22/2021</a></div></li> <li class="level2"><div class="li"><a href="#release_702_-_12_7_2020">Release 7.0.2 - 12/7/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_701_-_8_31_2020">Release 7.0.1 - 8/31/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_70_-_7_20_2020">Release 7.0 - 7/20/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_612_-_7_13_2020">Release 6.1.2 - 7/13/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_611_-_3_16_2020">Release 6.1.1 - 3/16/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_61_-_2_3_2020">Release 6.1 - 2/3/2020</a></div></li> <li class="level2"><div class="li"><a href="#release_601_-_9_16_2019">Release 6.0.1 - 9/16/2019</a></div></li> <li class="level2"><div class="li"><a href="#release_60_-_7_15_2019">Release 6.0 - 7/15/2019</a></div></li> <li class="level2"><div class="li"><a href="#release_511_-_5_6_2019">Release 5.1.1 - 5/6/2019</a></div></li> <li class="level2"><div class="li"><a href="#release_51_-_2_4_2019">Release 5.1 - 2/4/2019</a></div></li> <li class="level2"><div class="li"><a href="#release_501_-_10_10_2018">Release 5.0.1 - 10/10/2018</a></div></li> <li class="level2"><div class="li"><a href="#release_50_-_7_16_2018">Release 5.0 - 7/16/2018</a></div></li> <li class="level2"><div class="li"><a href="#release_413_-_6_11_2018">Release 4.1.3 - 6/11/2018</a></div></li> <li class="level2"><div class="li"><a href="#release_412_-_1_29_2018">Release 4.1.2 - 1/29/2018</a></div></li> <li class="level2"><div class="li"><a href="#release_411_-_11_20_2017">Release 4.1.1 - 11/20/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_41_-_10_2_2017">Release 4.1 - 10/2/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_401_-_8_28_2017">Release 4.0.1 - 8/28/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_40_-_7_10_2017">Release 4.0 - 7/10/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_314_-_7_5_2017">Release 3.1.4 - 7/5/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_313_-_3_13_2017">Release 3.1.3 - 3/13/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_312_-_1_16_2017">Release 3.1.2 - 1/16/2017</a></div></li> <li class="level2"><div class="li"><a href="#release_311_-_10_31_2016">Release 3.1.1 - 10/31/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_31_-_9_26_2016">Release 3.1 - 9/26/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_303_-_8_1_2016">Release 3.0.3 - 8/1/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_302_-_7_5_2016">Release 3.0.2 - 7/5/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_301_-_5_27_2016">Release 3.0.1 - 5/27/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_30_-_4_25_2016">Release 3.0 - 4/25/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_254_-_4_25_2016">Release 2.5.4 - 4/25/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_253_-_4_18_2016">Release 2.5.3 - 4/18/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_252_-_2_3_2016">Release 2.5.2 - 2/3/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_251_-_1_11_2016">Release 2.5.1 - 1/11/2016</a></div></li> <li class="level2"><div class="li"><a href="#release_25_-_9_28_2015">Release 2.5 - 9/28/2015</a></div></li> <li class="level2"><div class="li"><a href="#release_241_-_5_25_2015">Release 2.4.1 - 5/25/2015</a></div></li> <li class="level2"><div class="li"><a href="#release_24_-_3_23_2015">Release 2.4 - 3/23/2015</a></div></li> <li class="level2"><div class="li"><a href="#release_231_-_11_17_2014">Release 2.3.1 - 11/17/2014</a></div></li> <li class="level2"><div class="li"><a href="#release_23_-_8_11_2014">Release 2.3 - 8/11/2014</a></div></li> <li class="level2"><div class="li"><a href="#release_221_-_2_26_2014">Release 2.2.1 - 2/26/2014</a></div></li> <li class="level2"><div class="li"><a href="#release_22_-_1_27_2014">Release 2.2 - 1/27/2014</a></div></li> <li class="level2"><div class="li"><a href="#release_211_-_9_9_2013">Release 2.1.1 - 9/9/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_21_-_8_26_2013">Release 2.1 - 8/26/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_201_-_6_25_2013">Release 2.0.1 - 6/25/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_20_-_6_24_2013">Release 2.0 - 6/24/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_20rc1_-_4_29_2013">Release 2.0RC1 - 4/29/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_20beta_-_10_1_2012">Release 2.0beta - 10/1/2012</a></div></li> <li class="level2"><div class="li"><a href="#release_20alpha_-_7_2_2012">Release 2.0alpha - 7/2/2012</a></div></li> <li class="level2"><div class="li"><a href="#release_14_-_1_28_2013">Release 1.4 - 1/28/2013</a></div></li> <li class="level2"><div class="li"><a href="#release_13_-_1_30_2012">Release 1.3 - 1/30/2012</a></div></li> <li class="level2"><div class="li"><a href="#release_12_-_8_1_2011">Release 1.2 - 8/1/2011</a></div></li> <li class="level2"><div class="li"><a href="#release_11_-_3_21_2011">Release 1.1 - 3/21/2011</a></div></li> <li class="level2"><div class="li"><a href="#release_101_-_8_13_2010">Release 1.0.1 - 8/13/2010</a></div></li> <li class="level2"><div class="li"><a href="#release_10_-_7_15_2010">Release 1.0 - 7/15/2010</a></div></li> <li class="level2"><div class="li"><a href="#release_10rc2_-_12_14_2009">Release 1.0RC2 - 12/14/2009</a></div></li> <li class="level2"><div class="li"><a href="#release_10rc1_-_10_15_2008">Release 1.0RC1 - 10/15/2008</a></div></li> <li class="level2"><div class="li"><a href="#release_082_revision_549_-_4_21_2008">Release 0.8.2 (Revision 549) - 4/21/2008</a></div></li> <li class="level2"><div class="li"><a href="#release_081_revision_530_-_4_15_2008">Release 0.8.1 (Revision 530) - 4/15/2008</a></div></li> <li class="level2"><div class="li"><a href="#release_08_revision_402_-_3_18_2008">Release 0.8 (Revision 402) - 3/18/2008</a></div></li> <li class="level2"><div class="li"><a href="#release_07_revision_264_-_12_12_2007">Release 0.7 (Revision 264) - 12/12/2007</a></div></li> <li class="level2"><div class="li"><a href="#release_061_revision_133_-_8_22_2007">Release 0.6.1 (Revision 133) - 8/22/2007</a></div></li> <li class="level2"><div class="li"><a href="#release_06_revision_118_-_8_16_2007">Release 0.6 (Revision 118) - 8/16/2007</a></div></li> <li class="level2"><div class="li"><a href="#release_05_-_7_18_2007">Release 0.5 - 7/18/2007</a></div></li> <li class="level2"><div class="li"><a href="#alpha">Alpha</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="vufind_change_log">VuFind® Change Log</h1> <div class="level1"> <p> <em> When adding a new release, see the <a href="/wiki/changelog:release_checklist" class="wikilink1" title="changelog:release_checklist" data-wiki-id="changelog:release_checklist">release checklist</a>. </em> </p> </div> <h2 class="sectionedit2" id="release_110_-_currently_in_development">Release 11.0 - currently in development</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> The checkboxFacetCounts setting in facets.ini can be used to display result counts next to checkbox facets (currently only supported for Solr; currently incompatible with [CustomFilters] settings). See <a href="https://github.com/vufind-org/vufind/pull/4060" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4060" rel="ugc nofollow">pull request #4060</a> for details.</div> </li> <li class="level1"><div class="li"> The system can now be configured to avoid ever displaying a public contact email address; see <a href="https://github.com/vufind-org/vufind/pull/3979" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3979" rel="ugc nofollow">pull request #3979</a> for details.</div> </li> <li class="level1"><div class="li"> Subject headings in alphabetic browse now display separators between subfields; the string used as a separator can be configured using the topic_browse_separator setting in config.ini. See <a href="https://github.com/vufind-org/vufind/pull/4011" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4011" rel="ugc nofollow">pull request #4011</a> for details.</div> </li> <li class="level1"><div class="li"> Permanent links on the record page can now be disabled through the permanent_link setting in the [Record] section of config.ini.</div> </li> <li class="level1"><div class="li"> As an alternative to showing a “no cover image available” image, it is now possible to completely hide covers for items with no available images by setting the noCoverAvailableImage setting to false in config.ini. See <a href="https://github.com/vufind-org/vufind/pull/4061" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4061" rel="ugc nofollow">pull request #4061</a> for more details.</div> </li> <li class="level1"><div class="li"> New rate limiter options have been added (see <a href="https://github.com/vufind-org/vufind/pull/4063" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4063" rel="ugc nofollow">pull request #4063</a>).</div> </li> <li class="level1"><div class="li"> When using Solr-based course reserves, empty values are now represented with a message instead of a blank string for greater clarity. See <a href="https://github.com/vufind-org/vufind/pull/4023" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4023" rel="ugc nofollow">pull request #4023</a> for details.</div> </li> <li class="level1"><div class="li"> Format determination in MARC record indexing now accounts for electronic serials more accurately; see <a href="https://github.com/vufind-org/vufind/pull/3981" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3981" rel="ugc nofollow">pull request #3981</a> for details.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> A full reindex of the Solr index (including course reserves, when applicable) and alphabetic browse index is required to take advantage of changes to the schema and indexing rules. See the <a href="/wiki/development:architecture:solr_index_schema#vufind_110" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Extended <abbr title="HyperText Markup Language">HTML</abbr> escaping of attributes has been made configurable via the <code>extendedHtmlAttributeEscaping</code> setting in config.ini. This setting now defaults to false, which improves performance, <abbr title="HyperText Markup Language">HTML</abbr> readability and file size. However, if you have any unquoted <abbr title="HyperText Markup Language">HTML</abbr> attributes in local templates, you should either quote them or change the setting to true to ensure security. See <a href="https://github.com/vufind-org/vufind/pull/4009" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4009" rel="ugc nofollow">pull request #4009</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Item status display code has been significantly refactored to use templating instead of <abbr title="HyperText Markup Language">HTML</abbr> generation in Javascript and to allow prioritization of statuses; the “true” and “false” status values previously returned by \VuFind\ILS\Logic\AvailabilityStatus::availabilityAsString() have been replaced with the more descriptive &#039;available&#039; and &#039;unavailable&#039;. See <a href="https://github.com/vufind-org/vufind/pull/3758" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3758" rel="ugc nofollow">pull request #3758</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The AccountMenu.yaml configuration file has been revised to support multiple sections; related adjustments have been made to the associated view helper and templates. While changes are designed to be as backward-compatible as possible, if you have customized any part of the account menu, you are strongly encouraged to bring your custom configurations and/or code up to date to take advantage of new settings and ensure future compatibility. See <a href="https://github.com/vufind-org/vufind/pull/4006" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4006" rel="ugc nofollow">pull request #4006</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> All setters on interfaces in the \VuFind\Db\Entity namespace have been changed to use a <code>static</code> return type instead of the explicit name of the interface for more accurate typing.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The abandoned laminas-mail library has been replaced with symfony-mailer; this has led to some changes to the \VuFind\Mailer\Mailer class and related code. \VuFind\Mailer\Mailer::getNewBlankMessage() has been deprecated. Custom email-related code may need adjustment. See <a href="https://github.com/vufind-org/vufind/pull/3975" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3975" rel="ugc nofollow">pull request #3975</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> To better centralize cookie handling, the getCookie*() methods of \VuFind\Cart have been removed along with corresponding logic in cart.js and layout.phtml in the theme; a new CookieManager view helper has been introduced which provides direct access to cookie data independently of the cart code. See <a href="https://github.com/vufind-org/vufind/pull/3941" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3941" rel="ugc nofollow">pull request #3941</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Templates related to list pagination have been improved and refactored; if you have customized pagination anywhere, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/4074" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4074" rel="ugc nofollow">pull request #4074</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <code>.checkboxFilter</code> <abbr title="Cascading Style Sheets">CSS</abbr> class has been renamed <code>.checkbox-filters</code> for clarity. If you have custom templates or styles related to this class, they will need adjustment. See <a href="https://github.com/vufind-org/vufind/pull/4058" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4058" rel="ugc nofollow">pull request #4058</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature of \VuFind\Db\Service\SearchServiceInterface::getSearches() has changed to allow a null $sessionId value to be passed.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of \VuFind\Auth\Database has changed to accommodate new password hashing functionality.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature of \VuFindSearch\Backend\Solr\Backend::terms() has been updated to include explicit types. In the unlikely situation that you have extended this method, adjustments will be needed. See <a href="https://github.com/vufind-org/vufind/pull/3885" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3885" rel="ugc nofollow">pull request #3885</a>.</div> </li> </ul> </div> <h2 class="sectionedit3" id="release_1011_-_currently_in_development">Release 10.1.1 - currently in development</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / translation improvement release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> This release removes WorldCat search <abbr title="Application Programming Interface">API</abbr> v1 logic and adds code to redirect old v1 links and content to the new v2 backend. It will be released after OCLC fully shuts down the v1 <abbr title="Application Programming Interface">API</abbr>. Users are strongly encouraged to upgrade to release 10.1 in the meantime so they can set up the v2 <abbr title="Application Programming Interface">API</abbr> and be ready to fully transition away from the legacy system.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The multi-select facets feature was significantly rewritten to address some bugs; see pull requests <a href="https://github.com/vufind-org/vufind/pull/4081" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4081" rel="ugc nofollow">#4081</a>, <a href="https://github.com/vufind-org/vufind/pull/4087" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4087" rel="ugc nofollow">#4087</a>, <a href="https://github.com/vufind-org/vufind/pull/4091" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4091" rel="ugc nofollow">#4091</a>, <a href="https://github.com/vufind-org/vufind/pull/4099" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4099" rel="ugc nofollow">#4099</a> and <a href="https://github.com/vufind-org/vufind/pull/4107" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4107" rel="ugc nofollow">#4107</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> To fix a bug, the constructor signature of \VuFind\Search\Base\FacetCache was adjusted; its behavior is backward-compatible, but in the very unlikely event that you have overridden this class, adjustments will be needed. See <a href="https://github.com/vufind-org/vufind/pull/4098" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4098" rel="ugc nofollow">pull request #4098</a> for details.</div> </li> </ul> </div> <h2 class="sectionedit4" id="release_101_-_11_4_2024">Release 10.1 - 11/4/2024</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> A new backend has been added to support integration with OCLC&#039;s WorldCat Search v2 <abbr title="Application Programming Interface">API</abbr>. <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The legacy Search v1 <abbr title="Application Programming Interface">API</abbr> will shut down at the end of 2024, so users on the old system will need to upgrade in order to continue incorporating WorldCat data into VuFind®. See WorldCat2.ini for details on configuration.</div> </li> <li class="level1"><div class="li"> A new setting has been added to enable a control that allows multiple facets to be selected before the page reloads. This is off by default but can be switched on using the multiFacetsSelection setting in facets.ini and other backend-specific configuration files. The setting is controlled on a per-backend basis since some systems may benefit from the option while others may not. See <a href="https://github.com/vufind-org/vufind/pull/3761" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3761" rel="ugc nofollow">pull request #3761</a> for additional details.</div> </li> <li class="level1"><div class="li"> New optional settings in theme.config.php can be used to make specific page elements “sticky” so that they do not scroll off the screen. See <a href="https://github.com/vufind-org/vufind/pull/3226" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3226" rel="ugc nofollow">pull request #3226</a> for details.</div> </li> <li class="level1"><div class="li"> The “Recommend” ContentBlock can be used to embed recommendation modules into search home screens (as long as they can generate output without requiring search results). See <a href="https://github.com/vufind-org/vufind/pull/3675" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3675" rel="ugc nofollow">pull request #3675</a>.</div> </li> <li class="level1"><div class="li"> The “MoreByAuthorSolr” <a href="/wiki/development:plugins:related_records_modules" class="wikilink1" title="development:plugins:related_records_modules" data-wiki-id="development:plugins:related_records_modules">related record module</a> can load additional works created by the author of a record using the Solr index.</div> </li> <li class="level1"><div class="li"> The “InsecureCookie” permission provider can be used to control access to functionality using cookies. Due to its simplicity, it is unsuitable for protecting sensitive content, but it can be helpful for setting custom preferences.</div> </li> <li class="level1"><div class="li"> The “SessionKey” permission provider is a more secure alternative to “InsecureCookie” which uses values stored in the session to track permissions instead of a cookie in the user&#039;s browser.</div> </li> <li class="level1"><div class="li"> The “newsearchitems” Channel Provider can be used to build a channel from recently-indexed Solr records when <a href="/wiki/indexing:tracking_record_changes" class="wikilink1" title="indexing:tracking_record_changes" data-wiki-id="indexing:tracking_record_changes">change tracking</a> is enabled. See <a href="https://github.com/vufind-org/vufind/pull/3821" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3821" rel="ugc nofollow">pull request #3821</a>.</div> </li> <li class="level1"><div class="li"> <abbr title="Cascading Style Sheets">CSS</abbr> configuration in themes is now more flexible; see <a href="https://github.com/vufind-org/vufind/pull/3833" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3833" rel="ugc nofollow">pull request #3833</a> for details.</div> </li> <li class="level1"><div class="li"> Some frequently-called ILS driver methods now have their values cached to improve performance; this behavior can be configured or disabled via the cacheLifeTime setting in the [Catalog] section of config.ini. See <a href="https://github.com/vufind-org/vufind/pull/3983" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3983" rel="ugc nofollow">pull request #3983</a> for details.</div> </li> <li class="level1"><div class="li"> The new admin_theme setting in config.ini can be used to activate a different theme for the admin module (when it is enabled).</div> </li> <li class="level1"><div class="li"> A new <a href="/wiki/development:devtools" class="wikilink1" title="development:devtools" data-wiki-id="development:devtools">development tool</a> has been added for testing permissions.</div> </li> <li class="level1"><div class="li"> The AvailabilityStatusInterface can now carry additional status details to supplement its messages (e.g. hold transit information). See <a href="https://github.com/vufind-org/vufind/pull/3740" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3740" rel="ugc nofollow">pull request #3740</a> for details.</div> </li> <li class="level1"><div class="li"> User-facing email functionality can now be disabled, if desired, using the email_action setting in config.ini.</div> </li> <li class="level1"><div class="li"> Item status loading behavior is now configurable; status requests can be batched or made individually, and status loading can occur on visibility or on page load. Default behavior (batched requests, issued on visibility) is unchanged, but it can be adjusted through the load_batch_wise and load_observable_only settings in config.ini). See <a href="https://github.com/vufind-org/vufind/pull/3748" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3748" rel="ugc nofollow">pull request #3748</a> for details.</div> </li> <li class="level1"><div class="li"> Favorites list can now be sorted by “save date” (the date when items were added to the list), and favorite sorting options can now be customized through the [List_Sorting] section of config.ini.</div> </li> <li class="level1"><div class="li"> The web crawling tool now supports limited caching to improve performance in some circumstances and to allow fast reindexing (e.g. after upgrading Solr).</div> </li> <li class="level1"><div class="li"> It is now possible to store many secret values (passwords, etc.) in external files instead of directly in configurations; this can be useful for containerization, among other things. See <a href="https://github.com/vufind-org/vufind/pull/3860" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3860" rel="ugc nofollow">pull request #3860</a> for details.</div> </li> <li class="level1"><div class="li"> OR facet handling in EBSCO Discovery Service has been improved, and the orFacets setting in EDS.ini is now more effective; however, there are still some significant limitations due to the capabilities of the <abbr title="Application Programming Interface">API</abbr>. See <a href="https://github.com/vufind-org/vufind/pull/3822" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3822" rel="ugc nofollow">pull request #3822</a> for more details.</div> </li> <li class="level1"><div class="li"> A new Javascript event (record-tab-init) has been added to simplify customization of logic related to record tab initialization. This is not yet used by core code (that will be added in release 11.0), but it is available early for use in custom logic. See <a href="https://github.com/vufind-org/vufind/pull/3837" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3837" rel="ugc nofollow">pull request #3837</a> for details.</div> </li> <li class="level1"><div class="li"> The FOLIO ILS driver driver has some new configurable options, including the ability to display holdings records with no items, the ability to restrict pickup location based on item location, the ability to block requests based on the current loan, and improved course reserves filtering.</div> </li> <li class="level1"><div class="li"> The KohaRest ILS driver has some new configurable options, including limiting item displays by type, including suspended holds in queue length calculations, and displaying recalls along with holds.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The sandal5 theme is now the default theme. The bootstrap3, bootprint3 and sandal themes have been deprecated and will be removed in release 11.0. Please update your local custom themes to extend bootstrap5 or sandal5 before the next upgrade. See <a href="/wiki/development:architecture:user_interface:bootstrap5" class="wikilink1" title="development:architecture:user_interface:bootstrap5" data-wiki-id="development:architecture:user_interface:bootstrap5">Themes Based on Bootstrap5</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The minimum Node.js version for building <abbr title="Cascading Style Sheets">CSS</abbr> has been raised to 16 (though even this version is old enough to no longer be officially supported – using supported versions of components is strongly recommended!).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some internals of check_item_statuses.js have been changed to support new settings; if you have customized this file, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/3748" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3748" rel="ugc nofollow">pull request #3748</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Internal storage of facets and limiters has been revised in \VuFindSearch\Backend\EDS\SearchRequestModel to better support Boolean facet operators. In the unlikely situation that you have customized this code, changes may be needed; see <a href="https://github.com/vufind-org/vufind/pull/3822" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3822" rel="ugc nofollow">pull request #3822</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The format of the array returned by \VuFind\View\Helper\Root\ResourceContainer::getCss() has changed. See <a href="https://github.com/vufind-org/vufind/pull/3833" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3833" rel="ugc nofollow">pull request #3833</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Assignment of schema.org record types has been improved; if you have customized a record driver&#039;s core.phtml file, you should update it to use the new mechanism for forward-compatibility with the next major release, and to avoid redundant data. See <a href="https://github.com/vufind-org/vufind/pull/3849" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3849" rel="ugc nofollow">pull request #3849</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> FOLIO users who rely on course reserves indexing will need to add the <code>course-reserves-storage.terms.collection.get</code> permission to their FOLIO service account for compatibility with the latest code. See <a href="https://github.com/vufind-org/vufind/pull/3859" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3859" rel="ugc nofollow">pull request #3859</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> FOLIO users should add <code>circulation.requests.allowed-service-points.get</code> permission to their FOLIO service account to improve the efficiency and accuracy of request-placing logic. It is also strongly recommended that users review the <code>fallback_request_type</code> setting in Folio.ini and uncomment all request types that users should be allowed to place. See <a href="https://github.com/vufind-org/vufind/pull/4003" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4003" rel="ugc nofollow">pull request #4003</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> FOLIO users should add <code>circulation-storage.request-preferences.collection.get</code> and <code>addresstypes.collection.get</code> permissions to their service accounts to enable support for delivery fulfillment requests. See <a href="https://github.com/vufind-org/vufind/pull/3930" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3930" rel="ugc nofollow">pull request #3930</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Types in the public interface of \VuFindSearch\Command\TermsCommand have been adjusted to fix a bug (lack of null support); in the very unlikely event that you extend this class, your subclass may need to be adjusted as well. See <a href="https://github.com/vufind-org/vufind/pull/3891" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3891" rel="ugc nofollow">pull request #3891</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\ILS\Logic\AvailabilityStatusInterface has had several new methods added (setVisibilityInHoldings(), plus those found in <a href="https://github.com/vufind-org/vufind/pull/3740" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3740" rel="ugc nofollow">pull request #3740</a>); in the unlikely situation that you have built a custom implementation of this interface, the new methods will need to be implemented.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> For improved PHP 8 compatibility, a few return types have been adjusted to eliminate ReturnTypeWillChange annotations. You may be impacted if you have a custom implementation of \VuFindSearch\Response\AbstractRecordCollection, \VuFind\Session\AbstractBase, or \VuFind\Db\Service\SessionServiceInterface. This is most likely to impact you if you have customized code related to session garbage collection. See <a href="https://github.com/vufind-org/vufind/pull/3835" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3835" rel="ugc nofollow">pull request #3835</a> for full details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> KohaRest users with local custom driver subclasses should be aware that the signature and return format of the internal VuFind\ILS\Driver\KohaRest::getItemStatusesForBiblio() method have changed. If they use or override this method, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/3839" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3839" rel="ugc nofollow">pull request #3839</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The “sort_year asc” translation string has been renamed to “sort_year_asc” for consistency; if you have customized this string, you will need to adjust the key in your custom language file. The legacy string is still supported as an alias, so existing references to it will continue working.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature for \VuFind\Auth\EmailAuthenticator has changed to use \VuFind\Net\UserIpReader instead of \Laminas\Http\PhpEnvironment\RemoteAddress for more accurate user IP detection. In the unlikely event that you have extended this service locally, minor adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/4049" class="urlextern" title="https://github.com/vufind-org/vufind/pull/4049" rel="ugc nofollow">pull request #4049</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The local_theme_example theme has been rebuilt on bootstrap5 instead of bootstrap3, so the <a href="/wiki/development:code_generators#creating_themes" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">theme generator</a> will now create modern themes. If you have a theme based on an older version of local_theme_example (e.g. created with the theme generator in an earlier release), you should modernize it before the bootstrap3 theme is removed. See <a href="https://github.com/vufind-org/vufind/pull/3912" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3912" rel="ugc nofollow">pull request #3912</a> for details of the changes.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some non-standard EDS record driver methods/behaviors have been normalized; the getItemsSubjects() method has been replaced with getAllSubjectHeadingsFlattened(), and the getCleanDOI() method has been fixed to ensure that it returns a DOI and not an <abbr title="HyperText Markup Language">HTML</abbr> snippet. If you relied on this non-standard code in local customizations, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/3954" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3954" rel="ugc nofollow">pull request #3954</a> for details.</div> </li> <li class="level1"><div class="li"> A minor order of operations adjustment in the Solr query builder allows DismaxMunge transformations to be applied before standard query normalization for greater flexibility; see <a href="https://github.com/vufind-org/vufind/pull/3932" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3932" rel="ugc nofollow">pull request #3932</a> for details.</div> </li> <li class="level1"><div class="li"> The \VuFind\Role\PermissionProvider\PluginManager now has its own factory and can be accessed as a standard top-level service; the \VuFind\Role\DynamicRoleProviderFactory has been adjusted accordingly. See <a href="https://github.com/vufind-org/vufind/pull/3882" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3882" rel="ugc nofollow">pull request #3882</a> for details.</div> </li> <li class="level1"><div class="li"> The default display of authors in EBSCO Discovery Service search results has been adjusted, but the legacy behavior can be restored through the [AuthorDisplay] section of EDS.ini. See <a href="https://github.com/vufind-org/vufind/pull/3841" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3841" rel="ugc nofollow">pull request #3841</a> for details.</div> </li> <li class="level1"><div class="li"> The \VuFind\View\Helper\Root\ResourceContainer::dynamicallyParsed() method has been removed; it should have been deprecated in an earlier release and was no longer used.</div> </li> <li class="level1"><div class="li"> The orFacets setting under [Advanced_Facet_Settings] has been removed from EDS.ini, as it had no effect there.</div> </li> </ul> <p> <a href="/wiki/changelog:release-10.1" class="wikilink1" title="changelog:release-10.1" data-wiki-id="changelog:release-10.1">Press Release</a> </p> <p> <a href="/wiki/videos:vufind_10.1_-_what_s_new_what_s_changed" class="wikilink1" title="videos:vufind_10.1_-_what_s_new_what_s_changed" data-wiki-id="videos:vufind_10.1_-_what_s_new_what_s_changed">Video Summary</a> </p> </div> <h2 class="sectionedit5" id="release_1001_-_10_14_2024">Release 10.0.1 - 10/14/2024</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / translation improvement release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\ILS\Logic\AvailabilityStatusInterface has had a getPriority() method added to address an oversight; if you have a custom class implementing this interface, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/3869" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3869" rel="ugc nofollow">pull request #3869</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Search\Memory::getSearchById() has been changed from protected to public in support of a bug fix. In the unlikely situation that you have a subclass customizing this method, adjustments will be needed. See <a href="https://github.com/vufind-org/vufind/pull/3557" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3557" rel="ugc nofollow">pull request #3557</a>.</div> </li> </ul> </div> <h2 class="sectionedit6" id="release_100_-_6_24_2024">Release 10.0 - 6/24/2024</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> New bootstrap5 and sandal5 themes have been added, upgrading from Bootstrap3 to Bootstrap5; these themes are currently considered BETA until release 10.1. See <a href="/wiki/development:architecture:user_interface:bootstrap5" class="wikilink1" title="development:architecture:user_interface:bootstrap5" data-wiki-id="development:architecture:user_interface:bootstrap5">Themes Based on Bootstrap5</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2929" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2929" rel="ugc nofollow">pull request #2929</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:authentication#persistent_login" class="wikilink1" title="configuration:authentication" data-wiki-id="configuration:authentication">Persistent logins</a> (“remember me” functionality) can now be optionally enabled.</div> </li> <li class="level1"><div class="li"> Flexible rate limiting support is now available to prevent abuse/overuse of the system; see <a href="https://github.com/vufind-org/vufind/pull/3637" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3637" rel="ugc nofollow">pull request #3637</a> for details.</div> </li> <li class="level1"><div class="li"> An optional “explain” feature can now be enabled in Solr-based search backends to visually explain relevance ranking of individual search results; see <a href="https://github.com/vufind-org/vufind/pull/3069" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3069" rel="ugc nofollow">pull request #3069</a> for details.</div> </li> <li class="level1"><div class="li"> On-screen virtual keyboards can now be enabled through searchbox.ini if needed; see <a href="https://github.com/vufind-org/vufind/pull/2952" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2952" rel="ugc nofollow">pull request #2952</a> for more details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2991" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2991" rel="ugc nofollow">pull request #2991</a> for more details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3142" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3142" rel="ugc nofollow">pull request #3142</a> for details.</div> </li> <li class="level1"><div class="li"> Translation strings can now optionally use the ICU MessageFormatter syntax to allow more sophisticated conditional translation (e.g. to handle plural forms); see <a href="https://github.com/vufind-org/vufind/pull/3286" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3286" rel="ugc nofollow">pull request #3286</a> for details.</div> </li> <li class="level1"><div class="li"> The content, order and behavior of the user account menu can now be customized using the new AccountMenu.yaml configuration file. See <a href="https://github.com/vufind-org/vufind/pull/3415" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3415" rel="ugc nofollow">pull request #3415</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3160" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3160" rel="ugc nofollow">pull request #3160</a> for details.</div> </li> <li class="level1"><div class="li"> The new ConsortialVuFind recommendation module can be enabled to search a third-party VuFind® instance using the public <abbr title="Application Programming Interface">API</abbr> in order to display additional results. See <a href="https://github.com/vufind-org/vufind/pull/3270" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3270" rel="ugc nofollow">pull request #3270</a> for details.</div> </li> <li class="level1"><div class="li"> Pagination controls can now optionally be added at the top of search result screens via the new top_paginator setting. See <a href="https://github.com/vufind-org/vufind/pull/3034" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3034" rel="ugc nofollow">pull request #3034</a> for details.</div> </li> <li class="level1"><div class="li"> There is now an option to use Solr&#039;s “direct” spellchecker instead of the index-based spellchecker; see the dictionaries setting in the [Spelling] section of config.ini (and <a href="https://github.com/vufind-org/vufind/pull/3547" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3547" rel="ugc nofollow">pull request #3547</a>) for more details.</div> </li> <li class="level1"><div class="li"> Table of contents loading now supports the Obalkyknih.cz service.</div> </li> <li class="level1"><div class="li"> Bound-with records can now be displayed in holdings using data retrieved from the ILS (where supported – currently only in FOLIO).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3237" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3237" rel="ugc nofollow">pull request #3237</a> for details.</div> </li> <li class="level1"><div class="li"> The new <a href="/wiki/configuration:ils:composed_driver" class="wikilink1" title="configuration:ils:composed_driver" data-wiki-id="configuration:ils:composed_driver">Composed ILS driver</a> can be used to pull together functionality from multiple drivers to represent a single system. See <a href="https://github.com/vufind-org/vufind/pull/3112" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3112" rel="ugc nofollow">pull request #3112</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3269" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3269" rel="ugc nofollow">pull request #3269</a> for details.</div> </li> <li class="level1"><div class="li"> When using EZProxy, you can now control which URLs get prefixed and which do not via a web service like <a href="https://github.com/lehigh-university-libraries/ezproxy-url-checker" class="urlextern" title="https://github.com/lehigh-university-libraries/ezproxy-url-checker" rel="ugc nofollow">ezproxy-url-checker</a>; see <a href="https://github.com/vufind-org/vufind/pull/3199" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3199" rel="ugc nofollow">pull request #3199</a> for details.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">RecordDataFormatter</a> now supports a dataMethodParams configuration option which can be used to pass arguments to the dataMethod. See <a href="https://github.com/vufind-org/vufind/pull/3189" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3189" rel="ugc nofollow">pull request #3189</a>.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">RecordDataFormatter</a> can now be configured via RecordDataFormatter.ini, allowing customization of record views without code changes. See <a href="https://github.com/vufind-org/vufind/pull/3193" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3193" rel="ugc nofollow">pull request #3193</a>.</div> </li> <li class="level1"><div class="li"> The Primo module now supports display of citation/cited-by lists for eligible records.</div> </li> <li class="level1"><div class="li"> There is now a contentsecuritypolicy.ini section for enabling NEL (Network Error Logging) headers. See <a href="https://github.com/vufind-org/vufind/pull/3593" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3593" rel="ugc nofollow">pull request #3593</a> for details.</div> </li> <li class="level1"><div class="li"> Deep searching within nested collections can now be enabled with some extra indexing and the new search_container_id_field setting. See the <a href="/wiki/indexing:hierarchies_and_collections" class="wikilink1" title="indexing:hierarchies_and_collections" data-wiki-id="indexing:hierarchies_and_collections">Hierarchies and Collections</a> page and <a href="https://github.com/vufind-org/vufind/pull/3182" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3182" rel="ugc nofollow">pull request #3182</a> for more details.</div> </li> <li class="level1"><div class="li"> It is now possible to create an aliases.ini file within a language directory to set up translation aliases; see <a href="https://github.com/vufind-org/vufind/pull/3249" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3249" rel="ugc nofollow">pull request #3249</a> for details.</div> </li> <li class="level1"><div class="li"> Language names are now internationalized by default (in facets and record displays); see <a href="https://github.com/vufind-org/vufind/pull/3200" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3200" rel="ugc nofollow">pull request #3200</a> for details.</div> </li> <li class="level1"><div class="li"> Embedded schema.org metadata can now be disabled if not wanted (see the includeSchemaOrgMetadata setting in config.ini, and <a href="https://github.com/vufind-org/vufind/pull/3634" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3634" rel="ugc nofollow">pull request #3634</a>).</div> </li> <li class="level1"><div class="li"> Māori language support has been added to the user interface.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="/wiki/development:architecture:solr_index_schema#vufind_100" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_100" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Themes are currently evolving due to the need to upgrade outdated technologies; please begin to plan accordingly. Here is the timeline:</div> <ul> <li class="level2"><div class="li"> In this release, the default theme has been changed from bootprint3 to sandal; new bootstrap5 and sandal5 beta themes have been added, so users can begin to migrate their local themes from bootstrap3 to bootstrap5.</div> </li> <li class="level2"><div class="li"> In release 10.1, the bootstrap5 and sandal5 themes will be promoted out of “beta” status, and sandal5 will become the new default. The bootstrap3, bootprint3 and sandal themes will be deprecated.</div> </li> <li class="level2"><div class="li"> In release 11.0, the bootstrap3 family of themes will be removed.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2929" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2929" rel="ugc nofollow">pull request #2929</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> ILS availability status handling has been refactored to the \VuFind\ILS\Logic\AvailabilityStatus and \VuFind\ILS\Logic\AvailabilityStatusManager classes. This has led to significant changes to \VuFind\AjaxHandler\GetItemStatuses (new constructor signature, several revised protected methods) and to availability-related templates (in particular, the &#039;availability&#039; key returned in holdings arrays is now an AvailabilityStatus object instead of a boolean value). See <a href="https://github.com/vufind-org/vufind/pull/3585" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3585" rel="ugc nofollow">pull request #3585</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3537" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3537" rel="ugc nofollow">pull request #3537</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3591" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3591" rel="ugc nofollow">pull request #3591</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3358" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3358" rel="ugc nofollow">pull request #3358</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Tags class has been deprecated and replaced by \VuFind\Tags\TagsService for better consistency with other similarly-named services. See <a href="https://github.com/vufind-org/vufind/pull/3791" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3791" rel="ugc nofollow">pull request #3791</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3064" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3064" rel="ugc nofollow">pull request #3064</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3286" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3286" rel="ugc nofollow">pull request #3286</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3239" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3239" rel="ugc nofollow">pull request #3239</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3489" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3489" rel="ugc nofollow">pull request #3489</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The SearchTabs view helper has been significantly simplified and refactored; local customizations may need to be adjusted to match. See <a href="https://github.com/vufind-org/vufind/pull/3309" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3309" rel="ugc nofollow">pull request #3309</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3255" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3255" rel="ugc nofollow">pull request #3255</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2933" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2933" rel="ugc nofollow">pull request #2933</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2941" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2941" rel="ugc nofollow">pull request #2941</a> and adjust it accordingly.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Checking for library card support has been refactored to the \VuFind\Config\AccountCapabilities class, requiring changes to the constructor and internals of that class as well as the constructor of the \VuFind\Db\Row\User class. See <a href="https://github.com/vufind-org/vufind/pull/3629" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3629" rel="ugc nofollow">pull request #3629</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Auth\Manager has had some minor backward-breaking changes that may require updates to local subclasses or custom code.</div> <ul> <li class="level2"><div class="li"> The constructor signature has changed to accommodate the new LoginTokenManager used by <a href="/wiki/configuration:authentication#persistent_login" class="wikilink1" title="configuration:authentication" data-wiki-id="configuration:authentication">persistent logins</a>.</div> </li> <li class="level2"><div class="li"> The protected updateUser() method now has a required second argument; see <a href="https://github.com/vufind-org/vufind/pull/3432" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3432" rel="ugc nofollow">pull request #3432</a>.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signatures of the CartController and MyResearchController have been adjusted to reduce direct dependency on the ServiceLocator. Custom subclasses may require adjustments. See <a href="https://github.com/vufind-org/vufind/pull/3239" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3239" rel="ugc nofollow">pull request #3239</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> All code touching the database has been refactored and reorganized for greater clarity and to simplify future database library upgrades.</div> <ul> <li class="level2"><div class="li"> All \VuFind\RecordDriver\AbstractBase methods that access database tables have been deprecated in favor of database service or Record view helper access.</div> </li> <li class="level2"><div class="li"> The \VuFind\Db\Entity namespace has been introduced, containing interfaces representing all data retrieved from the database. Typehints referring to \VuFind\Db\Row classes have been updated to use the entity interfaces instead, to make code more platform-agnostic. For example, many constructors and methods with \VuFind\Db\Row\User typehints have been updated to use the new \VuFind\Db\Entity\UserEntityInterface instead. See <a href="https://github.com/vufind-org/vufind/pull/3478" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3478" rel="ugc nofollow">pull request #3478</a>, <a href="https://github.com/vufind-org/vufind/pull/3500" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3500" rel="ugc nofollow">pull request #3500</a> and <a href="https://github.com/vufind-org/vufind/pull/3605" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3605" rel="ugc nofollow">pull request #3605</a> for details.</div> </li> <li class="level2"><div class="li"> The constructor signature of \VuFind\Auth\Manager has been revised to use generic interfaces instead of Laminas-specific dependencies; see <a href="https://github.com/vufind-org/vufind/pull/3636" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3636" rel="ugc nofollow">pull request #3636</a> for details.</div> </li> <li class="level2"><div class="li"> All authentication plugins have been updated to use entity interfaces (see <a href="https://github.com/vufind-org/vufind/pull/3625" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3625" rel="ugc nofollow">pull request #3625</a>).</div> </li> <li class="level2"><div class="li"> The constructor signatures of \VuFind\ChannelProvider\ListItems and \VuFind\Search\Favorites\Results have changed. See <a href="https://github.com/vufind-org/vufind/pull/3701" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3701" rel="ugc nofollow">pull request #3701</a> for details.</div> </li> <li class="level2"><div class="li"> More list and favorite-related logic has been moved into \VuFind\Favorites\FavoritesService (leading to constructor changes and added/renamed methods), and \VuFind\Controller\Plugin\Favorites has been deprecated. This work also led to the removal of the \VuFind\Db\Row\UserList::save() and updateFromRequest() methods, as they could not be maintained in a forward-compatible way. The \VuFind\Db\Row\User and \VuFind\View\Helper\Root\UserList constructors were also updated. See <a href="https://github.com/vufind-org/vufind/pull/3769" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3769" rel="ugc nofollow">pull request #3769</a> for details.</div> </li> <li class="level2"><div class="li"> To centralize handling of tag case-sensitivity, most tag database calls should be routed through \VuFind\Tags\TagsService for simplicity and consistency. This required significant refactoring, including constructor changes to \VuFind\AjaxHandler\GetRecordTags, \VuFind\Autocomplete\Tag, \VuFind\ChannelProvider\ListItems, \VuFind\Search\Favorites\Results and \VuFind\Search\Tags\Results. See <a href="https://github.com/vufind-org/vufind/pull/3797" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3797" rel="ugc nofollow">pull request #3797</a> for details.</div> </li> <li class="level2"><div class="li"> Refactoring related to the search table led to changes to the constructors of \VuFind\Search\SearchNormalizer and \VuFindConsole\Command\ScheduledSearch\NotifyCommand; see <a href="https://github.com/vufind-org/vufind/pull/3775" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3775" rel="ugc nofollow">pull request #3775</a>.</div> </li> <li class="level2"><div class="li"> Many classes with dependencies on \VuFind\Db\Row and \VuFind\Db\Table classes have been revised to use \VuFind\Db\Entity and \VuFind\Db\Service interfaces instead.</div> </li> <li class="level2"><div class="li"> Many classes using \VuFind\Db\Table\DbTableAwareInterface/Trait now use \VuFind\Db\Service\DbServiceAwareInterface/Trait instead.</div> </li> </ul> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <a href="/wiki/configuration:record_versions" class="wikilink1" title="configuration:record_versions" data-wiki-id="configuration:record_versions">record versions</a> functionality has been simplified for consistency and maintainability. If you have customized any functionality related to versions, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/3295" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3295" rel="ugc nofollow">pull request #3295</a> and <a href="https://github.com/vufind-org/vufind/pull/3300" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3300" rel="ugc nofollow">#3300</a> for full details; significant highlights:</div> <ul> <li class="level2"><div class="li"> The \VuFind\Record\VersionsHelper and \VuFindSearch\Command\WorkExpressionsCommand classes are no longer needed and have been removed.</div> </li> <li class="level2"><div class="li"> The \VuFindSearch\Feature\WorkExpressionsInterface and its implementation in \VuFindSearch\Backend\Solr\Backend are no longer needed and have been removed.</div> </li> <li class="level2"><div class="li"> Some methods/method signatures have changed in \VuFindSearch\Query\WorkKeysQuery.</div> </li> <li class="level2"><div class="li"> Links to versions of records that are not found in the Solr index (i.e. legacy links to deleted records) will no longer work.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3343" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3343" rel="ugc nofollow">pull request #3343</a> and <a href="https://github.com/vufind-org/vufind/pull/3390" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3390" rel="ugc nofollow">pull request #3390</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3292" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3292" rel="ugc nofollow">pull request #3292</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3292" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3292" rel="ugc nofollow">pull request #3292</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3182" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3182" rel="ugc nofollow">pull request #3182</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Controller\AbstractBase::getUser() now returns null instead of false when no user is logged in. See <a href="https://github.com/vufind-org/vufind/pull/3768" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3768" rel="ugc nofollow">pull request #3768</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of \VuFind\Exception\AuthEmailNotVerified has changed to include the UserEntityInterface object representing the current user; this guarantees the inclusion of user data when this exception is thrown, enabling catch blocks to make appropriate assumptions. See <a href="https://github.com/vufind-org/vufind/pull/3700" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3700" rel="ugc nofollow">pull request #3700</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3277" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3277" rel="ugc nofollow">pull request #3277</a> for full details. Highlights:</div> <ul> <li class="level2"><div class="li"> jsTree is no longer used to render hierarchies and has been removed from the codebase.</div> </li> <li class="level2"><div class="li"> The JSTree TreeRenderer class has been replaced by a new HTMLTree class.</div> </li> <li class="level2"><div class="li"> XML hierarchy file support has been removed; all tree data is now stored and processed using JSON.</div> </li> <li class="level2"><div class="li"> Tree-related styles have been completely rewritten.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3046" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3046" rel="ugc nofollow">pull request #3046</a>. Updates include constructor signature changes to \VuFind\AjaxHandler\GetSideFacets and \VuFind\Recommend\FavoriteFacets.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature of \VuFindSearch\Backend\Solr\QueryBuilderInterface::build() has been expanded; custom query builder classes may require adjustment. See <a href="https://github.com/vufind-org/vufind/pull/3590" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3590" rel="ugc nofollow">pull request #3590</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3590" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3590" rel="ugc nofollow">pull request #3590</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature for \VuFind\View\Helper\Root\ProxyUrl has changed; local custom subclasses may require adjustments. See <a href="https://github.com/vufind-org/vufind/pull/3199" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3199" rel="ugc nofollow">pull request #3199</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3267" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3267" rel="ugc nofollow">pull request #3267</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3404" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3404" rel="ugc nofollow">pull request #3404</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature and input of \VuFind\ILS\Driver\Folio::formatHoldingItem have changed slightly; see <a href="https://github.com/vufind-org/vufind/pull/3094" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3094" rel="ugc nofollow">pull request #3094</a> and make adjustments if you locally extend or utilize this method.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Bootstrapper::initLocaleAndTimeZone() method has been renamed to initTimeZone(), since locale initialization is no longer necessary. See <a href="https://github.com/vufind-org/vufind/pull/3526" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3526" rel="ugc nofollow">pull request #3526</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3369" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3369" rel="ugc nofollow">pull request #3369</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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&#039;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 <a href="https://github.com/vufind-org/vufind/pull/3392" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3392" rel="ugc nofollow">pull request #3392</a>.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <a href="https://github.com/vufind-org/vufind-browse-handler" class="urlextern" title="https://github.com/vufind-org/vufind-browse-handler" rel="ugc nofollow">alphabetical browse handler</a> 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</div> <ul> <li class="level2"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind-browse-handler/pull/48" class="urlextern" title="https://github.com/vufind-org/vufind-browse-handler/pull/48" rel="ugc nofollow">pull request vufind-browse-handler#48</a> for details.</div> </li> <li class="level2"><div class="li"> The index-alphabetic-browse scripts have been updated to use renamed options and classes (see <a href="https://github.com/vufind-org/vufind/pull/3253" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3253" rel="ugc nofollow">pull request #3253</a> for details).</div> </li> <li class="level2"><div class="li"> Some deprecated methods (org.vufind.solr.handler.BibDB::matchingIDs, org.vufind.solr.handler::getIds and org.vufind.solr.handler::setIds) have been removed; see <a href="https://github.com/vufind-org/vufind-browse-handler/pull/49" class="urlextern" title="https://github.com/vufind-org/vufind-browse-handler/pull/49" rel="ugc nofollow">pull request vufind-browse-handler#49</a>.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3452" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3452" rel="ugc nofollow">pull request #3452</a> for necessary adjustments.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Javascript code no longer uses DOM CustomEvents, and event names have been revised. See <a href="https://github.com/vufind-org/vufind/pull/3361" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3361" rel="ugc nofollow">pull request #3361</a> if you have custom code that interacts with internal events; it will need to be revised based on these changes.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The initResultScripts() function in common.js has been replaced by a new results-init event; see <a href="https://github.com/vufind-org/vufind/pull/3584" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3584" rel="ugc nofollow">pull request #3584</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The .offcanvas <abbr title="Cascading Style Sheets">CSS</abbr> 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 <a href="https://github.com/vufind-org/vufind/pull/3484" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3484" rel="ugc nofollow">pull request #3484</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of \VuFind\Controller\OAuth2Controller has been adjusted to remove the \LmcRbacMvc\Service\AuthorizationService object, which was not used or needed.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The keyboardShortcuts() Javascript function in common.js has been removed; it no longer worked correctly and could have interfered with accessibility. Similar functionality may be reimplemented in future if there is demand. See <a href="https://github.com/vufind-org/vufind/pull/3664" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3664" rel="ugc nofollow">pull request #3664</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Code deprecated in release 9.x has now been removed:</div> <ul> <li class="level2"><div class="li"> \VuFind\Auth\AbstractBase::getCannedPasswordPolicyHint() - use getCannedPolicyHint() instead.</div> </li> <li class="level2"><div class="li"> \VuFind\Recommend\SearchObject - use AbstractSearchObject instead.</div> </li> <li class="level2"><div class="li"> \VuFind\Search\Solr\InjectHighlightingListener::onSearchPost() - see <a href="https://github.com/vufind-org/vufind/pull/3610" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3610" rel="ugc nofollow">pull request #3610</a>.</div> </li> <li class="level2"><div class="li"> \VuFindSearch\Backend\EDS\Backend::debugPrint() and \VuFindSearch\Backend\EDS\Base::debugPrint() - use debug() instead.</div> </li> </ul> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The SolrMarc UpdateDateTracker.java code has been updated to use try-with-resources instead of finalize for more consistent resource cleanup. This may cause different performance characteristics when indexing records with change tracking enabled. See <a href="https://github.com/vufind-org/vufind/pull/3647" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3647" rel="ugc nofollow">pull request #3647</a> for related discussion.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3417" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3417" rel="ugc nofollow">pull request #3417</a> for details.</div> </li> <li class="level1"><div class="li"> Subject headings from MARC records will now be displayed in the order they are included in the records, rather than numerical order based on tag number. If you wish to restore the previous behavior, you can set marcSubjectHeadingsSort to numerical in config.ini.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3497" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3497" rel="ugc nofollow">pull request #3497</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2878" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2878" rel="ugc nofollow">pull request #2878</a> for details.</div> </li> <li class="level1"><div class="li"> The “Favorites” controller plug-in now depends on \VuFind\Favorites\FavoritesService, and \VuFind\Favorites\FavoritesService::getListObject is now public, to reduce redundancy. See <a href="https://github.com/vufind-org/vufind/pull/2887" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2887" rel="ugc nofollow">pull request #2887</a> for details.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The “tag” help screen was removed, because it was no longer linked anywhere, and the content was out of date. See <a href="https://github.com/vufind-org/vufind/pull/3174" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3174" rel="ugc nofollow">pull request #3174</a>.</div> </li> </ul> <p> <a href="/wiki/changelog:release-10.0" class="wikilink1" title="changelog:release-10.0" data-wiki-id="changelog:release-10.0">Press Release</a> </p> <p> <a href="/wiki/videos:vufind_10.0_-_what_s_new_what_s_changed" class="wikilink1" title="videos:vufind_10.0_-_what_s_new_what_s_changed" data-wiki-id="videos:vufind_10.0_-_what_s_new_what_s_changed">Video Summary</a> </p> </div> <h2 class="sectionedit7" id="release_912_-_6_17_2024">Release 9.1.2 - 6/17/2024</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3513" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3513" rel="ugc nofollow">pull request #3513</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3614" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3614" rel="ugc nofollow">#3614</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3465" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3465" rel="ugc nofollow">pull request #3465</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3476" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3476" rel="ugc nofollow">pull request #3476</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Channels-related Javascript has been significantly revised to address bugs; if you have customized this, adjustments will be needed. See <a href="https://github.com/vufind-org/vufind/pull/3662" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3662" rel="ugc nofollow">pull request #3662</a> for details.</div> </li> </ul> </div> <h2 class="sectionedit8" id="release_911_-_2_12_2024">Release 9.1.1 - 2/12/2024</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / translation improvement release.</div> </li> <li class="level1"><div class="li"> Adds support for FOLIO&#039;s new RTR authentication mechanism (disabled by default until the feature is more widely available; see the legacy_authentication setting in Folio.ini)</div> </li> <li class="level1"><div class="li"> Includes the addition of Mongolian as a new interface language.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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&#039;s history, so removing it seemed like the most appropriate solution. See <a href="https://github.com/vufind-org/vufind/pull/3274" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3274" rel="ugc nofollow">pull request #3274</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3337" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3337" rel="ugc nofollow">pull request #3337</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3385" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3385" rel="ugc nofollow">pull request #3385</a> for details.</div> </li> </ul> </div> <h2 class="sectionedit9" id="release_91_-_10_30_2023">Release 9.1 - 10/30/2023</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> The EBSCO Publication Finder is now supported as a search backend (requires a valid EBSCO subscription).</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:blender" class="wikilink1" title="configuration:blender" data-wiki-id="configuration:blender">Blended Search</a> now supports advanced search.</div> </li> <li class="level1"><div class="li"> Added support for the <a href="/wiki/development:plugins:ils_drivers#geturlsforrecord" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">getUrlsForRecord</a> ILS driver method (currently implemented for KohaRest and the Demo driver).</div> </li> <li class="level1"><div class="li"> Users can now view all of their proxy relationships through the Profile page (if supported by the ILS driver). See <a href="https://github.com/vufind-org/vufind/pull/3006" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3006" rel="ugc nofollow">pull request #3006</a>.</div> </li> <li class="level1"><div class="li"> Added support for the <a href="/wiki/development:plugins:ils_drivers#purgetransactionhistory" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">purgeTransactionHistory</a> ILS driver method (currently implemented for KohaRest, SierraRest and the Demo driver).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2995" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2995" rel="ugc nofollow">pull request #2995</a> for details.</div> </li> <li class="level1"><div class="li"> The util/deletes command line script now supports an –id-prefix option to prefix the IDs of records being deleted.</div> </li> <li class="level1"><div class="li"> Combined search has been enhanced with some new configuration settings to allow the optional inclusion of advanced search links in combined search results (see <a href="https://github.com/vufind-org/vufind/pull/3099" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3099" rel="ugc nofollow">pull request #3099</a>), to better retain the order of sections on small screens (see <a href="https://github.com/vufind-org/vufind/pull/3077" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3077" rel="ugc nofollow">pull request #3077</a>), to display side recommendations (see <a href="https://github.com/vufind-org/vufind/pull/3135" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3135" rel="ugc nofollow">pull request #3135</a>) and to display a “jump menu” at the top of the page (see <a href="https://github.com/vufind-org/vufind/pull/3083" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3083" rel="ugc nofollow">pull request #3083</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2860" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2860" rel="ugc nofollow">pull request #2860</a> for details.</div> </li> <li class="level1"><div class="li"> It is now possible to configure custom Solr highlighting parameters. See <a href="https://github.com/vufind-org/vufind/pull/2927" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2927" rel="ugc nofollow">pull request #2927</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2866" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2866" rel="ugc nofollow">pull request #2866</a> for details.</div> </li> <li class="level1"><div class="li"> When records are displayed based on using the record cache in “fallback” mode, a warning message is now displayed. See <a href="https://github.com/vufind-org/vufind/pull/2886" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2886" rel="ugc nofollow">pull request #2886</a> for details.</div> </li> <li class="level1"><div class="li"> Turning on debug mode in config.ini now displays ALL messages, not just debug-level messages, to assist with troubleshooting of errors.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2659" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2659" rel="ugc nofollow">pull request #2659</a> for details).</div> </li> <li class="level1"><div class="li"> It is now possible to add a DirLocations.ini file to the root of a <a href="/wiki/configuration:local_settings_directory" class="wikilink1" title="configuration:local_settings_directory" data-wiki-id="configuration:local_settings_directory">local settings directory</a> in order to customize some of its behavior (adjusting path to configuration files, inheriting from parent directories). See <a href="https://github.com/vufind-org/vufind/pull/2947" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2947" rel="ugc nofollow">pull request #2947</a> for details.</div> </li> <li class="level1"><div class="li"> When <a href="/wiki/configuration:combining_search_types#tabbed_search_boxes" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">search tabs</a> 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 <a href="https://github.com/vufind-org/vufind/pull/2908" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2908" rel="ugc nofollow">pull request #2908</a>.</div> </li> <li class="level1"><div class="li"> A special “debug” language code is now supported to reveal raw language strings in the user interface for troubleshooting and development purposes. See <a href="/wiki/development:architecture:localization#troubleshooting_language_strings" class="wikilink1" title="development:architecture:localization" data-wiki-id="development:architecture:localization">Troubleshooting Language Strings</a> and <a href="https://github.com/vufind-org/vufind/pull/3015" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3015" rel="ugc nofollow">pull request #3015</a> for more details.</div> </li> <li class="level1"><div class="li"> It is now optionally possible to include usernames in system-generated logs for diagnostic purposes (off by default – see <a href="https://github.com/vufind-org/vufind/pull/3156" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3156" rel="ugc nofollow">pull request #3156</a>).</div> </li> <li class="level1"><div class="li"> Sierra users can now configure mappings for patron block codes in SierraRest.ini (see <a href="https://github.com/vufind-org/vufind/pull/2856" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2856" rel="ugc nofollow">pull request #2856</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3101" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3101" rel="ugc nofollow">pull request #3101</a> for details. A similar fix for Alma has been applied in <a href="https://github.com/vufind-org/vufind/pull/3102" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3102" rel="ugc nofollow">pull request #3102</a>, 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.</div> </li> <li class="level1"><div class="li"> When indexing course reserves, the FOLIO driver will now exclude suppressed records by default (but this behavior can be changed via Folio.ini). See <a href="https://github.com/vufind-org/vufind/pull/2935" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2935" rel="ugc nofollow">pull request #2935</a> for details.</div> </li> <li class="level1"><div class="li"> The new fallback_languages setting can be used to prioritize where translations are found when they are missing from the currently selected language. See <a href="https://github.com/vufind-org/vufind/pull/2891" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2891" rel="ugc nofollow">pull request #2891</a> for details.</div> </li> <li class="level1"><div class="li"> Theme configuration now optionally supports multiple favicons (to allow for more than one size); see <a href="https://github.com/vufind-org/vufind/pull/2862" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2862" rel="ugc nofollow">pull request #2862</a>.</div> </li> <li class="level1"><div class="li"> The installation process now supports selection of a custom Solr port (see <a href="https://github.com/vufind-org/vufind/pull/2962" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2962" rel="ugc nofollow">pull request #2962</a>).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The new “LibGuidesProfile” recommendation module can display librarian information from LibGuides; see <a href="https://github.com/vufind-org/vufind/pull/2977" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2977" rel="ugc nofollow">pull request #2977</a>.</div> </li> <li class="level1"><div class="li"> Updated SolrMarc indexer (version 3.5).</div> </li> <li class="level1"><div class="li"> New interface translation: Northern Sámi.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Solr has been upgraded to release 9.3.0. A full reindex will be necessary.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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-<abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters, they will need to have their formats converted – e.g. with <code>iconv -f LATIN1 -t UTF-8 my-map.properties &gt; my-map.properties</code>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3024" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3024" rel="ugc nofollow">pull request #3024</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <abbr title="Uniform Resource Locator">URL</abbr> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> As part of the update to add advanced search, the <a href="/wiki/configuration:blender" class="wikilink1" title="configuration:blender" data-wiki-id="configuration:blender">Blended Search</a> 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 <a href="https://github.com/vufind-org/vufind/pull/3068" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3068" rel="ugc nofollow">pull request #3068</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3047" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3047" rel="ugc nofollow">pull request #3047</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/3084" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3084" rel="ugc nofollow">pull request #3084</a>, 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.</div> </li> <li class="level1 node"><div class="li"> 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 <a href="/wiki/administration:command_line_utilities#language_category" class="wikilink1" title="administration:command_line_utilities" data-wiki-id="administration:command_line_utilities">command line normalization tool</a> on them and check whether you have overridden any impacted keys. More details:</div> <ul> <li class="level2"><div class="li"> Purely numeric language file keys are now enclosed in single quotes; see <a href="https://github.com/vufind-org/vufind/pull/3044" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3044" rel="ugc nofollow">pull request #3044</a>.</div> </li> <li class="level2"><div class="li"> 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.</div> </li> </ul> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2978" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2978" rel="ugc nofollow">pull request #2978</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3087" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3087" rel="ugc nofollow">pull request #3087</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3030" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3030" rel="ugc nofollow">pull request #3030</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/3060" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3060" rel="ugc nofollow">pull request #3060</a> in case it is related.</div> </li> <li class="level1"><div class="li"> 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&#039;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.</div> </li> <li class="level1 node"><div class="li"> 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:</div> <ul> <li class="level2"><div class="li"> \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.</div> </li> <li class="level2"><div class="li"> The edsApiHost property in \VuFindSearch\Backend\EDS\Base has been renamed to apiHost.</div> </li> <li class="level2"><div class="li"> The facet_limit setting in EDS.ini has been removed, as it never had any effect due to limitations in the EDS <abbr title="Application Programming Interface">API</abbr>.</div> </li> <li class="level2"><div class="li"> 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)</div> </li> </ul> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2659" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2659" rel="ugc nofollow">pull request #2659</a> and <a href="https://github.com/vufind-org/vufind/pull/3154" class="urlextern" title="https://github.com/vufind-org/vufind/pull/3154" rel="ugc nofollow">pull request #3154</a> for details and adjust your local code to match.</div> </li> <li class="level1"><div class="li"> Cart popover displays have been adjusted for validity/accessibility, with minor impact on associated Javascript and styles; see <a href="https://github.com/vufind-org/vufind/pull/2838" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2838" rel="ugc nofollow">pull request #2838</a>.</div> </li> <li class="level1"><div class="li"> Custom styles associated with the optional cookie consent feature have been significantly refactored; see <a href="https://github.com/vufind-org/vufind/pull/2909" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2909" rel="ugc nofollow">pull request #2909</a>.</div> </li> <li class="level1"><div class="li"> The GetItemStatuses AjaxHandler has been significantly revised to support a broader range of statuses. See <a href="https://github.com/vufind-org/vufind/pull/2857" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2857" rel="ugc nofollow">pull request #2857</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2779" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2779" rel="ugc nofollow">pull request #2779</a>.</div> </li> <li class="level1"><div class="li"> OCLC has shut down the WorldCatIdentities <abbr title="Application Programming Interface">API</abbr> 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.</div> </li> <li class="level1"><div class="li"> The Alma driver&#039;s constructor signature and factory configuration have changed, and its internal availability status logic has been significantly revised. See <a href="https://github.com/vufind-org/vufind/pull/2857" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2857" rel="ugc nofollow">pull request #2857</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2921" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2921" rel="ugc nofollow">pull request #2921</a> for details.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2911" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2911" rel="ugc nofollow">pull request #2911</a> for details.</div> </li> <li class="level1"><div class="li"> The \VuFind\Recommend\SearchObject class has been deprecated and will be removed in release 10.0; please use \VuFind\Recommend\AbstractSearchObject instead.</div> </li> <li class="level1"><div class="li"> 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 <a href="/wiki/videos:upgrading_vufind_using_git" class="wikilink1" title="videos:upgrading_vufind_using_git" data-wiki-id="videos:upgrading_vufind_using_git">Upgrading VuFind® Using Git</a> video (or the resources linked from that page) for a possible approach to automating this process.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://maps.stamen.com/stadia-partnership/" class="urlextern" title="https://maps.stamen.com/stadia-partnership/" rel="ugc nofollow">Stamen x Stadia</a> page.</div> </li> </ul> <p> <a href="/wiki/changelog:release-9.1" class="wikilink1" title="changelog:release-9.1" data-wiki-id="changelog:release-9.1">Press Release</a> </p> <p> <a href="/wiki/videos:vufind_9.1_-_what_s_new_what_s_changed" class="wikilink1" title="videos:vufind_9.1_-_what_s_new_what_s_changed" data-wiki-id="videos:vufind_9.1_-_what_s_new_what_s_changed">Video Summary</a> </p> </div> <h2 class="sectionedit10" id="release_903_-_7_24_2023">Release 9.0.3 - 7/24/2023</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2989" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2989" rel="ugc nofollow">pull request #2989</a>.</div> </li> <li class="level1"><div class="li"> Adds a new “OperatorToFieldPrefix” view helper as part of a bug fix (see <a href="https://github.com/vufind-org/vufind/pull/2992" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2992" rel="ugc nofollow">pull request #2992</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2996" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2996" rel="ugc nofollow">pull request #2996</a>).</div> </li> </ul> </div> <h2 class="sectionedit11" id="release_902_-_6_26_2023">Release 9.0.2 - 6/26/2023</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> Adds a new “Session” view helper as part of a bug fix (see <a href="https://github.com/vufind-org/vufind/pull/2926" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2926" rel="ugc nofollow">pull request #2926</a> for details).</div> </li> <li class="level1"><div class="li"> Eliminates log4j 1.x from SolrMarc to prevent false-positive vulnerability detection.</div> </li> </ul> </div> <h2 class="sectionedit12" id="release_901_-_4_24_2023">Release 9.0.1 - 4/24/2023</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Bug fix release: corrects problems with Blowfish encryption migration discovered immediately following the release of 9.0. Please use this version instead of 9.0 if you are switching your encryption method!</div> </li> </ul> </div> <h2 class="sectionedit13" id="release_90_-_4_24_2023">Release 9.0 - 4/24/2023</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Support for <a href="/wiki/configuration:blender" class="wikilink1" title="configuration:blender" data-wiki-id="configuration:blender">Blended Search</a>, which can combine results from multiple search backends into a single list.</div> </li> <li class="level1"><div class="li"> Support for a <a href="/wiki/configuration:cookie_consent" class="wikilink1" title="configuration:cookie_consent" data-wiki-id="configuration:cookie_consent">cookie consent</a> dialog box (disabled by default).</div> </li> <li class="level1"><div class="li"> Support for user-provided star ratings of records (off by default; see the rating setting in the [Social] section of config.ini).</div> </li> <li class="level1"><div class="li"> A new “interval” <a href="/wiki/development:plugins:captcha_handlers" class="wikilink1" title="development:plugins:captcha_handlers" data-wiki-id="development:plugins:captcha_handlers">CAPTCHA handler</a> 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.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Support for configurable username policies to restrict account names created within the system. See <a href="https://github.com/vufind-org/vufind/pull/2581" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2581" rel="ugc nofollow">pull request #2581</a> for details.</div> </li> <li class="level1"><div class="li"> Feedback forms can now be forwarded/persisted using <a href="/wiki/development:plugins:form_handlers" class="wikilink1" title="development:plugins:form_handlers" data-wiki-id="development:plugins:form_handlers">Form Handler plugins</a>. 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.</div> </li> <li class="level1"><div class="li"> Feedback forms can now be configured to allow some fields to be pre-populated using <abbr title="Uniform Resource Locator">URL</abbr> query parameters.</div> </li> <li class="level1"><div class="li"> A new administrative module has been created for managing feedback results stored in the database. See <a href="https://github.com/vufind-org/vufind/pull/2399" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2399" rel="ugc nofollow">pull request #2399</a> for details.</div> </li> <li class="level1"><div class="li"> Support for using Koha local cover images as a cover image source.</div> </li> <li class="level1"><div class="li"> Support for activating <a href="https://tagmanager.google.com" class="urlextern" title="https://tagmanager.google.com" rel="ugc nofollow">Google Tag Manager</a> via configuration; see <a href="https://github.com/vufind-org/vufind/pull/2637" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2637" rel="ugc nofollow">pull request #2637</a> for details.</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> Support for storing MARC records in MARC-in-JSON format in the Solr index.</div> </li> <li class="level1"><div class="li"> The staff view for MARC records can be configured to also display indexed Solr fields (see <a href="https://github.com/vufind-org/vufind/pull/2540" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2540" rel="ugc nofollow">pull request #2540</a>).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2538" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2538" rel="ugc nofollow">pull request #2538</a> for details.</div> </li> <li class="level1"><div class="li"> The <a href="https://thirdiron.com/products/browzine/" class="urlextern" title="https://thirdiron.com/products/browzine/" rel="ugc nofollow">BrowZine</a> DOI linker plugin now supports the display of retraction notices.</div> </li> <li class="level1"><div class="li"> An <a href="/wiki/development:apis:admin" class="wikilink1" title="development:apis:admin" data-wiki-id="development:apis:admin">administrative API endpoint</a> (featuring cache-clearing functionality) has been added.</div> </li> <li class="level1"><div class="li"> YAML configuration files can now be set up to inherit specific keys from their parents; see <a href="/wiki/configuration:inheritance" class="wikilink1" title="configuration:inheritance" data-wiki-id="configuration:inheritance">Configuration File Inheritance</a> for details.</div> </li> <li class="level1"><div class="li"> Support has been added for using VuFind® as an <a href="/wiki/configuration:oauth2_oidc" class="wikilink1" title="configuration:oauth2_oidc" data-wiki-id="configuration:oauth2_oidc">OAuth2 and OpenID Connect Authorization Server</a> (OIDC Provider). Please see the configuration page for additional information and prerequisites.</div> </li> <li class="level1"><div class="li"> Example import configuration has been added for ingesting XML harvested from <a href="https://www.subjectsplus.com/" class="urlextern" title="https://www.subjectsplus.com/" rel="ugc nofollow">SubjectsPlus</a>.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind® now requires PHP 7.4.1 or newer; please make sure you have an appropriate version installed before upgrading.</div> <ul> <li class="level2"><div class="li"> Note that while PHP 7.4 is supported, PHP 8.0 or newer is STRONGLY RECOMMENDED, as PHP 7 is no longer being supported. The next release (9.1) will fully drop support for PHP 7.</div> </li> <li class="level2"><div class="li"> To use the new OAuth2 / OpenID Connect functionality, the PHP <a href="https://www.php.net/manual/en/book.sodium.php" class="urlextern" title="https://www.php.net/manual/en/book.sodium.php" rel="ugc nofollow">Sodium</a> extension is also now required.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The version of Solr bundled in VuFind® now requires Java 11 or newer.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind® has dropped support for Apache 2.2. Your httpd-vufind.conf file can be simplified as long as you use Apache 2.4 or newer; see <a href="https://github.com/vufind-org/vufind/pull/2577" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2577" rel="ugc nofollow">pull request #2577</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_90" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some indexing and dependency changes require a full reindex:</div> <ul> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Solr has been upgraded to release 9.1.1. You MUST reindex all records to avoid encountering errors related to highlighting within the author/author_variant fields (see <a href="https://github.com/vufind-org/vufind/pull/2695" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2695" rel="ugc nofollow">pull request #2695</a> for details).</div> </li> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Deprecated Solr fields have been removed. See the <a href="/wiki/development:architecture:solr_index_schema#vufind_90" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for more details.</div> </li> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind®&#039;s SolrMarc configuration now populates Solr&#039;s fullrecord field using MARC-in-JSON format instead of binary MARC format. This solves problems caused by records exceeding binary MARC&#039;s 99,999-character limit, but it introduces an incompatibility with earlier VuFind® releases. If you want a backward-compatible solution, you can customize marc_local.properties to use MARCXML instead.</div> </li> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The FormatCalculator SolrMarc custom indexing class has been revised to detect formats more accurately. If you have created a custom subclass of the FormatCalculator, please note that there have been method signature changes to getFormatFromBibLevel, getFormatFromRecordType and isElectronic, plus the getTypeOfComputerFile method has been removed. If you use a custom translation map, note that the FormatCalculator has several new possible output values which you may wish to customize in your map. See <a href="https://github.com/vufind-org/vufind/pull/2412" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2412" rel="ugc nofollow">pull request #2412</a> for details.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Because of the upgrade to Solr 9, Solr will now only bind to “localhost” by default. If you need to connect to Solr from another machine using a hostname, you should set the SOLR_JETTY_HOST environment variable prior to starting Solr. See <a href="https://solr.apache.org/guide/solr/latest/deployment-guide/taking-solr-to-production.html#security-considerations" class="urlextern" title="https://solr.apache.org/guide/solr/latest/deployment-guide/taking-solr-to-production.html#security-considerations" rel="ugc nofollow">Taking Solr to Production</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Blowfish encryption algorithms are deprecated in OpenSSL 3.0, and VuFind® has changed its default encryption method to reflect this. If you have legacy encrypted data (ILS credentials) in your database, you should convert it to a supported method. VuFind®&#039;s web-based upgrade tool will guide you through this, so be sure to access it as part of your upgrade process.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The PHP-based LESS compiler has been removed due to compatibility problems; “grunt less” is now the only way to compile LESS, and the entire “less” section (including the “active” setting) has been removed from theme.config.php. See the <a href="/wiki/development:architecture:less" class="wikilink1" title="development:architecture:less" data-wiki-id="development:architecture:less">LESS / SASS page</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Hunt library is no longer used by themes and has been replaced with the browser-native IntersectionObserver. If you rely on Hunt or have customized functionality related to dynamic data loading into search results, you will likely need to adjust local code – see <a href="https://github.com/vufind-org/vufind/pull/2447" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2447" rel="ugc nofollow">pull request #2447</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The global checkSaveStatuses / checkSaveStatusesCallback Javascript functions from check_save_statuses.js have been refactored into the new VuFind.saveStatuses module (to reduce global functions). See <a href="https://github.com/vufind-org/vufind/pull/2844" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2844" rel="ugc nofollow">pull request #2844</a>.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> To increase flexibility, record drivers can now differentiate between a “source identifier” (the backend where the record resides) and a “search backend identifier” (the backend used to find the record). This distinction makes it possible to have “virtual” search backends which pull data from multiple sources. Supporting this required several changes which may need to be reflected in local custom code:</div> <ul> <li class="level2"><div class="li"> The setSourceIdentifier record driver and record collection methods have been deprecated in favor of setSourceIdentifiers, which allows both IDs to be set. The legacy method will set both IDs to the same value for backward compatibility. These changes affect any classes implementing VuFindSearch\Response\RecordCollectionInterface or VuFindSearch\Response\RecordInterface. The changes have been implemented in VuFindSearch\Response\AbstractRecordCollection and VuFindSearch\Response\RecordTrait for easy reuse.</div> </li> <li class="level2"><div class="li"> Record controllers (i.e. VuFind\Controller\AbstractRecord and its children) have replaced the $searchClassId property with $sourceId.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Facet processing has been adjusted to maintain a consistent internal format between the EDS, Primo and Solr backends, with standard processing taking place in the \VuFind\Search\Base\Results class. This simplifies the work of the Blender backend and better conforms to VuFind®&#039;s internal documentation. The changes are most significant in Solr, where the \VuFindSearch\Backend\Solr\Response\Json\Facets class has been removed and replaced by additional methods on \VuFindSearch\Backend\Solr\Response\Json\RecordCollection. Note that some other backends (most notably Summon) still use non-standard facet processing and are presently incompatible with Blender. This may be corrected in a future release. (See <a href="https://github.com/vufind-org/vufind/pull/2372" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2372" rel="ugc nofollow">pull request #2372</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The default configuration now includes a username policy that prevents the inclusion of exotic characters. This can be made more or less restrictive through configuration; see <a href="https://github.com/vufind-org/vufind/pull/2581" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2581" rel="ugc nofollow">pull request #2581</a>. Note that this will not impact existing users or usernames in your system; it will just prevent the creation of new ones that do not match the pattern.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> In support of refactoring related to username policies, VuFind\Auth\AbstractBase::getCannedPasswordPolicyHint has been deprecated and \VuFind\Auth\Database::validateUsernameAndPassword has been removed; if you have custom authentication code relying upon these methods, it should be adjusted.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Config\Locator class has been deprecated in favor of a new \VuFind\Config\PathResolver class. Whereas Locator was accessed statically, making some code hard to test or customize, the PathResolver is a full-fledged VuFind® service that can be overridden or extended. This change has resulted in adjustments to the internals of \VuFind\Config\PluginFactory, \VuFind\Config\YamlReader, and other classes; see <a href="https://github.com/vufind-org/vufind/pull/2568" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2568" rel="ugc nofollow">pull request #2568</a> for full details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Previous VuFind® releases suppressed the display of items without barcodes on the holdings tab of the record view. This restriction has now been lifted by default but can be reintroduced by turning off the display_items_without_barcodes setting in config.ini.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Record links can now optionally include a search ID, which helps the system more reliably maintain context (e.g. when multiple open tabs are being used to search at the same time). Supporting this feature required a few backward-incompatible chnages: The constructors for \VuFind\RecordTab\CollectionList, \VuFind\Controller\Plugin\ResultScroller and \VuFind\Search\Memory have changed, as has the signature of the \VuFind\Search\Memory::rememberSearch method. Additionally, the recordLinker view helper now accepts a results object as a parameter so that it can add the necessary parameter to record links.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Laminas no longer uses the deprecated container-interop interfaces for factories; it now uses psr-container instead. This means that all references to the Interop\Container namespace should be replaced with equivalent references to the Psr\Container interface (note that Interop\Container\Exception is replaced by Psr\Container\ContainerException). If you have local factories, or other code that references container interfaces, they should be updated to ensure forward-compatibility. See <a href="https://github.com/vufind-org/vufind/pull/2445" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2445" rel="ugc nofollow">pull request #2445</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Ezb <a href="/wiki/development:plugins:link_resolver_drivers" class="wikilink1" title="development:plugins:link_resolver_drivers" data-wiki-id="development:plugins:link_resolver_drivers">link resolver driver</a> has been renamed to Jop to better reflect the branding of the underlying <abbr title="Application Programming Interface">API</abbr>. If you use or extend this driver, you should update your configuration and/or code. See <a href="https://github.com/vufind-org/vufind/pull/2455" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2455" rel="ugc nofollow">pull request #2455</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Methods and properties related to the HierarchicalFacetHelper have been refactored from \VuFind\Search\Solr\Results to \VuFind\Search\Base\Results, and a HierarchicalFacetHelperInterface has been defined to enable the possibility of consistent hierarchical facet processing across multiple backends. (See <a href="https://github.com/vufind-org/vufind/pull/2372" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2372" rel="ugc nofollow">pull request #2372</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Because of Google&#039;s migration from Universal Analytics to Google Analytics 4, the Google Analytics plug-in has been rewritten. If you use this, be sure to update your Google Analytics account to use a GA4 key, and if you rely on the create_options_js setting in config.ini, note that some option names may have changed – e.g. cookieFlags has become cookie_flags. See <a href="https://github.com/vufind-org/vufind/pull/2402" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2402" rel="ugc nofollow">pull request #2402</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Code deprecated in release 8.0 has been fully removed:</div> <ul> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Ils\Driver\CacheTrait has been removed; use \VuFind\Cache\CacheTrait instead.</div> </li> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The RecordLink view helper has been removed; use RecordLinker instead.</div> </li> <li class="level2"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFindSearch\Service::invoke() and the command pattern must be used for all search service calls; the legacy backward-compatibility helper methods have been removed (see the 8.0 changelog for more details).</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The icon system introduced in VuFind® 8.0 is now fully utilized in themes. Icons have been standardized and in some cases changed. Many obsolete styles have been removed. You may notice some minor changes to user interface appearance as a result, but it can all be configured through your local theme.config.php as needed. Additionally, links containing icons have been restructured with new <abbr title="Cascading Style Sheets">CSS</abbr> which may require markup changes in local templates; see <a href="https://github.com/vufind-org/vufind/pull/2400" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2400" rel="ugc nofollow">pull request #2400</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of \VuFind\View\Helper\Root\Icon has been changed to remove the dependency on the HeadLink helper. See <a href="https://github.com/vufind-org/vufind/pull/1962" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1962" rel="ugc nofollow">pull request #1962</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The league/commonmark library used for Markdown rendering has been upgraded to a new major version (2.x). If you have customized markdown.ini or any code related to Markdown processing (particularly the League\CommonMark\MarkdownConverterInterface service, which has been renamed to League\CommonMark\ConverterInterface), you should review <a href="https://github.com/vufind-org/vufind/pull/2048" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2048" rel="ugc nofollow">pull request #2048</a> to make sure appropriate adjustments are made.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Validator\Csrf class has been replaced by \VuFind\Validator\CsrfInterface + \VuFind\Validator\SessionCsrf to open the possibility of alternate CSRF implementations. If you have customized this class or written code which pulls it from the service manager, you may need to make some adjustments. See <a href="https://github.com/vufind-org/vufind/pull/2201" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2201" rel="ugc nofollow">pull request #2201</a>.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The File_MARC dependency from PEAR has been replaced by a new <a href="https://github.com/vufind-org/vufind-marc" class="urlextern" title="https://github.com/vufind-org/vufind-marc" rel="ugc nofollow">VuFind\Marc</a> library for improved performance and forward compatibility with newer PHP releases. This means that a significant amount of VuFind®&#039;s MARC record processing logic has been revised, and you will have to update any related local subclasses. In particular:</div> <ul> <li class="level2"><div class="li"> The deprecated getMarcRecord() method in several record drivers has been removed (you should use getMarcReader() instead).</div> </li> <li class="level2"><div class="li"> Some components of the WorldCat search backend have changed.</div> </li> <li class="level2"><div class="li"> The command line tools for deleting records and linting MARC files have been revised.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The internals of the VuFind\MarcReader class have been changed; see <a href="https://github.com/vufind-org/vufind/pull/2334" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2334" rel="ugc nofollow">pull request #2334</a>. In the unlikely situation that you have locally customized this code, you will need to make updates.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> All ILS drivers with a getConfig method have been standardized to use a consistent method signature. If you have customized this method in a local ILS driver, you should adjust your code to match. See <a href="https://github.com/vufind-org/vufind/pull/2429" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2429" rel="ugc nofollow">pull request #2429</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Search backend factories extended from AbstractSolrBackendFactory may need minor adjustments due to improvements to the design of configuration loading within the factories. The $solrCore property has been renamed to $defaultIndexName, and the getSolrCore() method has been renamed to getIndexName(). The getSolrUrl() method no longer accepts any parameters.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature and behavior of \VuFind\ILS\Driver\AbstractAPI::makeRequest() has been changed for more consistent and reliable error handling; this impacts the FOLIO and GeniePlus ILS drivers; see <a href="https://github.com/vufind-org/vufind/pull/2554" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2554" rel="ugc nofollow">pull request #2554</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> During application initialization, VuFind® used to change the working directory to $VUFIND_HOME; code has now been refactored to avoid this, which simplifies some things. If your code relies on expecting a specific working directory, it may need to be adjusted, and if you have custom console commands that extend RelativeFileAwareCommand, they should be adjusted, since this base class is no longer needed. See <a href="https://github.com/vufind-org/vufind/pull/2305" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2305" rel="ugc nofollow">pull request #2305</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Two classes have been refactored to use the CurrencyFormatter service, which separates formatting logic from the SafeMoneyFormat view helper for improved reusability. If you have local changes to \VuFind\AjaxHandler\GetUserFines or \VuFind\View\Helper\Root\SafeMoneyFormat, you should review them. See <a href="https://github.com/vufind-org/vufind/pull/2217" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2217" rel="ugc nofollow">pull request #2217</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Controller\Plugin\AbstractRequestBase::getValidIds() method has been superseded by a validateIds() method. If you rely on the old method in custom code (a fairly unlikely situation), you will need to revise your code. See <a href="https://github.com/vufind-org/vufind/pull/2206" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2206" rel="ugc nofollow">pull request #2206</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Feedback form processing has been significantly refactored; see <a href="https://github.com/vufind-org/vufind/pull/2230" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2230" rel="ugc nofollow">pull request #2230</a> and <a href="https://github.com/vufind-org/vufind/pull/2237" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2237" rel="ugc nofollow">pull request #2237</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature of \VuFind\Db\Table\Search::saveSearch() has changed to accommodate a fix to prevent duplicate searches in history; see <a href="https://github.com/vufind-org/vufind/pull/2460" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2460" rel="ugc nofollow">pull request #2460</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Search\UrlQueryHelper::buildQueryString() method has been made public and static for easier reuse; in the unlikely event that you have customized this method in a subclass, you will need to adjust your local code accordingly.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFindSearch\Backend\Solr\Connector class has been revised: the HTTP client (or a factory function to create HTTP clients) is now a required constructor parameter (and constructor parameters have been reordered accordingly), plus the getTimeout() and setTimeout() methods have been removed in favor of the more flexible callWithHttpOptions() method. If you use the connector directly in custom code, you should review potentially affected logic. See <a href="https://github.com/vufind-org/vufind/pull/2229" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2229" rel="ugc nofollow">pull request #2229</a> and <a href="https://github.com/vufind-org/vufind/pull/2515" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2515" rel="ugc nofollow">pull request #2515</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some translation strings have been renamed or split to reduce ambiguity; if you have customized the old strings in local language files, or if you use them in any custom templates/configurations, you will need to adjust your local files to use the appropriate new values. See <a href="https://github.com/vufind-org/vufind/pull/2598" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2598" rel="ugc nofollow">#2598</a> for details; summary of changes:</div> <ul> <li class="level2"><div class="li"> “Find More” ⇒ footer_header_find_more</div> </li> <li class="level2"><div class="li"> “Need Help?” ⇒ feedback_help_label / footer_header_need_help / link_text_need_help</div> </li> <li class="level2"><div class="li"> “Search Options” ⇒ footer_header_search_options</div> </li> <li class="level2"><div class="li"> “Send us your feedback!” ⇒ feedback_title</div> </li> <li class="level2"><div class="li"> “Subject(s)” ⇒ deleted [no longer used/needed]</div> </li> <li class="level2"><div class="li"> “Thank you for your feedback.” ⇒ feedback_response</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Db\Table\ExpirationTrait has been revised to prevent a potential problem with infinite looping during database row expiration; if you have a custom class utilizing this trait, revisions will be necessary. See <a href="https://github.com/vufind-org/vufind/pull/2450" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2450" rel="ugc nofollow">pull request #2450</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some function signatures have been more strictly typed based on <a href="/wiki/development:recommended_tools#static_analysis" class="wikilink1" title="development:recommended_tools" data-wiki-id="development:recommended_tools">PHPStan</a> analysis (see <a href="https://github.com/vufind-org/vufind/pull/2255" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2255" rel="ugc nofollow">pull request #2255</a>, for example). If you have local code that extends core code, it is strongly recommended that you run <a href="/wiki/development:recommended_tools#static_analysis" class="wikilink1" title="development:recommended_tools" data-wiki-id="development:recommended_tools">PHPStan</a> on it to make sure your signatures remain accurate and compatible.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Search\Solr\HideFacetValueListener has been renamed to \VuFind\Search\Base\HideFacetValueListener, since it is no longer Solr-specific (it is now shared with EDS and Primo).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The shell/batch scripts in $VUFIND_HOME/import/bin have been removed; these were part of SolrMarc 2.x and were deprecated with the release of SolrMarc 3. If you rely on any of these for your processes/workflows, you should find alternatives. For MARC import, everyone should already be using $VUFIND_HOME/import-marc.sh instead of the obsolete $VUFIND_HOME/import/bin/import.sh.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The data provided by the GetUserFines AJAX handler has changed, using “total” instead of “value” for the element containing the sum of all fines; the associated logic in account_ajax.js has been adjusted to match. If you have customized anything related to this, please change local code to reflect the change.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The DOILookup AJAX handler and the BrowZine DOI linker plugin have had their constructor signatures and factories changed; if you have customized either of them, adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/2616" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2616" rel="ugc nofollow">pull request #2616</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use <a href="https://thirdiron.com/products/browzine/" class="urlextern" title="https://thirdiron.com/products/browzine/" rel="ugc nofollow">BrowZine</a>, be sure to update your local BrowZine.ini to reflect the new [DOIServices] section added in <a href="https://github.com/vufind-org/vufind/pull/2616" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2616" rel="ugc nofollow">pull request #2616</a>; this supersedes the previous DOI “filters[]” setting and allows access to new functionality.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use Git to track your local configuration files, note that changes to the default .gitignore file will prevent local configurations from being committed. See the note at the bottom of the <a href="https://vufind.org/wiki/development:recommended_tools:git#getting_started" class="urlextern" title="https://vufind.org/wiki/development:recommended_tools:git#getting_started" rel="ugc nofollow">Getting Started with Git</a> documentation for a solution to this problem.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The factory and constructor expectations for \VuFind\Search\EDS\Options have changed in order to support “on demand” <abbr title="Application Programming Interface">API</abbr> data retrieval for improved efficiency. If you have customized this code, changes may be needed; see <a href="https://github.com/vufind-org/vufind/pull/2643" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2643" rel="ugc nofollow">pull request #2643</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The second parameter ($flatten) of \VuFindTheme\ThemeInfo::getMergedConfig() was not working correctly and has been removed; in the unlikely event that you wrote code which relied on this feature, you should review it. See <a href="https://github.com/vufind-org/vufind/pull/2543" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2543" rel="ugc nofollow">pull request #2543</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The original database-driven Sierra ILS driver has been removed as it was no longer being maintained; Sierra users should use the <abbr title="Application Programming Interface">API</abbr>-based SierraRest driver instead.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">Record Data Formatter</a> view helper has been adjusted so that the record driver parameter can be passed to the helper invocation instead of as a parameter to the getData method, and this is now the preferred method of using the helper. However, support for the legacy style is retained for backward compatibility. See <a href="https://github.com/vufind-org/vufind/pull/2658" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2658" rel="ugc nofollow">pull request #2658</a> for details.</div> </li> <li class="level1"><div class="li"> The book bag feature now requires browser Javascript support for add/remove functionality in result lists (see <a href="https://github.com/vufind-org/vufind/pull/2477" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2477" rel="ugc nofollow">pull request #2477</a>). Given current standards, this is part of a general move away from universal non-Javascript support.</div> </li> <li class="level1"><div class="li"> The <abbr title="Cascading Style Sheets">CSS</abbr> classes used for displaying counts of checkouts and requests in the account side menu have been renamed for clarity (.ok to .account-info; .warn to .account-warning; and .overdue to .account-alert). If you have customized these styles, you will need to make adjustments. See <a href="https://github.com/vufind-org/vufind/pull/2481" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2481" rel="ugc nofollow">pull request #2481</a>.</div> </li> <li class="level1"><div class="li"> The key generation rule for caching parsed YAML files has been changed to reduce the possibilities of collisions across instances; see <a href="https://github.com/vufind-org/vufind/pull/2351" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2351" rel="ugc nofollow">pull request #2351</a>.</div> </li> <li class="level1"><div class="li"> The <abbr title="Application Programming Interface">API</abbr> specification has been updated to use the OpenAPI 3.0.3 standard, and the Swagger UI tool included for <abbr title="Application Programming Interface">API</abbr> testing has been upgraded. The actual <abbr title="Application Programming Interface">API</abbr> interface and functionality has not changed (apart from additions noted above) and remains backward-compatible.</div> </li> <li class="level1"><div class="li"> Search backend factories have been refactored to improve extensibility; if you have custom factories, you should review the pull requests linked from <a href="https://vufind.org/jira/browse/VUFIND-1446" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1446" rel="ugc nofollow">VUFIND-1446</a>; there may be opportunities to simplify your code.</div> </li> <li class="level1"><div class="li"> Some aspects of the VuFindApi module were refactored for greater flexibility when admin tools were added; see <a href="https://github.com/vufind-org/vufind/pull/2219" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2219" rel="ugc nofollow">pull request #2219</a> for details. This only affects code internals, not the behavior of existing <abbr title="Application Programming Interface">API</abbr> endpoints.</div> </li> <li class="level1"><div class="li"> The non-tab record action handling in \VuFind\Route\RouteGenerator has been refactored to make it easier to add additional actions in local modules. If you have already customized these types of routes in your instance, adjustments may be needed or simplification may be possible; see <a href="https://github.com/vufind-org/vufind/pull/2172" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2172" rel="ugc nofollow">pull request #2172</a>.</div> </li> <li class="level1"><div class="li"> The include_facets setting in EDS.ini had no effect in the existing code and has been removed.</div> </li> </ul> <p> <a href="/wiki/changelog:release-9.0" class="wikilink1" title="changelog:release-9.0" data-wiki-id="changelog:release-9.0">Press Release</a> </p> <p> <a href="/wiki/videos:vufind_9.0_-_what_s_new_what_s_changed" class="wikilink1" title="videos:vufind_9.0_-_what_s_new_what_s_changed" data-wiki-id="videos:vufind_9.0_-_what_s_new_what_s_changed">Video Summary</a> </p> </div> <h2 class="sectionedit14" id="release_812_-_2_6_2023">Release 8.1.2 - 2/6/2023</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Upgrades to Solr 8.11.2, which includes further updates to Solr&#039;s bundled log4j library. You should reindex your records after upgrading due to the Solr version change.</div> </li> <li class="level1"><div class="li"> Also includes some other minor bug fixes.</div> </li> </ul> </div> <h2 class="sectionedit15" id="release_811_-_10_3_2022">Release 8.1.1 - 10/3/2022</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/translation improvement release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> FOLIO users are strongly encouraged to upgrade due to a significant bug fix.</div> </li> </ul> </div> <h2 class="sectionedit16" id="release_81_-_7_18_2022">Release 8.1 - 7/18/2022</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2340" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2340" rel="ugc nofollow">pull request #2340</a> and the [CustomFilters] section of facets.ini for more details.</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/development:plugins:fallback_record_loaders" class="wikilink1" title="development:plugins:fallback_record_loaders" data-wiki-id="development:plugins:fallback_record_loaders">fallback record loader</a> 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 <a href="/wiki/configuration:files:searches.ini" class="wikilink1" title="configuration:files:searches.ini" data-wiki-id="configuration:files:searches.ini">searches.ini</a>.</div> </li> <li class="level1"><div class="li"> Translated facet values can now be optionally configured to include both the raw and translated values together (see <a href="https://github.com/vufind-org/vufind/pull/2352" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2352" rel="ugc nofollow">pull request #2352</a> for details). This can be useful for displaying results based on classification systems.</div> </li> <li class="level1"><div class="li"> Example configuration settings for importing CSV files exported from Scopus; see <a href="https://github.com/vufind-org/vufind/pull/2345" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2345" rel="ugc nofollow">pull request #2345</a>.</div> </li> <li class="level1"><div class="li"> New ILS driver: support for Lucidea&#039;s <a href="https://lucidea.com/genieplus/" class="urlextern" title="https://lucidea.com/genieplus/" rel="ugc nofollow">GeniePlus</a>.</div> </li> <li class="level1"><div class="li"> New cover image service supported: <a href="https://www.bokinfo.se" class="urlextern" title="https://www.bokinfo.se" rel="ugc nofollow">Bokinfo</a>.</div> </li> <li class="level1"><div class="li"> New interface translations: Armenian and Ukrainian.</div> </li> <li class="level1"><div class="li"> Minor accessibility improvements.</div> </li> <li class="level1"><div class="li"> Minor <a href="/wiki/development:architecture:solr_index_schema#vufind_81" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">Solr schema</a> additions.</div> </li> <li class="level1"><div class="li"> Improved compatibility with PHP 8.1.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2385" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2385" rel="ugc nofollow">pull request #2385</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2197" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2197" rel="ugc nofollow">pull request #2197</a> and make sure no incompatibilities have been introduced.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2423" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2423" rel="ugc nofollow">pull request #2423</a> for details. Impacted code:</div> <ul> <li class="level2"><div class="li"> Custom session handlers (\VuFind\Session namespace)</div> </li> <li class="level2"><div class="li"> Solr response wrapper classes (\VuFindSearch\Backend\Solr\Response\Json namespace)</div> </li> <li class="level2"><div class="li"> \VuFindSearch\Response\AbstractRecordCollection</div> </li> <li class="level2"><div class="li"> \VuFind\Search\ParamBag (very unlikely to be locally customized)</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2203" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2203" rel="ugc nofollow">pull request #2203</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/8d70097f879a624ea6af83720dca89d12b07f7e6" class="urlextern" title="https://github.com/vufind-org/vufind/commit/8d70097f879a624ea6af83720dca89d12b07f7e6" rel="ugc nofollow">commit 8d70097</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The ConfigManager used by SolrMarc custom indexing Java has been revised to solve a thread-related bug (see <a href="https://vufind.org/jira/browse/VUFIND-1546" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1546" rel="ugc nofollow">VUFIND-1546</a>). 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 <a href="https://github.com/vufind-org/vufind/pull/2376" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2376" rel="ugc nofollow">pull request #2376</a> and adjust your code if necessary.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/2381" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2381" rel="ugc nofollow">pull request #2381</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2403" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2403" rel="ugc nofollow">pull request #2403</a> and <a href="https://github.com/vufind-org/vufind/pull/2408" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2408" rel="ugc nofollow">pull request #2408</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2261" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2261" rel="ugc nofollow">pull request #2261</a>.</div> </li> <li class="level1"><div class="li"> Default content security policy settings have been changed to improve compatibility with Safari; if you have enabled CSP enforcement, you should review <a href="https://github.com/vufind-org/vufind/pull/2153" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2153" rel="ugc nofollow">pull request #2153</a> and consider adjusting your settings to match.</div> </li> <li class="level1"><div class="li"> The <abbr title="HyperText Markup Language">HTML</abbr> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2154" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2154" rel="ugc nofollow">pull request #2154</a> and make sure your code remains compatible. The biggest internal interface change is the replacement of methodSupported() with driverSupportsMethod().</div> </li> <li class="level1"><div class="li"> Print-related Javascript has been split from common.js into a new separate file, to make targeted customization easier (see <a href="https://github.com/vufind-org/vufind/pull/2143" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2143" rel="ugc nofollow">pull request #2143</a>). If you have a locally customized common.js, you should be sure to adjust it to match the upstream refactoring.</div> </li> </ul> <p> <a href="/wiki/changelog:release-8.1" class="wikilink1" title="changelog:release-8.1" data-wiki-id="changelog:release-8.1">Press Release</a> </p> </div> <h2 class="sectionedit17" id="release_804_-_2_28_2022">Release 8.0.4 - 2/28/2022</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release, addressing problems with session management (see <a href="https://vufind.org/jira/browse/VUFIND-1532" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1532" rel="ugc nofollow">VUFIND-1532</a>) and long binary MARC records (see <a href="https://vufind.org/jira/browse/VUFIND-1534" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1534" rel="ugc nofollow">VUFIND-1534</a>).</div> </li> </ul> </div> <h2 class="sectionedit18" id="release_803_-_12_20_2021">Release 8.0.3 - 12/20/2021</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Upgrades to Solr 8.11.1, which addresses multiple security vulnerabilities in Solr&#039;s bundled log4j library (see <a href="https://nvd.nist.gov/vuln/detail/CVE-2021-44228" class="urlextern" title="https://nvd.nist.gov/vuln/detail/CVE-2021-44228" rel="ugc nofollow">CVE-2021-44228</a>). You should reindex your records after upgrading due to the Solr version change.</div> </li> <li class="level1"><div class="li"> Also includes some other minor bug fixes.</div> </li> </ul> </div> <h2 class="sectionedit19" id="release_802_-_11_29_2021">Release 8.0.2 - 11/29/2021</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> 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&#039;t forget to run “composer install.” If you are installing from a package, no extra action is necessary.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2151" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2151" rel="ugc nofollow">pull request #2151</a>.</div> </li> </ul> </div> <h2 class="sectionedit20" id="release_801_-_9_27_2021">Release 8.0.1 - 9/27/2021</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Bug fix / improved translation release.</div> </li> <li class="level1"><div class="li"> Addresses “out of memory” errors caused by Laminas Cache under certain circumstances.</div> </li> </ul> </div> <h2 class="sectionedit21" id="release_80_-_9_20_2021">Release 8.0 - 9/20/2021</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> It is now possible to import data directly to VuFind&#039;s Solr index from <a href="/wiki/indexing:csv" class="wikilink1" title="indexing:csv" data-wiki-id="indexing:csv">CSV files</a> (to complement existing support for MARC and XML indexing).</div> </li> <li class="level1"><div class="li"> New “Bookplates” <a href="/wiki/development:plugins:related_records_modules" class="wikilink1" title="development:plugins:related_records_modules" data-wiki-id="development:plugins:related_records_modules">Related module</a> for displaying bookplate images on the record view. See <a href="https://github.com/vufind-org/vufind/pull/1834" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1834" rel="ugc nofollow">pull request #1834</a> for details.</div> </li> <li class="level1"><div class="li"> Significant performance improvements for internal handling of MARC records and search result rendering.</div> </li> <li class="level1"><div class="li"> Citation generation has been significantly updated and improved.</div> </li> <li class="level1"><div class="li"> Support for <a href="https://matomo.org/" class="urlextern" title="https://matomo.org/" rel="ugc nofollow">Matomo</a> analytics (for use with Matomo 4 and up; the pre-existing Piwik support remains for legacy versions). See <a href="https://github.com/vufind-org/vufind/pull/1943" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1943" rel="ugc nofollow">pull request #1943</a> for details.</div> </li> <li class="level1"><div class="li"> New (optional) SolrPrefix autocomplete handler for making suggestions through the edge n-gram tokenizer (see <a href="https://github.com/vufind-org/vufind/pull/1850" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1850" rel="ugc nofollow">pull request #1850</a>).</div> </li> <li class="level1"><div class="li"> Optional support for caching Solr query results (see <a href="https://github.com/vufind-org/vufind/pull/1854" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1854" rel="ugc nofollow">pull request #1854</a>).</div> </li> <li class="level1"><div class="li"> Sitemap generation has been improved to (optionally) include alternate-language versions of pages, as well as static content. See <a href="https://github.com/vufind-org/vufind/pull/1904" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1904" rel="ugc nofollow">pull request #1904</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Support for call number prefixes (which are displayed, but do not affect sorting/searching), for supporting ILS drivers.</div> </li> <li class="level1"><div class="li"> Improved support for rendering alternate-script versions of titles (and retrieving other data from MARC 880 fields).</div> </li> <li class="level1"><div class="li"> Improved handling of punctuation in author names in MARC records (with some new associated configuration settings); see <a href="https://github.com/vufind-org/vufind/pull/2028" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2028" rel="ugc nofollow">pull request #2028</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <abbr title="HyperText Markup Language">HTML</abbr> header (see <a href="https://github.com/vufind-org/vufind/pull/1863" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1863" rel="ugc nofollow">pull request #1863</a> and <a href="https://github.com/vufind-org/vufind/pull/1799" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1799" rel="ugc nofollow">pull request #1799</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/2013" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2013" rel="ugc nofollow">pull request #2013</a> for details.</div> </li> <li class="level1"><div class="li"> Restored support for XHProf <a href="/wiki/development:profiling" class="wikilink1" title="development:profiling" data-wiki-id="development:profiling">profiling</a> (in addition to existing Tideways support).</div> </li> <li class="level1"><div class="li"> It is now possible to link multiple user library accounts from multiple Shibboleth IdP&#039;s; see <a href="/wiki/configuration:shibboleth:library_cards" class="wikilink1" title="configuration:shibboleth:library_cards" data-wiki-id="configuration:shibboleth:library_cards">Shibboleth and Library Cards</a> and <a href="https://github.com/vufind-org/vufind/pull/1823" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1823" rel="ugc nofollow">pull request #1823</a>.</div> </li> <li class="level1"><div class="li"> The new GlobalExtraParams section in searchspecs.yaml makes it easier to configure custom boosts and other Solr parameters. See <a href="https://github.com/vufind-org/vufind/pull/2104" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2104" rel="ugc nofollow">pull request #2104</a>.</div> </li> <li class="level1"><div class="li"> The new “Content” view helper makes it easier to utilize VuFind&#039;s system for displaying internationalized content inside other templates; see <a href="/wiki/configuration:static_pages#embedding_static_content" class="wikilink1" title="configuration:static_pages" data-wiki-id="configuration:static_pages">Embedding Static Content</a> for more details.</div> </li> <li class="level1"><div class="li"> Cover images can now be loaded from the <a href="https://www.base-orb.fr/" class="urlextern" title="https://www.base-orb.fr/" rel="ugc nofollow">Orb</a> service (with an appropriate subscription); see <a href="https://github.com/vufind-org/vufind/pull/1949" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1949" rel="ugc nofollow">pull request #1949</a>.</div> </li> <li class="level1"><div class="li"> Cover images can now have associated attribution messages, when required by a provider (currently used for ObalkyKnih).</div> </li> <li class="level1"><div class="li"> The optional Memcache session handler now supports both of PHP&#039;s Memcache client libraries: \Memcache and \Memcached. Users can configure which one they prefer to use. See <a href="https://github.com/vufind-org/vufind/pull/1945" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1945" rel="ugc nofollow">pull request #1945</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The XSLT import examples have also been updated to make it significantly more convenient to enable <a href="/wiki/indexing:tracking_record_changes" class="wikilink1" title="indexing:tracking_record_changes" data-wiki-id="indexing:tracking_record_changes">change tracking support</a>; see <a href="https://github.com/vufind-org/vufind/pull/2100" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2100" rel="ugc nofollow">pull request #2100</a>.</div> </li> <li class="level1"><div class="li"> Feedback forms have some minor improvements: overrideable email senders, date fields, and improved validation.</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1424" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1424" rel="ugc nofollow">pull request #1424</a> for details.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Further improvements to accessibility.</div> </li> <li class="level1"><div class="li"> Further improvements to PHP 8 compatibility.</div> </li> <li class="level1"><div class="li"> Upgraded to Solr 8.9.0.</div> </li> <li class="level1"><div class="li"> Upgraded to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 3.4.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind now requires PHP 7.3 or newer; please make sure you have an appropriate version installed before upgrading.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind has dropped support for MySQL versions earlier than 5.7.7 (or MariaDB 10.2.2); these versions have reached end of life and should no longer be used under any circumstances.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> MySQL/MariaDB databases will now be encoded using utf8mb4 instead of utfmb3, to allow compatibility with more characters; the database portion of the <a href="/wiki/installation:migration_notes" class="wikilink1" title="installation:migration_notes" data-wiki-id="installation:migration_notes">web-based upgrade process</a> will correct this for you. Some key lengths have been reduced to accommodate the larger size of utf8mb4 characters; in the unlikely event that this introduces a problem to your database, the upgrade process will inform you with an error message.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Legacy support for latin1-encoded MySQL databases (which was provided for compatibility with VuFind 1.x installations) has been removed. You must use utf8 encoding. In the very unlikely situation that you still have a VuFind 1.x database that you need to connect to, please upgrade to VuFind 7.x or earlier first, then migrate to VuFind 8.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Solr schema has changed, the Solr version has been upgraded, DDC call number mappings have been updated, and author indexing has been adjusted, so records MUST be reindexed after an upgrade. See the <a href="/wiki/development:architecture:solr_index_schema#changelog" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Solr “split-on-whitespace” setting has been changed to true by default, to improve the accuracy of search results; however, this will cause problems if you use multi-word synonyms. See <a href="https://github.com/vufind-org/vufind/pull/1937" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1937" rel="ugc nofollow">pull request #1937</a> for details on new configuration options if you need to restore the old behavior.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind now expects browsers to support ES6; see the <a href="/wiki/installation:requirements#browser_support" class="wikilink1" title="installation:requirements" data-wiki-id="installation:requirements">browser support statement</a> for details.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Several changes have been made in relation to VuFind&#039;s caching layer (see <a href="https://github.com/vufind-org/vufind/pull/2054" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2054" rel="ugc nofollow">pull request #2054</a>):</div> <ul> <li class="level2"><div class="li"> The \VuFind\Cache\Storage\Adapter\NoCacheAdapter has been removed, because the core Laminas BlackHole adapter serves the same purpose.</div> </li> <li class="level2"><div class="li"> Support for caching in APC has been removed, because APC is obsolete as of PHP 7.</div> </li> <li class="level2"><div class="li"> Several deprecated storage adapters are no longer being installed through Composer (and were never needed to begin with).</div> </li> <li class="level2"><div class="li"> The constructor signature of \VuFind\Cache\Manager has changed for compatibility with the latest release of the laminas-cache component.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> MARC record handling in record drivers has been refactored to use the faster VuFind\Marc\MarcReader instead of the File_MARC library; this has resulted in some changes to MARC-related support methods like getSubfieldArray(). If you have custom MARC handling in a local record driver, you may need to replace getMarcRecord() calls with getMarcReader() and adjust some other details. See <a href="https://github.com/vufind-org/vufind/pull/1776" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1776" rel="ugc nofollow">pull request #1776</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Pre-existing record driver traits (HierarchyAwareTrait, IlsAwareTrait, MarcAdvancedTrait and MarcBasicTrait) have been moved into the VuFind\RecordDriver\Feature namespace (from VuFind\RecordDriver) to improve code organization; if you have a custom driver which incorporates these traits, you&#039;ll just need to adjust your use statements. See <a href="https://github.com/vufind-org/vufind/pull/2008" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2008" rel="ugc nofollow">pull request #2008</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Functions deprecated in earlier versions of VuFind have been removed; these include CallNumberTools::getFullCallNumber and CreatorTools::getParsedTagList in the SolrMarc custom indexing Java code, and \Db\Row\UserList::getTags and \Db\Table\ResourceTags::destroyLinks in the PHP code. See <a href="https://github.com/vufind-org/vufind/pull/2014" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2014" rel="ugc nofollow">pull request #2014</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind\View\Helper\Root\AbstractClassBasedTemplateRenderer has been replaced by VuFind\View\Helper\Root\ClassBasedTemplateRendererTrait, and the signature of the protected resolveClassTemplate() method has changed. If you have a custom view helper that extends this base class, you should revise it to use the trait instead. See <a href="https://github.com/vufind-org/vufind/pull/1747" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1747" rel="ugc nofollow">pull request #1747</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Text normalization logic has been factored out of the VuFindSearch\Query objects and into a separate class for greater flexibility/extensibility/separation of concerns, and the VuFindSearch\Query\QueryInterface has been changed to reflect this. If you have custom query objects or custom code that deals with query text normalization, some adjustments may be required. See <a href="https://github.com/vufind-org/vufind/pull/1714" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1714" rel="ugc nofollow">pull request #1714</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The VuFindSearch\Service has been refactored to use the Command Pattern; you can now send command objects to the service&#039;s invoke method instead of calling more specific search/retrieve/etc. methods. These command objects are also shared with search listeners. The command system makes it easier to customize search behavior without having to rewrite the search service itself. This has been implemented in a mostly-backward-compatible way, but the old way of doing things is deprecated in this release and will be removed in VuFind 9.0. If you make calls to the search service in your code, and/or if you have written any custom search listeners, you should update your code to use command objects instead of the old techniques. When using command objects, some event details will be different (some arguments may not be present, and the event target will also be different). See <a href="https://github.com/vufind-org/vufind/pull/1967" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1967" rel="ugc nofollow">pull request #1967</a> for details and examples, and <a href="https://github.com/vufind-org/vufind/pull/2108" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2108" rel="ugc nofollow">pull request #2108</a> for some subsequent revisions to event targets.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The HTTP behavior of the VuFindSearch\Backend\Solr\Connector class has been simplified. It now accepts a client object as a constructor parameter, and the setAdapter and setProxy methods have been removed. If you use Solr connectors in custom code, you may need to adjust your logic. See <a href="https://github.com/vufind-org/vufind/pull/2011" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2011" rel="ugc nofollow">pull request #2011</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The classes used for sending messages to Solr have been rewritten for greater flexibility; see <a href="https://github.com/vufind-org/vufind/pull/1952" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1952" rel="ugc nofollow">pull request #1952</a>. If you have custom code using any classes from the \VuFindSearch\Backend\Solr\Document namespace, or if your code interacts with the \VuFind\Solr\Writer or calls \VuFindSearch\Backend\Solr\Connector::write(), some adjustments may be required.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Direct access to search backends through the BackendManager (which bypasses the normal event-driven search service) is STRONGLY DISCOURAGED because it can lead to inconsistent event-related behavior. All existing VuFind code following this anti-pattern has been refactored, which has resulted in constructor signature changes in these classes:</div> <ul> <li class="level2"><div class="li"> \VuFind\Autocomplete\EDS</div> </li> <li class="level2"><div class="li"> \VuFind\ChannelProvider\Channels</div> </li> <li class="level2"><div class="li"> \VuFind\Content\Covers\BrowZine</div> </li> <li class="level2"><div class="li"> \VuFind\DoiLinker\BrowZine</div> </li> <li class="level2"><div class="li"> \VuFind\Hierarchy\TreeDataSource\Solr</div> </li> <li class="level2"><div class="li"> \VuFind\Recommend\MapSelection</div> </li> <li class="level2"><div class="li"> \VuFind\Record\FallbackLoader\Summon</div> </li> <li class="level2"><div class="li"> \VuFind\RecordTab\HoldingsWorldCat</div> </li> <li class="level2"><div class="li"> \VuFind\Solr\Writer</div> </li> </ul> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The RecordLink view helper has been replaced by the RecordLinker view helper (see <a href="https://github.com/vufind-org/vufind/pull/2072" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2072" rel="ugc nofollow">pull request #2072</a>). RecordLink will be maintained for backward template compatibility until release 9.0, when it will be removed. However, any local subclasses of RecordLink should be rewritten as subclasses of RecordLinker. The changes in RecordLinker include:</div> <ul> <li class="level2"><div class="li"> The deprecated getHoldUrl() method has been removed</div> </li> <li class="level2"><div class="li"> All methods returning URLs return raw URLs, not <abbr title="HyperText Markup Language">HTML</abbr>-escaped versions; you are responsible for escaping this output when using it in <abbr title="HyperText Markup Language">HTML</abbr>. This makes the methods more flexible and eliminates some inconsistencies from the previous helper</div> </li> <li class="level2"><div class="li"> getBreadcrumb() has been renamed to getBreadcrumbHtml() to indicate that it returns <abbr title="HyperText Markup Language">HTML</abbr> rather than a plain link</div> </li> <li class="level2"><div class="li"> The \VuFind\OAI\Server::setRecordLinkHelper() method has been renamed to setRecordLinkerHelper().</div> </li> <li class="level2"><div class="li"> The \VuFind\RecordDriver\DefaultRecord::getXML() method has been adjusted to accept the new helper class instead of the old one.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Record\SourceAndIdList::getRecordPosition() has been replaced with \VuFind\Record\SourceAndIdList::getRecordPositions(). If you are using the old method (which is extremely unlikely, unless you have customized \VuFind\Record\Loader), you will need to adjust your code.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFindTheme\View\Helper\HeadThemeResources::parseSetting() has been moved to \VuFindTheme\ResourceContainer::parseSetting() and will eventually be deprecated; in the unlikely situation that you rely on this method, you should revise your code.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The “cssBuilder” command line utility has been deprecated; use the “grunt less” command to compile LESS instead. See <a href="https://github.com/vufind-org/vufind/pull/1925" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1925" rel="ugc nofollow">pull request #1925</a> for related discussion.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The VuFind\Db\Table\Tags::getForUser method has been renamed to getListTagsForUser to improve clarity. In the unlikely case that you use this method in custom code, you will need to change your call to use the new name. See <a href="https://github.com/vufind-org/vufind/pull/2017" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2017" rel="ugc nofollow">pull request #2017</a>.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The MyResearchController is being split up to improve code organization and clarity. If you extend/customize this controller, you may need to revise your code. Specific changes:</div> <ul> <li class="level2"><div class="li"> Holds-related functionality (the holdsAction method) has been moved to a separate HoldsController, and the myresearch-holds route now redirects to holds-list.</div> </li> <li class="level2"><div class="li"> The getDriversForILSRecords and collectRequestAccountStats support methods have been moved to a new ilsRecords() controller plugin.</div> </li> <li class="level2"><div class="li"> The getRefreshResponse method has been refactored to the AbstractBase controller for reuse elsewhere.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Laminas dependency plugin has been removed; if you have not fully migrated local legacy Zend Framework code to Laminas, you may have problems with this release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The code to delete expired rows from database tables (old searches, sessions, etc.) has been refactored to reduce complexity and improve performance (see <a href="https://github.com/vufind-org/vufind/pull/1815" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1815" rel="ugc nofollow">pull request #1815</a>). In the unlikely event that you have built any custom expiration tools, you will need to adjust them to match.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you have customized the extensions setting in markdown.ini, you should make sure that the Autolink, DisallowedRawHtml, Strikethrough, Table and TaskList extensions are enabled in your extensions setting; these are now active by default and are required by default behavior. See <a href="https://github.com/vufind-org/vufind/pull/2006" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2006" rel="ugc nofollow">pull request #2006</a> for details. If you have not customized this setting or do not use Markdown for content rendering, no action is needed.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The endroid/qr-code library has changed significantly; if you have custom QR code logic, you will need to adjust it. See <a href="https://github.com/vufind-org/vufind/pull/1954" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1954" rel="ugc nofollow">pull request #1954</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind\Log\Logger, VuFind\Resolver\Driver\Ezb, VuFind\Role\PermissionProvider\IpRange, and VuFind\Role\PermissionProvider\IpRegEx now explicitly depend upon VuFind\Net\UserIpReader; this dependency was previously optional. If you have customized any of these classes, minor adjustments may be needed. See <a href="https://github.com/vufind-org/vufind/pull/2009" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2009" rel="ugc nofollow">pull request #2009</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some typehints have been changed on the VuFind\Search\Solr\DeduplicationListener constructor; if you have a custom subclass, you should adjust it to match. See <a href="https://github.com/vufind-org/vufind/pull/1844" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1844" rel="ugc nofollow">pull request #1844</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Typehints referring to \Laminas\ServiceManager\ServiceManager have been replaced with more generic ContainerInterface references to improve flexibility in the future; consider making similar adjustments to ServiceManager typehints in local custom code. See <a href="https://github.com/vufind-org/vufind/pull/1848" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1848" rel="ugc nofollow">#1848</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Locale/language detection is now achieved using the <a href="https://packagist.org/packages/slm/locale" class="urlextern" title="https://packagist.org/packages/slm/locale" rel="ugc nofollow">slm/locale</a> module, reducing VuFind-specific custom code. If you have custom locale detection logic, you may need to adjust your code. See <a href="https://github.com/vufind-org/vufind/pull/1885" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1885" rel="ugc nofollow">pull request #1885</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Initialization of the Laminas i18n system has been streamlined and standardized; if you have a custom translator factory or have customized the DisplayLanguageOption view helper (both unlikely situations), you may need to make some adjustments. See <a href="https://github.com/vufind-org/vufind/pull/1928" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1928" rel="ugc nofollow">pull request #1928</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> A new mechanism has been added for showing/hiding long elements of the display (see <a href="https://github.com/vufind-org/vufind/pull/2121" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2121" rel="ugc nofollow">pull request #2121</a>). This is used for SideFacets, TopFacets and WorldCatIdentities recommendation modules, replacing the old registerMoreLessFacetsEventHandlers() function in facets.js. If you have any custom code relying on this function, you should refactor to use the new mechanism.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of the JsTranslations view helper has changed; in the unlikely situation that you have overridden it, you will need to adjust your subclass to match. See <a href="https://github.com/vufind-org/vufind/pull/1981" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1981" rel="ugc nofollow">pull request #1981</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Sitemap\Generator class has been drastically refactored to improve code organization, extensibility and testability. This includes changes to the class&#039; constructor signature; you will have to adjust custom subclasses to match, if you have any, and some logic may need to be moved to plugins. See <a href="https://github.com/vufind-org/vufind/pull/1904" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1904" rel="ugc nofollow">pull request #1904</a> and <a href="https://github.com/vufind-org/vufind/pull/2037" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2037" rel="ugc nofollow">pull request #2037</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The getCancelHoldDetails, getCancelHoldLink, getCancelILLRequestDetails and getCancelStorageRetrievalRequestDetails methods have been updated across ILS drivers to consistently accept a second ($patron) parameter. If you have customized any of these methods in a subclass, you will need to make sure the signatures match.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> To support <a href="/wiki/configuration:static_pages#embedding_static_content" class="wikilink1" title="configuration:static_pages" data-wiki-id="configuration:static_pages">embedding static content</a>, some potentially backward-incompatible internal changes have been made to the VuFind\ContentBlock\TemplateBased class, its associated template, and the HelpText view helper. In the unlikely case that you have locally customized any of these things, you should review your changes with reference to <a href="https://github.com/vufind-org/vufind/pull/1874" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1874" rel="ugc nofollow">pull request #1874</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The LBS4 ILS driver has been removed due to incompatibility with PHP 7 and a lack of demand for an updated version of the code. Please reach out to us if you still need it for any reason!</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Aleph ILS driver&#039;s [duedates] configuration section (and associated functionality) has been removed; this was using the duedate field inappropriately, and seems likely to be unused by the vast majority of users. See <a href="https://github.com/vufind-org/vufind/pull/1989" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1989" rel="ugc nofollow">pull request #1989</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The “Expires” translation string has been split into several different strings to reduce ambiguity; if you have customized this string, you will need to make adjustments. See <a href="https://github.com/vufind-org/vufind/pull/1976" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1976" rel="ugc nofollow">pull request #1976</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The [Advanced_Facets] section of EDS.ini has been replaced with a new advanced_limiters setting in the [General] section. The original version was not implemented correctly and had no effect; the new version provides the ability to filter and reorder limiters on the Advanced EDS search screen. See <a href="https://github.com/vufind-org/vufind/pull/2044" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2044" rel="ugc nofollow">pull request #2044</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Due to changes in an upstream library, the name and location of the configuration key for ignoring specific exceptions in the Whoops error handler have changed; see <a href="https://github.com/vufind-org/vufind/pull/1993" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1993" rel="ugc nofollow">pull request #1993</a> if you need to use this setting. (This only applies to development mode, and it is unlikely that it is being locally customized).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The $forceOverride parameter of UrlQueryHelper::setDefaultParameter now defaults to false instead of true; this is unlikely to impact most users. See <a href="https://github.com/vufind-org/vufind/pull/2015" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2015" rel="ugc nofollow">pull request #2015</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Templates for search results and other lists of records have been refactored to use <abbr title="HyperText Markup Language">HTML</abbr> list tags for better accessibility; if you have customized these templates (or some record driver templates that interact with them), your custom code may need to be adjusted; see <a href="https://github.com/vufind-org/vufind/pull/1931" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1931" rel="ugc nofollow">pull request #1931</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> A bug in VuFind 7.1.x was preventing advanced Shibboleth configuration from loading correctly; it has been corrected by <a href="https://github.com/vufind-org/vufind/pull/2064" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2064" rel="ugc nofollow">pull request #2064</a>. If you previously worked around this problem by renaming Shibboleth.ini to shibboleth.ini (changing the case of the first letter), you should now change it back, as the correct filename will now load as intended.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Ils\Driver\CacheTrait has been renamed to \VuFind\Cache\CacheTrait. The old name will continue to work in VuFind 8.x but will be removed in VuFind 9.0.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use ojs-multirecord.xsl in your ojs.properties file for ingesting harvested XML from OJS, you should change the setting back to the default ojs.xsl. The base ojs.xsl file correctly handles both single-record and multi-record ingests now, so the ojs-multirecord.xsl file has been removed as redundant.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Form\Form constructor signature has changed to load configuration differently; see <a href="https://github.com/vufind-org/vufind/commit/50642b18c8a9e4a02ae404db56a461da916a768e" class="urlextern" title="https://github.com/vufind-org/vufind/commit/50642b18c8a9e4a02ae404db56a461da916a768e" rel="ugc nofollow">commit 50642b</a>. Additionally, the getElements() method has been renamed to getFormElementConfig() to resolve a conflict with the base class (see <a href="https://github.com/vufind-org/vufind/pull/2120" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2120" rel="ugc nofollow">pull request #2120</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Linkify view helper now uses the UrlHighlight library instead of the Linkify library for converting URLs into links inside text; see <a href="https://github.com/vufind-org/vufind/pull/1709" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1709" rel="ugc nofollow">pull request #1709</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Aleph driver no longer supports sorting of historical transactions, because it is incompatible with pagination (see <a href="https://github.com/vufind-org/vufind/pull/2126" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2126" rel="ugc nofollow">pull request #2126</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The KohaILSDI driver has been updated to correctly retrieve fine data from Koha version 19.11 and up; earlier versions (which are no longer supported by the Koha community) are no longer compatible.</div> </li> <li class="level1"><div class="li"> Code specifically designed for decoding binary MARC records in Solr XML responses has been removed, as VuFind no longer uses Solr XML responses (JSON is now favored). If you use XML in Solr for some reason (very unlikely), you may need to compensate for this change. See <a href="https://github.com/vufind-org/vufind/pull/1900" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1900" rel="ugc nofollow">pull request #1900</a>.</div> </li> <li class="level1"><div class="li"> Support for passing an array of breadcrumb data (instead of an <abbr title="HyperText Markup Language">HTML</abbr> string) to the layout has been removed; it is very unlikely that this feature was ever used, so it should not impact anyone. See <a href="https://github.com/vufind-org/vufind/pull/2098" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2098" rel="ugc nofollow">pull request #2098</a> for details.</div> </li> <li class="level1"><div class="li"> The English language files have been adjusted to replace the term “favorites” with “saved items” for a more consistent user experience. See <a href="https://github.com/vufind-org/vufind/pull/2020" class="urlextern" title="https://github.com/vufind-org/vufind/pull/2020" rel="ugc nofollow">pull request #2020</a></div> </li> <li class="level1"><div class="li"> The TopFacets recommendation module&#039;s output has been restructured, so the top_cols configuration setting (found in facets.ini and equivalent .ini files for other backends) is no longer meaningful and has been removed.</div> </li> <li class="level1"><div class="li"> Javascript translations have been refactored to a separate layout/js-translations.phtml to simplify layout/layout.phtml; you may wish to adjust your local theme to match if you have customized your layout. See <a href="https://github.com/vufind-org/vufind/pull/1691" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1691" rel="ugc nofollow">pull request #1691</a>.</div> </li> </ul> <p> <a href="/wiki/changelog:release-8.0" class="wikilink1" title="changelog:release-8.0" data-wiki-id="changelog:release-8.0">Press Release</a> </p> </div> <h2 class="sectionedit22" id="release_711_-_7_5_2021">Release 7.1.1 - 7/5/2021</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / improved translation release.</div> </li> </ul> </div> <h2 class="sectionedit23" id="release_71_-_2_22_2021">Release 7.1 - 2/22/2021</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> The new <a href="/wiki/configuration:record_versions" class="wikilink1" title="configuration:record_versions" data-wiki-id="configuration:record_versions">Record Versions</a> 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.</div> </li> <li class="level1"><div class="li"> PHP 8 compatibility has been improved.</div> </li> <li class="level1"><div class="li"> 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 <a href="/wiki/development:plugins:channel_providers" class="wikilink1" title="development:plugins:channel_providers" data-wiki-id="development:plugins:channel_providers">channel provider</a> now has new options to take advantage of list tags for channel selection. See <a href="https://github.com/vufind-org/vufind/pull/1645" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1645" rel="ugc nofollow">pull request #1645</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="/wiki/configuration:files:facets.ini" class="wikilink1" title="configuration:files:facets.ini" data-wiki-id="configuration:files:facets.ini">facets.ini</a>; see <a href="https://github.com/vufind-org/vufind/pull/1694" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1694" rel="ugc nofollow">pull request #1694</a>.</div> </li> <li class="level1"><div class="li"> Solr has been upgraded to version 7.7.3.</div> </li> <li class="level1"><div class="li"> The Shibboleth authentication handler has been significantly revised and improved, with some new features and settings added; see <a href="https://github.com/vufind-org/vufind/pull/1617" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1617" rel="ugc nofollow">pull request #1617</a> for details.</div> </li> <li class="level1"><div class="li"> The XCNCIP2 ILS driver has been significantly revised and improved.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1679" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1679" rel="ugc nofollow">pull request #1679</a>.</div> </li> <li class="level1"><div class="li"> Permissions (and associated permission denied behavior) can now be applied to columns within combined search results. See <a href="https://github.com/vufind-org/vufind/pull/1707" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1707" rel="ugc nofollow">pull request #1707</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1807" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1807" rel="ugc nofollow">pull request #1807</a> for details.</div> </li> <li class="level1"><div class="li"> A new log writer has been added for Office365 webhooks (for notifications into Microsoft Teams); see <a href="https://github.com/vufind-org/vufind/pull/1757" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1757" rel="ugc nofollow">pull request #1757</a>.</div> </li> <li class="level1"><div class="li"> The Solr field used for storing full MARC records in the index is now configurable (see <a href="https://github.com/vufind-org/vufind/pull/1813" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1813" rel="ugc nofollow">pull request #1813</a>).</div> </li> <li class="level1"><div class="li"> Some settings controlling the VuFind <abbr title="Application Programming Interface">API</abbr> are now more easily configurable (see <a href="https://github.com/vufind-org/vufind/pull/1838" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1838" rel="ugc nofollow">pull request #1838</a>).</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_71" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to reindex your records due to the Solr upgrade and to ensure that Record Version functionality is set up correctly.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use VuFind&#039;s optional sharding support, note that some additional Solr configuration may now be needed due to the upgrade; see “Configuring the ShardHandlerFactory” in <a href="https://lucene.apache.org/solr/guide/7_7/distributed-requests.html" class="urlextern" title="https://lucene.apache.org/solr/guide/7_7/distributed-requests.html" rel="ugc nofollow">the Solr documentation</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee" class="urlextern" title="https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee" rel="ugc nofollow">commit 2b05cef</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1645" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1645" rel="ugc nofollow">pull request #1645</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use a custom version of the Shibboleth authentication handler, local customizations may need to be adjusted to match the refactoring in <a href="https://github.com/vufind-org/vufind/pull/1617" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1617" rel="ugc nofollow">pull request #1617</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use the XCNCIP2 ILS driver, you should review <a href="https://github.com/vufind-org/vufind/pull/1672" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1672" rel="ugc nofollow">pull request #1672</a> and make sure that the changes and fixes there do not conflict with any local customizations.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The EDS integration now stores search options in the cache; this improves performance and stability by reducing reliance on the <abbr title="Application Programming Interface">API</abbr>, but it also means that you may need to clear your local cache if you change settings in EBSCO&#039;s admin panel.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/b4edee8b80ca8fcd4c584d3f4483c3fe8f677fbf" class="urlextern" title="https://github.com/vufind-org/vufind/commit/b4edee8b80ca8fcd4c584d3f4483c3fe8f677fbf" rel="ugc nofollow">commit b4edee8</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1842" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1842" rel="ugc nofollow">pull request #1842</a> for details.</div> </li> <li class="level1"><div class="li"> A new transEscAttr() view helper has been added (see <a href="https://github.com/vufind-org/vufind/pull/1820" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1820" rel="ugc nofollow">pull request #1820</a>) to escape translated text for use in <abbr title="HyperText Markup Language">HTML</abbr> attributes. This should not introduce any backward compatibility problems, but if you are inserting translated text into <abbr title="HyperText Markup Language">HTML</abbr> attributes in local custom templates, you should use this helper to ensure proper escaping with concise code.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s Markdown processor (<a href="https://github.com/thephpleague/commonmark" class="urlextern" title="https://github.com/thephpleague/commonmark" rel="ugc nofollow">league/commonmark</a>) 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee" class="urlextern" title="https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee" rel="ugc nofollow">commit 2b05cef</a> for details.</div> </li> </ul> <p> <a href="/wiki/changelog:release-7.1" class="wikilink1" title="changelog:release-7.1" data-wiki-id="changelog:release-7.1">Press Release</a> </p> </div> <h2 class="sectionedit24" id="release_702_-_12_7_2020">Release 7.0.2 - 12/7/2020</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Solr has been upgraded to version 7.4.0 in order to fix <a href="https://vufind.org/jira/browse/VUFIND-1459" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1459" rel="ugc nofollow">VUFIND-1459</a>. A reindex should not be necessary, but may be a good idea as a precaution.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some style and template details have changed to fix a bug in the Channels interface; see <a href="https://github.com/vufind-org/vufind/pull/1787" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1787" rel="ugc nofollow">pull request #1787</a> for details. This is unlikely to impact you unless you have customized this optional feature.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> An incompatibility between <a href="/wiki/administration:security:content_security_policy" class="wikilink1" title="administration:security:content_security_policy" data-wiki-id="administration:security:content_security_policy">content security policy</a> support and the <a href="/wiki/administration:performance#asset_pipeline" class="wikilink1" title="administration:performance" data-wiki-id="administration:performance">asset pipeline</a> 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 <a href="https://github.com/vufind-org/vufind/pull/1719" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1719" rel="ugc nofollow">pull request #1719</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> </ul> </div> <h2 class="sectionedit25" id="release_701_-_8_31_2020">Release 7.0.1 - 8/31/2020</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> Includes updates to several dependencies (Laminas components, etc.).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> To fix problems related to IP detection behind a proxy, the allow_forwarded_ips and forwarded_ip_filter settings have been added to config.ini. If you run VuFind behind a proxy and rely on IP detection, you should review these settings (and the related <a href="/wiki/administration:security#proxies_and_ip_authentication" class="wikilink1" title="administration:security" data-wiki-id="administration:security">security wiki page</a>) carefully. Some constructor signatures have changed to support this functionality, but backward compatibility breaks are unlikely; see <a href="https://github.com/vufind-org/vufind/pull/1681" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1681" rel="ugc nofollow">pull request #1681</a>, <a href="https://github.com/vufind-org/vufind/pull/1682" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1682" rel="ugc nofollow">#1682</a> and <a href="https://github.com/vufind-org/vufind/pull/1687" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1687" rel="ugc nofollow">#1687</a> for details.</div> </li> </ul> </div> <h2 class="sectionedit26" id="release_70_-_7_20_2020">Release 7.0 - 7/20/2020</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> <a href="/wiki/configuration:static_pages" class="wikilink1" title="configuration:static_pages" data-wiki-id="configuration:static_pages">Static pages</a> can now be built using Markdown as well as PHP templates.</div> </li> <li class="level1"><div class="li"> New <a href="https://vufind.org/wiki/development:plugins:contentblocks" class="urlextern" title="https://vufind.org/wiki/development:plugins:contentblocks" rel="ugc nofollow">Content Block plugin</a>: TemplateBased, which allows you to embed a template that will behave similarly to a <a href="/wiki/configuration:static_pages" class="wikilink1" title="configuration:static_pages" data-wiki-id="configuration:static_pages">static pages</a> in terms of supporting internationalization, Markdown, etc.</div> </li> <li class="level1"><div class="li"> VuFind now supports configurable <a href="/wiki/administration:security:content_security_policy" class="wikilink1" title="administration:security:content_security_policy" data-wiki-id="administration:security:content_security_policy">Content Security Policy</a> 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.</div> </li> <li class="level1"><div class="li"> VuFind now supports <a href="/wiki/development:plugins:captcha_handlers" class="wikilink1" title="development:plugins:captcha_handlers" data-wiki-id="development:plugins:captcha_handlers">CAPTCHA plug-ins</a>, maintaining the pre-existing ReCaptcha support while making it possible to use alternative mechanisms for blocking automated agents. See <a href="https://github.com/vufind-org/vufind/pull/1574" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1574" rel="ugc nofollow">pull request #1574</a> for additional details.</div> </li> <li class="level1"><div class="li"> ArchivesSpace integration (support for ingesting Dublin Core records harvested from ArchivesSpace over OAI-PMH; see <a href="https://github.com/vufind-org/vufind/pull/1623" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1623" rel="ugc nofollow">pull request #1623</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/natlibfi/koha-plugin-rest-di" class="urlextern" title="https://github.com/natlibfi/koha-plugin-rest-di" rel="ugc nofollow">koha-plugin-rest-di</a> plugin).</div> </li> <li class="level1"><div class="li"> When using the optional link shortener feature, you can now configure how shortlinks redirect to full URLs (<abbr title="HyperText Markup Language">HTML</abbr>-based, header-based, or conditional <abbr title="Uniform Resource Locator">URL</abbr>-length-based redirection). See <a href="https://github.com/vufind-org/vufind/pull/1533" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1533" rel="ugc nofollow">pull request #1533</a>.</div> </li> <li class="level1"><div class="li"> VuFind&#039;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.</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/development:plugins:view_helpers" class="wikilink1" title="development:plugins:view_helpers" data-wiki-id="development:plugins:view_helpers">view helpers</a> (“slot” and “parentTemplate” / “templatePath”) make it easier to extend and customize core templates. See <a href="https://github.com/vufind-org/vufind/pull/1454" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1454" rel="ugc nofollow">pull request #1454</a> and <a href="https://github.com/vufind-org/vufind/pull/1458" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1458" rel="ugc nofollow">pull request #1458</a> for details.</div> </li> <li class="level1"><div class="li"> Custom <a href="/wiki/configuration:feedback" class="wikilink1" title="configuration:feedback" data-wiki-id="configuration:feedback">Feedback Forms</a> now support help text both before and after form elements through new pre/post help configuration settings.</div> </li> <li class="level1"><div class="li"> Unpaywall DOI links now include both PDF and non-PDF resources (previously, only PDFs were linked).</div> </li> <li class="level1"><div class="li"> It is now possible to obtain links from multiple DOI handlers (either in sequence or merged together); see <a href="https://github.com/vufind-org/vufind/pull/1560" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1560" rel="ugc nofollow">pull request #1560</a>.</div> </li> <li class="level1"><div class="li"> You can now choose between extra-short and more private short links via the url_shortener_key_type setting in config.ini; see <a href="https://github.com/vufind-org/vufind/pull/1549" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1549" rel="ugc nofollow">pull request #1549</a> for details.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s <a href="/wiki/development:code_generators#creating_new_plugins" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">plugin generator</a> can now build controllers, controller plugins, and Symfony console commands.</div> </li> <li class="level1"><div class="li"> The NoILS driver can now extract data from more than one MARC field at a time (for displaying status/call number information). See <a href="https://github.com/vufind-org/vufind/pull/1622" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1622" rel="ugc nofollow">pull request #1622</a>.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s <a href="/wiki/development:apis" class="wikilink1" title="development:apis" data-wiki-id="development:apis">API</a> now offers access to the secondary Solr index configurable through Search2.ini as well as the website index.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1465" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1465" rel="ugc nofollow">pull request #1465</a> for details.</div> </li> <li class="level1"><div class="li"> The ObalkyKnih cover image provider is now supported as an <a href="/wiki/configuration:external_content" class="wikilink1" title="configuration:external_content" data-wiki-id="configuration:external_content">external content</a> source.</div> </li> <li class="level1"><div class="li"> In VuFind&#039;s browse module, the display order of browse options is now controlled by the order of configuration settings in the [Browse] section of <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s Mailer class now supports multi-part messages (though this capability is not being used in the core code yet). See <a href="https://github.com/vufind-org/vufind/pull/1610" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1610" rel="ugc nofollow">pull request #1610</a> for details.</div> </li> <li class="level1"><div class="li"> The util/scssBuilder command line utility has been added for users who wish to use SCSS instead of the default LESS for building VuFind&#039;s <abbr title="Cascading Style Sheets">CSS</abbr>.</div> </li> <li class="level1"><div class="li"> VuFind now sets the SameSite attribute on cookies for improved browser compatibility; see <a href="https://github.com/vufind-org/vufind/pull/1664" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1664" rel="ugc nofollow">pull request #1664</a>.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_70" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>); 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Solr schema has changed to remove the deprecated recordtype field, so records should be reindexed after an upgrade. See the <a href="/wiki/development:architecture:solr_index_schema#changelog" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind now requires PHP 7.2 or newer; please ensure you have a compatible version installed before upgrading.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1537/" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1537/" rel="ugc nofollow">pull request #1537</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Laminas\Console component has been deprecated, so all command line tools have been migrated to use Symfony\Console instead; see <a href="https://github.com/vufind-org/vufind/pull/1571" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1571" rel="ugc nofollow">pull request #1571</a> and the <a href="https://blog.library.villanova.edu/2020/04/23/vufind-moving-from-laminasconsole-to-symfonyconsole/" class="urlextern" title="https://blog.library.villanova.edu/2020/04/23/vufind-moving-from-laminasconsole-to-symfonyconsole/" rel="ugc nofollow">console migration blog post</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1657" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1657" rel="ugc nofollow">pull request #1657</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;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 <a href="/wiki/administration:security#changing_the_solr_port_number" class="wikilink1" title="administration:security" data-wiki-id="administration:security">changed back</a> as needed.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> As noted above, you are strongly encouraged to configure a <a href="/wiki/administration:security:content_security_policy" class="wikilink1" title="administration:security:content_security_policy" data-wiki-id="administration:security:content_security_policy">content security policy</a> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1574" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1574" rel="ugc nofollow">pull request #1574</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1574" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1574" rel="ugc nofollow">pull request #1574</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;s session handler code has been significantly refactored to improve extensibility and testability; see <a href="https://github.com/vufind-org/vufind/pull/1506" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1506" rel="ugc nofollow">pull request #1506</a> for details. If you have built a custom session handler, it will likely need to be adjusted; otherwise, this should not impact you.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1454" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1454" rel="ugc nofollow">pull request #1454</a> details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The record/cover.phtml template has been moved to RecordDriver/DefaultRecord/cover.phtml, so that cover thumbnail rendering is now record-driver-specific. See <a href="https://github.com/vufind-org/vufind/pull/1566" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1566" rel="ugc nofollow">pull request #1566</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://vufind.org/jira" class="urlextern" title="https://vufind.org/jira" rel="ugc nofollow">JIRA</a> ticket.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Search\Base\Params::getFilters() method, which was deprecated in release 6.1 (see <a href="https://github.com/vufind-org/vufind/pull/1489" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1489" rel="ugc nofollow">pull request #1489</a>), has now been completely removed; use \VuFind\Search\Base\Params::getRawFilters() instead.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1600" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1600" rel="ugc nofollow">pull request #1600</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1546" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1546" rel="ugc nofollow">pull request #1546</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1486" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1486" rel="ugc nofollow">pull request #1486</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The way feedback forms do text translation has been refactored; if you have customized this code, you may need to adjust to match. See <a href="https://github.com/vufind-org/vufind/pull/1565" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1565" rel="ugc nofollow">pull request #1565</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1663" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1663" rel="ugc nofollow">pull request #1663</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Javascript cookie management library used by the book bag feature has been replaced with something more up-to-date; see <a href="https://github.com/vufind-org/vufind/pull/1673" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1673" rel="ugc nofollow">pull request #1673</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1568/files" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1568/files" rel="ugc nofollow">pull request #1568</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The SierraRest ILS driver now defaults to <abbr title="Application Programming Interface">API</abbr> version 5 instead of <abbr title="Application Programming Interface">API</abbr> version 3 to reflect deprecations in the Sierra platform. See <a href="https://github.com/vufind-org/vufind/pull/1659" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1659" rel="ugc nofollow">pull request #1659</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some internals of the Primo Central integration have changed slightly; see <a href="https://github.com/vufind-org/vufind/pull/1653" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1653" rel="ugc nofollow">pull request #1653</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1671" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1671" rel="ugc nofollow">pull request #1671</a> for details.</div> </li> <li class="level1"><div class="li"> The EBSCO Discovery Service integration now uses POST instead of GET for search <abbr title="Application Programming Interface">API</abbr> requests; the legacy GET behavior can still be accessed through an EDS.ini setting. See <a href="https://github.com/vufind-org/vufind/pull/1627" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1627" rel="ugc nofollow">pull request #1627</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/46e10504b90da88d0b4673a085b19941088f23b4" class="urlextern" title="https://github.com/vufind-org/vufind/commit/46e10504b90da88d0b4673a085b19941088f23b4" rel="ugc nofollow">this commit</a> for details.</div> </li> </ul> <p> <a href="/wiki/changelog:release-7.0" class="wikilink1" title="changelog:release-7.0" data-wiki-id="changelog:release-7.0">Press Release</a> </p> </div> <h2 class="sectionedit27" id="release_612_-_7_13_2020">Release 6.1.2 - 7/13/2020</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / improved accessibility release.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Note: when using this release, you may see a warning about MySQL SSL configuration while indexing MARC records; this is a side effect of improved MySQL 8 compatibility, but it is harmless. MySQL SSL configuration will be addressed in more detail in a future release; see <a href="https://vufind.org/jira/browse/VUFIND-1395" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1395" rel="ugc nofollow">VUFIND-1395</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Because of accessibility improvements/fixes, there are some LESS/<abbr title="Cascading Style Sheets">CSS</abbr> and template changes in this release; you should review custom themes in case they are impacted.</div> </li> </ul> </div> <h2 class="sectionedit28" id="release_611_-_3_16_2020">Release 6.1.1 - 3/16/2020</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / improved accessibility release.</div> </li> </ul> </div> <h2 class="sectionedit29" id="release_61_-_2_3_2020">Release 6.1 - 2/3/2020</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> An optional <a href="/wiki/configuration:email_alerts" class="wikilink1" title="configuration:email_alerts" data-wiki-id="configuration:email_alerts">Email Alerts</a> feature can be enabled to allow users to subscribe to saved searches in order to be notified about new search results.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:combining_search_types#multi-column_search" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">Combined Multi-Column Search</a> now optionally supports search types (author, title, subject, etc.).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1401" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1401" rel="ugc nofollow">pull request #1401</a> for details).</div> </li> <li class="level1"><div class="li"> The filter interface changes introduced in release 6.0 have been further improved, making the user experience more consistent.</div> </li> <li class="level1"><div class="li"> Added “Email” authentication method to allow login by receiving a link in an email (see <a href="https://github.com/vufind-org/vufind/pull/1409" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1409" rel="ugc nofollow">pull request #1409</a> and <a href="https://github.com/vufind-org/vufind/pull/1520" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1520" rel="ugc nofollow">pull request #1520</a>).</div> </li> <li class="level1"><div class="li"> Added “PasswordAccess” authentication method to allow login using a single credential rather than a username/password combination (see <a href="https://github.com/vufind-org/vufind/pull/1394" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1394" rel="ugc nofollow">pull request #1394</a>).</div> </li> <li class="level1"><div class="li"> Added “RecommendLinks” recommendation module, offering a simple mechanism for displaying a static link list.</div> </li> <li class="level1"><div class="li"> You can now embed meta tags for Google Scholar and other services by configuring metadata.ini (see <a href="https://github.com/vufind-org/vufind/pull/1529" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1529" rel="ugc nofollow">pull request #1529</a> for details).</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1395" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1395" rel="ugc nofollow">pull request #1395</a> for details.</div> </li> <li class="level1"><div class="li"> Improved support for running VuFind behind a reverse proxy (such as Apache&#039;s mod_proxy); see <a href="https://github.com/vufind-org/vufind/pull/1429" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1429" rel="ugc nofollow">pull request #1429</a> for details.</div> </li> <li class="level1"><div class="li"> Added a <a href="/wiki/development:plugins:doi_linkers" class="wikilink1" title="development:plugins:doi_linkers" data-wiki-id="development:plugins:doi_linkers">DOI Linker</a> plugin for <a href="https://unpaywall.org/" class="urlextern" title="https://unpaywall.org/" rel="ugc nofollow">Unpaywall</a>.</div> </li> <li class="level1"><div class="li"> Added support for storing VuFind sessions in <a href="https://redis.io/" class="urlextern" title="https://redis.io/" rel="ugc nofollow">Redis</a>.</div> </li> <li class="level1"><div class="li"> Hierarchical <a href="/wiki/configuration:facets" class="wikilink1" title="configuration:facets" data-wiki-id="configuration:facets">facets</a> sort options can now be configured independently for search results, home page listings and advanced search options; see <a href="https://github.com/vufind-org/vufind/pull/1389" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1389" rel="ugc nofollow">pull request #1389</a>.</div> </li> <li class="level1"><div class="li"> Various Alma ILS driver improvements (including the ability to use Alma as an <a href="/wiki/configuration:openurls" class="wikilink1" title="configuration:openurls" data-wiki-id="configuration:openurls">OpenURL</a> resolver).</div> </li> <li class="level1"><div class="li"> ILS drivers can now differentiate between electronic and physical holdings (see the <a href="/wiki/development:plugins:ils_drivers#getholding" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">getHolding</a> driver method documentation for details). This is currently supported by the Alma driver.</div> </li> <li class="level1"><div class="li"> The Solr search configuration in <a href="/wiki/configuration:search_customization" class="wikilink1" title="configuration:search_customization" data-wiki-id="configuration:search_customization">searchspecs.yaml</a> now supports munge rules for Dismax queries (see <a href="https://github.com/vufind-org/vufind/pull/1419" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1419" rel="ugc nofollow">pull request #1419</a>).</div> </li> <li class="level1"><div class="li"> Upgraded to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 3.3, fixing some bugs and adding some new syntax features.</div> </li> <li class="level1"><div class="li"> The OAI-PMH Server now supports a new “delete_lifetime” setting to expire old deleted records, preventing them from slowing down harvests (see <a href="https://github.com/vufind-org/vufind/pull/1496" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1496" rel="ugc nofollow">pull request #1496</a>).</div> </li> <li class="level1"><div class="li"> Added Croatian and Hindi language support to the user interface.</div> </li> <li class="level1"><div class="li"> Added support for ISMNs (International Standard Music Numbers) and National Bibliography Numbers to the cover image loader (see <a href="https://github.com/vufind-org/vufind/pull/1451" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1451" rel="ugc nofollow">pull request #1451</a>).</div> </li> <li class="level1"><div class="li"> Introduced the <a href="https://github.com/wikimedia/composer-merge-plugin" class="urlextern" title="https://github.com/wikimedia/composer-merge-plugin" rel="ugc nofollow">Wikimedia Composer Merge Plugin</a> to help developers add dependencies to local VuFind instances more easily. This has no impact on end users; see <a href="https://github.com/vufind-org/vufind/pull/1425" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1425" rel="ugc nofollow">pull request #1425</a> for more details.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s controllers and controller plugins now respect the same “-aware” interfaces as other VuFind plugins, making it possible to auto-inject loggers, etc. (see <a href="https://github.com/vufind-org/vufind/pull/1441" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1441" rel="ugc nofollow">pull request #1441</a>).</div> </li> <li class="level1"><div class="li"> The “Search2” secondary Solr backend (see <a href="/wiki/configuration:combining_search_types" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">Combining Search Types</a>) is now fully compatible with <a href="/wiki/indexing:hierarchies_and_collections" class="wikilink1" title="indexing:hierarchies_and_collections" data-wiki-id="indexing:hierarchies_and_collections">Hierarchies and Collections</a>; see <a href="https://github.com/vufind-org/vufind/pull/1478" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1478" rel="ugc nofollow">pull request #1478</a>.</div> </li> <li class="level1"><div class="li"> Support for profiling (a tool for developers) has been updated; see <a href="https://github.com/vufind-org/vufind/pull/1487" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1487" rel="ugc nofollow">pull request #1487</a>.</div> </li> <li class="level1"><div class="li"> Improved PHP 7.3 and 7.4 compatibility.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_61" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1409" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1409" rel="ugc nofollow">pull request #1409</a> to be sure you are not impacted by it.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1482" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1482" rel="ugc nofollow">pull request #1482</a>, <a href="https://github.com/vufind-org/vufind/pull/1499" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1499" rel="ugc nofollow">pull request #1499</a> and <a href="https://github.com/vufind-org/vufind/pull/1500" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1500" rel="ugc nofollow">pull request #1500</a> (plus this subsequent <a href="https://github.com/vufind-org/vufind/commit/1be2ac19500da9c5491087e41e4d98d0895aa0ff" class="urlextern" title="https://github.com/vufind-org/vufind/commit/1be2ac19500da9c5491087e41e4d98d0895aa0ff" rel="ugc nofollow">bug fix commit</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Low-level filtering/validation of parameters was introduced by <a href="https://github.com/vufind-org/vufind/pull/1518" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1518" rel="ugc nofollow">pull request #1518</a>. This should have no impact on normal activity within the system, but if you encounter unexpected parameter processing behavior, you should investigate these changes.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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&#039;s .ini file, you should move the setting – see <a href="https://github.com/vufind-org/vufind/pull/1463" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1463" rel="ugc nofollow">PR #1463</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1534" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1534" rel="ugc nofollow">pull request #1534</a>). If you have extended the class and added values to this property, you may need to make adjustments to avoid double translation.</div> </li> <li class="level1"><div class="li"> Some minor improvements have been made to item status display logic; if you notice an unexpected change in behavior, see <a href="https://github.com/vufind-org/vufind/pull/1466" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1466" rel="ugc nofollow">pull request #1466</a> for details.</div> </li> <li class="level1"><div class="li"> Some changes to record collection creation have been made for performance reasons, but they should not change behavior; see <a href="https://github.com/vufind-org/vufind/pull/1488" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1488" rel="ugc nofollow">#1488</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1393" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1393" rel="ugc nofollow">pull request #1393</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1395" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1395" rel="ugc nofollow">pull request #1395</a>. 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.</div> </li> <li class="level1"><div class="li"> Also related to <a href="https://github.com/vufind-org/vufind/pull/1395" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1395" rel="ugc nofollow">pull request #1395</a>: 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1405" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1405" rel="ugc nofollow">pull request #1405</a>.</div> </li> <li class="level1"><div class="li"> The HierarchicalFacetHelper::sortFacetList method&#039;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 <a href="https://github.com/vufind-org/vufind/pull/1389" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1389" rel="ugc nofollow">pull request #1389</a>.</div> </li> <li class="level1"><div class="li"> The way the VuFind theme system overrides Zend Framework functionality has been simplified significantly (see <a href="https://github.com/vufind-org/vufind/pull/1436" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1436" rel="ugc nofollow">pull request #1436</a>), but there should be no functional differences.</div> </li> </ul> <p> <a href="/wiki/changelog:release-6.1" class="wikilink1" title="changelog:release-6.1" data-wiki-id="changelog:release-6.1">Press Release</a> </p> </div> <h2 class="sectionedit30" id="release_601_-_9_16_2019">Release 6.0.1 - 9/16/2019</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> Includes some minor security improvements.</div> </li> </ul> </div> <h2 class="sectionedit31" id="release_60_-_7_15_2019">Release 6.0 - 7/15/2019</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Optional integration with the third-party <a href="/wiki/configuration:overdrive" class="wikilink1" title="configuration:overdrive" data-wiki-id="configuration:overdrive">Overdrive</a> eBook service.</div> </li> <li class="level1"><div class="li"> Introduction of an optional (off by default) mechanism to shorten links shared in text messages and emails (see <a href="https://github.com/vufind-org/vufind/pull/1372" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1372" rel="ugc nofollow">pull request #1372</a>).</div> </li> <li class="level1"><div class="li"> Minor improvements to the custom feedback form feature (support for new input elements, better translation, etc.).</div> </li> <li class="level1"><div class="li"> Minor improvements to the OAI-PMH server (including better performance and the new default_query, page_size and record_format_filters settings).</div> </li> <li class="level1"><div class="li"> Improved format determination for MARC records (see <a href="https://github.com/vufind-org/vufind/pull/1209" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1209" rel="ugc nofollow">pull request #1209</a>).</div> </li> <li class="level1"><div class="li"> Improved compatibility with MySQL 8 (though legacy authentication mode / default_authentication_plugin=mysql_native_password is required).</div> </li> <li class="level1"><div class="li"> Users can now be optionally required to verify their email addresses when registering for accounts in VuFind&#039;s internal user database. (This is disabled by default – see <a href="https://github.com/vufind-org/vufind/pull/1354" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1354" rel="ugc nofollow">pull request #1354</a>).</div> </li> <li class="level1"><div class="li"> New settings have been added to searchbox.ini to support optgroup grouping in the <a href="/wiki/configuration:combining_search_types#combined_search_handler_drop-downs" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">combined search handler</a> drop down menu.</div> </li> <li class="level1"><div class="li"> Added a new “ComponentParts” tab to the record view (disabled by default), which can be enabled in combination with <a href="/wiki/indexing:hierarchies_and_collections#simple_links_between_containers_and_child_records" class="wikilink1" title="indexing:hierarchies_and_collections" data-wiki-id="indexing:hierarchies_and_collections">simple container linking</a> to display whole/part relationships in more detail. See <a href="https://github.com/vufind-org/vufind/pull/1339" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1339" rel="ugc nofollow">pull request #1339</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1385" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1385" rel="ugc nofollow">pull request #1385</a> for details.</div> </li> <li class="level1"><div class="li"> An example of batch-loading XML records from OJS is now included (see <a href="https://github.com/vufind-org/vufind/pull/1352" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1352" rel="ugc nofollow">pull request #1352</a>).</div> </li> <li class="level1"><div class="li"> Significant improvements (and new configuration settings) for the Alma and SierraRest ILS drivers.</div> </li> <li class="level1"><div class="li"> Addition of simple “lint_marc” <a href="/wiki/administration:command_line_utilities" class="wikilink1" title="administration:command_line_utilities" data-wiki-id="administration:command_line_utilities">command line utility</a> for detecting errors in MARC files.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1347" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1347" rel="ugc nofollow">pull request #1347</a>).</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind now requires PHP 7.1 or newer; make sure your server can support this before upgrading!</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Solr schema has changed, so records must be reindexed after an upgrade. See the <a href="/wiki/development:architecture:solr_index_schema#changelog" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_60" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1265" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1265" rel="ugc nofollow">pull request #1265</a> and <a href="https://github.com/vufind-org/vufind/pull/1377" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1377" rel="ugc nofollow">pull request #1377</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1291" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1291" rel="ugc nofollow">pull request #1291</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1370" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1370" rel="ugc nofollow">pull request #1370</a>. If you have any custom tab configurations, you should move them out of your local module&#039;s configuration and into a local copy of RecordTabs.ini.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1358" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1358" rel="ugc nofollow">pull request #1358</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Several methods deprecated in earlier releases have been removed; see <a href="https://github.com/vufind-org/vufind/pull/1314" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1314" rel="ugc nofollow">pull request #1314</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1237" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1237" rel="ugc nofollow">pull request #1237</a> and <a href="https://github.com/vufind-org/vufind/pull/1356" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1356" rel="ugc nofollow">pull request #1356</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> As noted above, <a href="https://github.com/vufind-org/vufind/pull/1209" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1209" rel="ugc nofollow">pull request #1209</a> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signature of the VuFind\Record\Router has changed, because it no longer depends upon the VuFind\Record\Loader (see <a href="https://github.com/vufind-org/vufind/pull/1364" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1364" rel="ugc nofollow">pull request #1364</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1379" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1379" rel="ugc nofollow">pull request #1379</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1391" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1391" rel="ugc nofollow">pull request #1391</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1349" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1349" rel="ugc nofollow">pull request #1349</a> for details.</div> </li> <li class="level1"><div class="li"> All static factory methods have been replaced with standard reusable Zend Framework factory classes. This shouldn&#039;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.</div> </li> <li class="level1"><div class="li"> The &#039;suppressDisplay&#039; 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 <a href="https://github.com/vufind-org/vufind/commit/6e31f471349eff2853f5ed15a3e4ec6a67cdb25b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/6e31f471349eff2853f5ed15a3e4ec6a67cdb25b" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> The &#039;vufindrecord&#039; route definition has been removed (see <a href="https://github.com/vufind-org/vufind/commit/7db90be10938005e3bf069722e62d7f420e81408" class="urlextern" title="https://github.com/vufind-org/vufind/commit/7db90be10938005e3bf069722e62d7f420e81408" rel="ugc nofollow">this commit</a>); this was intended for legacy compatibility after standardizing the name of the default record source from &#039;VuFind&#039; to &#039;Solr&#039; in release 3.0 and is very unlikely to still be needed in correctly upgraded instances.</div> </li> </ul> <p> <a href="/wiki/changelog:release-6-0" class="wikilink1" title="changelog:release-6-0" data-wiki-id="changelog:release-6-0">Press Release</a> </p> </div> <h2 class="sectionedit32" id="release_511_-_5_6_2019">Release 5.1.1 - 5/6/2019</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/translation improvement release.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1316" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1316" rel="ugc nofollow">pull request #1316</a> for details.</div> </li> <li class="level1"><div class="li"> SolrMarc full text indexing has been adjusted to prevent a crash caused by newer versions of Tika; see <a href="https://vufind.org/jira/browse/VUFIND-1330" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1330" rel="ugc nofollow">VUFIND-1330</a>.</div> </li> <li class="level1"><div class="li"> Some problems with the new AJAX account information feature from 5.1 have been corrected; if you are using this new feature, please upgrade.</div> </li> </ul> </div> <h2 class="sectionedit33" id="release_51_-_2_4_2019">Release 5.1 - 2/4/2019</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/966" class="urlextern" title="https://github.com/vufind-org/vufind/pull/966" rel="ugc nofollow">#966</a> for implementation details).</div> </li> <li class="level1"><div class="li"> New “SideFacetsDeferred” option to load facet data asynchronously, which may improve performance in some environments (off by default; see <a href="https://github.com/vufind-org/vufind/pull/1246" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1246" rel="ugc nofollow">pull request #1246</a> for details).</div> </li> <li class="level1"><div class="li"> <a href="/wiki/development:plugins:ils_drivers" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">ILS drivers</a> can now report “last pickup” dates for holds (currently supported by SierraRest driver).</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/development:plugins:doi_linkers" class="wikilink1" title="development:plugins:doi_linkers" data-wiki-id="development:plugins:doi_linkers">DOI Linker</a> plugin interface for providing full text links and contextual information based on record DOIs; currently implemented using the <a href="https://thirdiron.com/products/browzine/" class="urlextern" title="https://thirdiron.com/products/browzine/" rel="ugc nofollow">BrowZine</a> service. See <a href="https://github.com/vufind-org/vufind/commit/a595b80d64708f8b3bbb1bedf0ee58cc0a411c90" class="urlextern" title="https://github.com/vufind-org/vufind/commit/a595b80d64708f8b3bbb1bedf0ee58cc0a411c90" rel="ugc nofollow">this commit</a> and <a href="https://github.com/vufind-org/vufind/commit/b7f0864c757a3d26e96c84a119a2410ef5bd5357" class="urlextern" title="https://github.com/vufind-org/vufind/commit/b7f0864c757a3d26e96c84a119a2410ef5bd5357" rel="ugc nofollow">this commit</a> for more details.</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/configuration:feedback" class="wikilink1" title="configuration:feedback" data-wiki-id="configuration:feedback">Configurable Feedback Forms</a>, greatly extending the existing feedback functionality.</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/development:code_generators#creating_new_plugins" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">Plugin Code Generator</a> to automatically create and configure custom VuFind <a href="/wiki/development:plugins" class="wikilink1" title="development:plugins" data-wiki-id="development:plugins">plugins</a>; see also <a href="https://github.com/vufind-org/vufind/pull/1247" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1247" rel="ugc nofollow">pull request #1247</a>.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s OAI-PMH server now supports an oai_vufind_json metadata format which allows harvesting of JSON objects formatted using VuFind&#039;s <abbr title="Application Programming Interface">API</abbr> configuration. This is disabled by default but can be turned on using the vufind_api_format_fields setting in config.ini. See <a href="https://github.com/vufind-org/vufind/pull/1241" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1241" rel="ugc nofollow">pull request #1241</a> for details.</div> </li> <li class="level1"><div class="li"> An experimental, proof-of-concept <a href="https://www.folio.org/" class="urlextern" title="https://www.folio.org/" rel="ugc nofollow">FOLIO</a> 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.</div> </li> <li class="level1"><div class="li"> VuFind now deals more gracefully with changes to Summon record IDs (a normal side effect of reindexing on the Summon side).</div> </li> <li class="level1"><div class="li"> Added <a href="/wiki/development:plugins:content_provider_components#covers" class="wikilink1" title="development:plugins:content_provider_components" data-wiki-id="development:plugins:content_provider_components">cover image loader plugin</a> using <a href="https://thirdiron.com/academic/" class="urlextern" title="https://thirdiron.com/academic/" rel="ugc nofollow">BrowZine</a> service to fill in cover images based on ISSN when enabled.</div> </li> <li class="level1"><div class="li"> Added example configurations for importing DSpace <a href="https://wiki.duraspace.org/display/DSPACE/DSpaceIntermediateMetadata" class="urlextern" title="https://wiki.duraspace.org/display/DSPACE/DSpaceIntermediateMetadata" rel="ugc nofollow">DIM</a> metadata (see <a href="https://github.com/vufind-org/vufind/pull/1238" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1238" rel="ugc nofollow">pull request #1238</a>).</div> </li> <li class="level1"><div class="li"> Added Vietnamese language support to the user interface.</div> </li> <li class="level1"><div class="li"> Upgraded to SolrMarc 3.2 (improves Java 9/10 compatibility).</div> </li> <li class="level1"><div class="li"> Upgraded to Bootstrap 3.4.0 (fixes some minor problems).</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_51" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some facet-related templates and Javascript functions have been moved around and adjusted for greater flexibility. (See, for example, <a href="https://github.com/vufind-org/vufind/commit/f16529a57da6d29432acf3f415133f7d4c212cb9" class="urlextern" title="https://github.com/vufind-org/vufind/commit/f16529a57da6d29432acf3f415133f7d4c212cb9" rel="ugc nofollow">this commit</a> and <a href="https://github.com/vufind-org/vufind/pull/1246" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1246" rel="ugc nofollow">pull request #1246</a>). If you have customized the SideFacets recommendation module, some adjustments may be needed.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/999" class="urlextern" title="https://github.com/vufind-org/vufind/pull/999" rel="ugc nofollow">PR #999</a>). This may impact custom templates and <abbr title="Cascading Style Sheets">CSS</abbr> if you have made significant layout customizations.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/52b92fcff9ed8de1d9eee46d07cee58b2ae03e8f" class="urlextern" title="https://github.com/vufind-org/vufind/commit/52b92fcff9ed8de1d9eee46d07cee58b2ae03e8f" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1243" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1243" rel="ugc nofollow">pull request #1243</a> for more details.</div> </li> <li class="level1"><div class="li"> The MyResearch/Fines display&#039;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 <a href="https://github.com/vufind-org/vufind/pull/1251" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1251" rel="ugc nofollow">pull request #1251</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-5-1" class="wikilink1" title="changelog:release-5-1" data-wiki-id="changelog:release-5-1">Press Release</a> </p> </div> <h2 class="sectionedit34" id="release_501_-_10_10_2018">Release 5.0.1 - 10/10/2018</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> </ul> </div> <h2 class="sectionedit35" id="release_50_-_7_16_2018">Release 5.0 - 7/16/2018</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Users can view their circulation history in “My Account” (when supported by the ILS and enabled in the configuration). This is disabled by default for privacy reasons. See <a href="https://github.com/vufind-org/vufind/pull/1031" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1031" rel="ugc nofollow">pull request #1031</a> and <a href="/wiki/development:plugins:ils_drivers#getmytransactionhistory" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">getMyTransactionHistory</a> in the ILS driver <abbr title="specification">spec</abbr> for implementation details.</div> </li> <li class="level1"><div class="li"> Users may now delete their own accounts through the “Profile” page (when the new account_deletion setting is turned on; this is disabled by default). See <a href="https://github.com/vufind-org/vufind/pull/1105" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1105" rel="ugc nofollow">pull request #1105</a> for details.</div> </li> <li class="level1"><div class="li"> User session data may now be encrypted by turning on the secure setting in the [Session] section of config.ini (see <a href="https://github.com/vufind-org/vufind/pull/1200" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1200" rel="ugc nofollow">pull request #1200</a>).</div> </li> <li class="level1"><div class="li"> Last login date and method are now stored in the database to assist with user management.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/configuration:channels" class="wikilink1" title="configuration:channels" data-wiki-id="configuration:channels">Channels</a> interface has been significantly improved, with bug fixes and a more streamlined look and feel.</div> </li> <li class="level1"><div class="li"> New ILS-driven <a href="/wiki/development:plugins:channel_providers" class="wikilink1" title="development:plugins:channel_providers" data-wiki-id="development:plugins:channel_providers">channel providers</a>: new items, recently returned items, trending items.</div> </li> <li class="level1"><div class="li"> The content of the search home page (facet lists, ILS status warnings, etc.) is now much more configurable and easier to customize through the introduction of a new <a href="/wiki/development:plugins:contentblocks" class="wikilink1" title="development:plugins:contentblocks" data-wiki-id="development:plugins:contentblocks">Content Block</a> plugin mechanism.</div> </li> <li class="level1"><div class="li"> Geographic functionality now uses <a href="http://leafletjs.com/" class="urlextern" title="http://leafletjs.com/" rel="ugc nofollow">Leaflet</a> instead of <a href="https://openlayers.org/" class="urlextern" title="https://openlayers.org/" rel="ugc nofollow">OpenLayers</a> and has some richer functionality, including better representation of search results and the ability to choose custom base maps.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/configuration:ils:alma" class="wikilink1" title="configuration:ils:alma" data-wiki-id="configuration:ils:alma">Ex Libris Alma</a> ILS is now supported.</div> </li> <li class="level1"><div class="li"> The new “Search2” backend allows a second Solr index to be configured in VuFind through a new Search2.ini file. This is useful for connecting to a third-party Solr index or for managing two separate indexes in a <a href="/wiki/configuration:combining_search_types" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">combined search</a> scenario.</div> </li> <li class="level1"><div class="li"> Support for <a href="http://www.relais-intl.com/" class="urlextern" title="http://www.relais-intl.com/" rel="ugc nofollow">Relais</a> interlibrary borrowing (see <a href="https://github.com/vufind-org/vufind/pull/1137" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1137" rel="ugc nofollow">pull request #1137</a>).</div> </li> <li class="level1"><div class="li"> Support for loading summaries and tables of contents from Syndetics. See <a href="https://github.com/vufind-org/vufind/pull/456" class="urlextern" title="https://github.com/vufind-org/vufind/pull/456" rel="ugc nofollow">pull request #456</a> for details.</div> </li> <li class="level1"><div class="li"> A new <a href="/wiki/development:code_generators#overriding_existing_plugins_and_services_vufind_50_and_later" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">&#039;extendclass&#039; generator</a> has been added, making it easier than ever to override services and plugins in your custom module.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">RecordDataFormatter</a> view helper now supports a new &#039;Multi&#039; renderType which offers new options for customizing record displays of complex data.</div> </li> <li class="level1"><div class="li"> The AuthorityRecommend module now returns more complete suggestions (see <a href="https://github.com/vufind-org/vufind/pull/1166" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1166" rel="ugc nofollow">pull request #1166</a>).</div> </li> <li class="level1"><div class="li"> Hierarchical collections now support advanced facet features consistent with other modules of VuFind (see <a href="https://github.com/vufind-org/vufind/pull/1040" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1040" rel="ugc nofollow">pull request #1040</a>).</div> </li> <li class="level1"><div class="li"> Upgraded to Solr 7.3.1.</div> </li> <li class="level1"><div class="li"> Upgraded to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 3.1.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The minimum required PHP version has been raised to 7.0.8; make sure you are running an up-to-date version before upgrading.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="/wiki/development:architecture:authority_control" class="wikilink1" title="development:architecture:authority_control" data-wiki-id="development:architecture:authority_control">authority Solr schema</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The new Solr version may issue a warning about operating system limits; see <a href="/wiki/administration:starting_and_stopping_solr" class="wikilink1" title="administration:starting_and_stopping_solr" data-wiki-id="administration:starting_and_stopping_solr">Starting and Stopping Solr</a> for some notes on how to configure around these warnings.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect table changes (see also the <a href="/wiki/development:architecture:database_schema#release_50" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some changes have been made to support the upgrade to Zend Framework&#039;s Service Manager v3.</div> <ul> <li class="level2"><div class="li"> Because the new ServiceManager has case-sensitive service names, the way VuFind retrieves most services has changed significantly. See the <a href="/wiki/installation:migration_notes:service_names" class="wikilink1" title="installation:migration_notes:service_names" data-wiki-id="installation:migration_notes:service_names">service name migration</a> page for details. If you have services overridden in a custom module, you will need to adjust your names to match.</div> </li> <li class="level2"><div class="li"> VuFind&#039;s static initializer methods in VuFind\ServiceManager\Initializer have been replaced with Initializer classes (see <a href="https://github.com/vufind-org/vufind/pull/1066" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1066" rel="ugc nofollow">pull request #1066</a>).</div> </li> <li class="level2"><div class="li"> 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.</div> </li> <li class="level2"><div class="li"> Many static factory methods have been replaced by factory classes for cleaner design.</div> </li> <li class="level2"><div class="li"> 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.</div> </li> <li class="level2"><div class="li"> Adding a setPluginManager method to a plugin no longer auto-injects the plugin manager; use a factory instead (see <a href="https://github.com/vufind-org/vufind/pull/1069" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1069" rel="ugc nofollow">pull request #1069</a>).</div> </li> <li class="level2"><div class="li"> A <a href="https://github.com/vufind-org/vufind/blob/dev/module/VuFind/src/VuFind/Search/BackendRegistry.php" class="urlextern" title="https://github.com/vufind-org/vufind/blob/dev/module/VuFind/src/VuFind/Search/BackendRegistry.php" rel="ugc nofollow">VuFind\Search\BackendRegistry</a> class has been added to replace the scoped service manager that was previously used (scoped service managers are no longer supported). See <a href="https://github.com/vufind-org/vufind/pull/1068" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1068" rel="ugc nofollow">pull request #1068</a>.</div> </li> <li class="level2"><div class="li"> The initialization of the ResultFeed view helper (used for building RSS feeds) has been adjusted (see <a href="https://github.com/vufind-org/vufind/pull/1072" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1072" rel="ugc nofollow">pull request #1072</a>).</div> </li> <li class="level2"><div class="li"> The getSuggestions() method has been moved from \VuFind\Autocomplete\PluginManager to a new \VuFind\Autocomplete\Suggester class for cleaner design.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1065" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1065" rel="ugc nofollow">this pull request</a> for details on the refactoring.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1215/files" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1215/files" rel="ugc nofollow">pull request #1215</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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&#039;s module.config.php. If you set up a new subclass using the extendclass code generator, this will be done for you automatically.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> It is now possible to build AJAX functionality as <a href="/wiki/development:plugins:ajax_handlers" class="wikilink1" title="development:plugins:ajax_handlers" data-wiki-id="development:plugins:ajax_handlers">AJAX Handler plugins</a>; the AjaxController has been refactored to use this new mechanism. See <a href="https://github.com/vufind-org/vufind/pull/1138" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1138" rel="ugc nofollow">pull request #1138</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/1189" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1189" rel="ugc nofollow">pull request #1189</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Templates for displaying lists of facet values have been refactored for clarity and consistency; local customizations may need to be adjusted.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> When enabled, the “change password” option is now a button on the user Profile page rather than an option in the account side menu.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;s templates now use full &lt;?php open tags instead of short &lt;? 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The HoldingsILS RecordTab template has been significantly refactored for greater flexibility; see <a href="https://github.com/vufind-org/vufind/pull/1100" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1100" rel="ugc nofollow">pull request #1100</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">RecordDataFormatter</a> view helper&#039;s getData method return value format has changed; see <a href="https://github.com/vufind-org/vufind/pull/1168" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1168" rel="ugc nofollow">pull request #1168</a> for details. Some custom templates may need to be adjusted to match.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The search/home.phtml template has been refactored into a collection of <a href="/wiki/development:plugins:contentblocks" class="wikilink1" title="development:plugins:contentblocks" data-wiki-id="development:plugins:contentblocks">Content Block</a> plugins. Custom home pages should be reimplemented using this mechanism.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Caching of facet values for home page / advanced search use has been completely refactored; see <a href="https://github.com/vufind-org/vufind/pull/1165" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1165" rel="ugc nofollow">pull request #1165</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Methods for activating facet configurations have been simplified by using smarter defaults, which may impact custom search Params objects; see <a href="https://github.com/vufind-org/vufind/pull/1198" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1198" rel="ugc nofollow">pull request #1198</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\Date\Converter class has been moved to a separate <a href="https://github.com/vufind-org/vufinddate/" class="urlextern" title="https://github.com/vufind-org/vufinddate/" rel="ugc nofollow">vufind-org/vufinddate</a> 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).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> RefWorks exports now use a POST form instead of a <abbr title="Uniform Resource Locator">URL</abbr> callback; you may wish to re-test your integration, especially if you use a custom RefWorks <abbr title="Uniform Resource Locator">URL</abbr> in config.ini.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The default RefWorks <abbr title="Uniform Resource Locator">URL</abbr> has been changed to use HTTPS instead of HTTP; if you have customized this, you may wish to adjust accordingly.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Two unused view helpers have been removed: jqueryValidation (see <a href="https://github.com/vufind-org/vufind/commit/06d4b3ed20c5e4072901b50b502b305dce79bbef" class="urlextern" title="https://github.com/vufind-org/vufind/commit/06d4b3ed20c5e4072901b50b502b305dce79bbef" rel="ugc nofollow">this commit</a>) and mobileUrl (see <a href="https://github.com/vufind-org/vufind/commit/2c0727a780bf81b76ffb89304241a10cb924601b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/2c0727a780bf81b76ffb89304241a10cb924601b" rel="ugc nofollow">this commit</a>). If your custom theme relies on these, you should either replace them or copy them into your local module.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The markup and styling for record tabs has been adjusted slightly for greater flexibility; adjustments may be needed if you have custom <abbr title="Cascading Style Sheets">CSS</abbr> or code in this area. See <a href="https://github.com/vufind-org/vufind/pull/1158" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1158" rel="ugc nofollow">PR #1158</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The ChannelsController has been significantly refactored to improve the quality of the channel loading code (see <a href="https://github.com/vufind-org/vufind/pull/1174" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1174" rel="ugc nofollow">PR #1174</a>). The front-end channels code has also been completely rewritten to leverage third-party code, improve look and feel, and fix several bugs (see <a href="https://github.com/vufind-org/vufind/pull/1190" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1190" rel="ugc nofollow">PR #1190</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Cover loading and generation has been significantly rewritten for better extensibility (see <a href="https://github.com/vufind-org/vufind/pull/1181" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1181" rel="ugc nofollow">pull request #1181</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> QR code generation has been significantly rewritten to use the endroid/qr-code library (see <a href="https://github.com/vufind-org/vufind/pull/1183" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1183" rel="ugc nofollow">pull request #1183</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The getRelated method has been removed from the record drivers; the logic is now part of the related view helper. See <a href="https://github.com/vufind-org/vufind/commit/dcf0b3722d8367976a599b0a22cf2c1318267023" class="urlextern" title="https://github.com/vufind-org/vufind/commit/dcf0b3722d8367976a599b0a22cf2c1318267023" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/daaa41100e8341d240589fa026592a5ffbaca440" class="urlextern" title="https://github.com/vufind-org/vufind/commit/daaa41100e8341d240589fa026592a5ffbaca440" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The ClaviusSQL ILS driver is no longer being maintained or used and has been removed; it is available in a <a href="https://github.com/vufind-org/vufind/tree/legacy/clavius" class="urlextern" title="https://github.com/vufind-org/vufind/tree/legacy/clavius" rel="ugc nofollow">legacy/clavius</a> branch on GitHub if anyone wishes to revive it.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1078" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1078" rel="ugc nofollow">pull request #1078</a> for details.</div> </li> <li class="level1"><div class="li"> Search history management has been refactored to a service, instead of being built into the SearchController; see <a href="https://github.com/vufind-org/vufind/pull/1018" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1018" rel="ugc nofollow">pull request #1018</a>.</div> </li> <li class="level1"><div class="li"> The $marcRecord property of the SolrMarc record driver (deprecated since release 2.5) has been completely removed; use getMarcRecord() instead.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/1145" class="urlextern" title="https://github.com/vufind-org/vufind/pull/1145" rel="ugc nofollow">pull request #1145</a> for details.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-5-0" class="wikilink1" title="changelog:release-5-0" data-wiki-id="changelog:release-5-0">Press Release</a> </p> </div> <h2 class="sectionedit36" id="release_413_-_6_11_2018">Release 4.1.3 - 6/11/2018</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/translation update release.</div> </li> <li class="level1"><div class="li"> Fixes PHP 7.2 compatibility issues.</div> </li> </ul> </div> <h2 class="sectionedit37" id="release_412_-_1_29_2018">Release 4.1.2 - 1/29/2018</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/security release.</div> </li> </ul> </div> <h2 class="sectionedit38" id="release_411_-_11_20_2017">Release 4.1.1 - 11/20/2017</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> </ul> </div> <h2 class="sectionedit39" id="release_41_-_10_2_2017">Release 4.1 - 10/2/2017</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Added support for searching <a href="http://thirdiron.com/" class="urlextern" title="http://thirdiron.com/" rel="ugc nofollow">BrowZine</a> from within VuFind; useful for adding a “Journals” column to a Combined search screen.</div> </li> <li class="level1"><div class="li"> New Alphabrowse <a href="/wiki/configuration:channels" class="wikilink1" title="configuration:channels" data-wiki-id="configuration:channels">channel</a> provider to allow a simple form of virtual shelf browsing.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/configuration:channels" class="wikilink1" title="configuration:channels" data-wiki-id="configuration:channels">Channels</a> home page may now be cached to improve performance (on by default; see channels.ini).</div> </li> <li class="level1"><div class="li"> Improvements to performance of the <a href="/wiki/administration:performance#asset_pipeline" class="wikilink1" title="administration:performance" data-wiki-id="administration:performance">asset pipeline</a>.</div> </li> <li class="level1"><div class="li"> Integration of the <a href="https://github.com/filp/whoops" class="urlextern" title="https://github.com/filp/whoops" rel="ugc nofollow">Whoops</a> error handler for more detailed debug information after unexpected exceptions (only active in development mode).</div> </li> <li class="level1"><div class="li"> More flexible configuration options for permission handling; you can now configure how denied permissions are managed in templates and controllers. See <a href="https://vufind.org/wiki/configuration:permission_options" class="urlextern" title="https://vufind.org/wiki/configuration:permission_options" rel="ugc nofollow">Permission Options</a> for documentation.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/indexing:alphabetical_heading_browse" class="wikilink1" title="indexing:alphabetical_heading_browse" data-wiki-id="indexing:alphabetical_heading_browse">Alphabetical browse</a> options can now be configured to be included in the default VuFind search options drop-down on every page. See the includeAlphaBrowse setting in <a href="https://github.com/vufind-org/vufind/blob/dev/config/vufind/searchbox.ini" class="urlextern" title="https://github.com/vufind-org/vufind/blob/dev/config/vufind/searchbox.ini" rel="ugc nofollow">searchbox.ini</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/development:architecture:user_interface#mix-ins" class="wikilink1" title="development:architecture:user_interface" data-wiki-id="development:architecture:user_interface">&quot;Mix-in&quot;</a> feature allowing discrete packages of templates and assets (JS/<abbr title="Cascading Style Sheets">CSS</abbr>/etc.) to be easily shared and incorporated into themes.</div> </li> <li class="level1"><div class="li"> Command line <a href="/wiki/administration:performance#theme_compiler" class="wikilink1" title="administration:performance" data-wiki-id="administration:performance">theme compiler</a> tool which can flatten a hierarchy of themes into a single theme for improved performance.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/development:code_generators#creating_themes" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">Theme generator</a> command line tool.</div> </li> <li class="level1"><div class="li"> New “SierraRest” ILS driver: an alternative to the existing Sierra driver that adds more functionality using the product&#039;s RESTful <abbr title="Application Programming Interface">API</abbr>.</div> </li> <li class="level1"><div class="li"> Default <a href="/wiki/installation:vagrant" class="wikilink1" title="installation:vagrant" data-wiki-id="installation:vagrant">Vagrant</a> configuration to offer a simple option for creating a development instance.</div> </li> <li class="level1"><div class="li"> Geographic feature improvements, including an improved drag-and-drop selection interface, an optional graticule setting, and an upgrade to <a href="https://openlayers.org/" class="urlextern" title="https://openlayers.org/" rel="ugc nofollow">OpenLayers</a> 4.2.0.</div> </li> <li class="level1"><div class="li"> Minor upgrades to several Zend Framework components; should not introduce any backward compatibility breaks.</div> </li> <li class="level1"><div class="li"> Added Galician translation (not yet 100% complete).</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/pull/950" class="urlextern" title="https://github.com/vufind-org/vufind/pull/950" rel="ugc nofollow">#950</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The Koha ILS driver now uses VuFind&#039;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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-4-1" class="wikilink1" title="changelog:release-4-1" data-wiki-id="changelog:release-4-1">Press Release</a> </p> </div> <h2 class="sectionedit40" id="release_401_-_8_28_2017">Release 4.0.1 - 8/28/2017</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / translation improvement release.</div> </li> </ul> </div> <h2 class="sectionedit41" id="release_40_-_7_10_2017">Release 4.0 - 7/10/2017</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> New serendipitous browsing module: the <a href="/wiki/configuration:channels" class="wikilink1" title="configuration:channels" data-wiki-id="configuration:channels">Channels</a> interface.</div> </li> <li class="level1"><div class="li"> New (beta) theme: sandal, featuring a more modern, flat look than bootprint3.</div> </li> <li class="level1"><div class="li"> <a href="http://swagger.io/" class="urlextern" title="http://swagger.io/" rel="ugc nofollow">Swagger</a>-based <a href="/wiki/development:apis" class="wikilink1" title="development:apis" data-wiki-id="development:apis">APIs</a> for retrieving search results and record details programmatically.</div> </li> <li class="level1"><div class="li"> Recommendation module to detect DOIs in search queries and redirect the user to a resolver.</div> </li> <li class="level1"><div class="li"> Support for hosting <a href="/wiki/configuration:static_pages" class="wikilink1" title="configuration:static_pages" data-wiki-id="configuration:static_pages">static, i18n-capable pages</a> within the VuFind framework.</div> </li> <li class="level1"><div class="li"> New LocalFile cover loading option to retrieve thumbnails from disk using a path pattern (see <a href="https://github.com/vufind-org/vufind/commit/77b8168c9db012baa0e15d66209eb2dc894df3c0" class="urlextern" title="https://github.com/vufind-org/vufind/commit/77b8168c9db012baa0e15d66209eb2dc894df3c0" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> Support for using VuFind to authenticate <a href="https://vufind.org/wiki/configuration:ezproxy" class="urlextern" title="https://vufind.org/wiki/configuration:ezproxy" rel="ugc nofollow">EZproxy</a> users.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/configuration:shibboleth" class="wikilink1" title="configuration:shibboleth" data-wiki-id="configuration:shibboleth">Shibboleth</a> single logout.</div> </li> <li class="level1"><div class="li"> Support for configurable placeholder text inside search boxes (see [SearchPlaceholder] section in <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>).</div> </li> <li class="level1"><div class="li"> Improved, more mobile-friendly “add to book bag” interface (see bookbagTogglesInSearch in <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>; on by default but can be turned off to restore legacy interface).</div> </li> <li class="level1"><div class="li"> Dynamic covers now support multiple sizes through extra configuration (see <a href="https://github.com/vufind-org/vufind/pull/821" class="urlextern" title="https://github.com/vufind-org/vufind/pull/821" rel="ugc nofollow">this pull request</a>).</div> </li> <li class="level1"><div class="li"> Upgraded to Solr 6.4.2.</div> </li> <li class="level1"><div class="li"> Upgraded to use newer Zend Framework components.</div> </li> <li class="level1"><div class="li"> Added support for <a href="/wiki/development:profiling" class="wikilink1" title="development:profiling" data-wiki-id="development:profiling">profiling</a> with <a href="https://tideways.io/" class="urlextern" title="https://tideways.io/" rel="ugc nofollow">Tideways</a> as an alternative to the outdated <a href="http://php.net/manual/en/book.xhprof.php" class="urlextern" title="http://php.net/manual/en/book.xhprof.php" rel="ugc nofollow">XHProf</a>.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> This release requires at least PHP version 5.6; please make sure you have this before upgrading.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> You should rebuild your index due to the new Solr version and minor schema changes (see also the <a href="/wiki/development:architecture:solr_index_schema#vufind_40" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">schema changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Be sure to run a database upgrade to reflect newly added tables (see also the <a href="/wiki/development:architecture:database_schema#release_40" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/900" class="urlextern" title="https://github.com/vufind-org/vufind/pull/900" rel="ugc nofollow">#900</a>, <a href="https://github.com/vufind-org/vufind/pull/909" class="urlextern" title="https://github.com/vufind-org/vufind/pull/909" rel="ugc nofollow">#909</a>, <a href="https://github.com/vufind-org/vufind/pull/910" class="urlextern" title="https://github.com/vufind-org/vufind/pull/910" rel="ugc nofollow">#910</a>, <a href="https://github.com/vufind-org/vufind/pull/918" class="urlextern" title="https://github.com/vufind-org/vufind/pull/918" rel="ugc nofollow">#918</a>, <a href="https://github.com/vufind-org/vufind/pull/919" class="urlextern" title="https://github.com/vufind-org/vufind/pull/919" rel="ugc nofollow">#919</a> and <a href="https://github.com/vufind-org/vufind/pull/929" class="urlextern" title="https://github.com/vufind-org/vufind/pull/929" rel="ugc nofollow">#929</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The jquerymobile theme has been removed due to obsolescence. If you need it, you can still access it as an <a href="/wiki/development:git-branches" class="wikilink1" title="development:git-branches" data-wiki-id="development:git-branches">unsupported legacy branch in Git</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;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 <a href="/wiki/development:git-branches" class="wikilink1" title="development:git-branches" data-wiki-id="development:git-branches">legacy branch in Git</a> if actually needed.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Row gateway objects are no longer constructed by table gateway objects; instead, they have their own <a href="/wiki/development:plugins:database_gateways" class="wikilink1" title="development:plugins:database_gateways" data-wiki-id="development:plugins:database_gateways">plugin manager</a>. If you have customized any database row classes, you may need to adjust your configuration.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> A new <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">RecordDataFormatter view helper</a> 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 <a href="/wiki/development:architecture:record_data_formatter" class="wikilink1" title="development:architecture:record_data_formatter" data-wiki-id="development:architecture:record_data_formatter">wiki page</a> for technical details. If you have custom record driver templates, they may need to be updated. (See also <a href="https://github.com/vufind-org/vufind/commit/db71d7579de63ecfc0c0ed3e3f34a31fa3023624" class="urlextern" title="https://github.com/vufind-org/vufind/commit/db71d7579de63ecfc0c0ed3e3f34a31fa3023624" rel="ugc nofollow">this commit</a>, which changes the way authors and their roles are rendered, and <a href="https://github.com/vufind-org/vufind/commit/efffed5a5c640d981ca0892048d8b558ac40d5bf" class="urlextern" title="https://github.com/vufind-org/vufind/commit/efffed5a5c640d981ca0892048d8b558ac40d5bf" rel="ugc nofollow">this commit</a>, which finalizes the return format of the helper).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The UrlQueryHelper used for generating query parameters for VuFind searches has been significantly revised for more flexibility; see pull requests <a href="https://github.com/vufind-org/vufind/pull/850" class="urlextern" title="https://github.com/vufind-org/vufind/pull/850" rel="ugc nofollow">#850</a> and <a href="https://github.com/vufind-org/vufind/pull/851" class="urlextern" title="https://github.com/vufind-org/vufind/pull/851" rel="ugc nofollow">#851</a> for details. Most significantly, the removeFacet() method has had its parameter order changed, requiring adjustments to the TopFacets.phtml and SideFacets.phtml Recommend templates.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some <abbr title="Cascading Style Sheets">CSS</abbr> styling and <abbr title="HyperText Markup Language">HTML</abbr> 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 <a href="/wiki/css_changelog" class="wikilink1" title="css_changelog" data-wiki-id="css_changelog">css changelog</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some <abbr title="HyperText Markup Language">HTML</abbr> 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 <a href="https://github.com/vufind-org/vufind/pull/814" class="urlextern" title="https://github.com/vufind-org/vufind/pull/814" rel="ugc nofollow">this pull request</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="/wiki/development:architecture:lightbox" class="wikilink1" title="development:architecture:lightbox" data-wiki-id="development:architecture:lightbox">lightbox page</a> and <a href="https://github.com/vufind-org/vufind/pull/878" class="urlextern" title="https://github.com/vufind-org/vufind/pull/878" rel="ugc nofollow">this pull request</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some <abbr title="HyperText Markup Language">HTML</abbr> markup has been revised to use the form attribute to reduce the possibility of problems related to nested forms. See <a href="https://github.com/vufind-org/vufind/commit/f61ded267d54db580ab249251794893dc10c45fe" class="urlextern" title="https://github.com/vufind-org/vufind/commit/f61ded267d54db580ab249251794893dc10c45fe" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/895" class="urlextern" title="https://github.com/vufind-org/vufind/pull/895" rel="ugc nofollow">#895</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Google Maps support has been removed; use the more robust OpenLayers functionality instead. Additionally, some <a href="https://vufind.org/wiki/development:architecture:solr_index_schema#vufind_40" class="urlextern" title="https://vufind.org/wiki/development:architecture:solr_index_schema#vufind_40" rel="ugc nofollow">Solr schema changes</a> have been made related to geographic features.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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-&gt;db references to $this-&gt;getDb().</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/b57849588981f9e6c985cde2069ebcf0257dbb40" class="urlextern" title="https://github.com/vufind-org/vufind/commit/b57849588981f9e6c985cde2069ebcf0257dbb40" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/879" class="urlextern" title="https://github.com/vufind-org/vufind/pull/879" rel="ugc nofollow">this pull request</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/8f9632a4c224be75deb90f688e3746a7bd91309b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/8f9632a4c224be75deb90f688e3746a7bd91309b" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Due to changes in the zend-mvc component, the &#039;viewmanager&#039; service is no longer used to retrieve view-related dependencies; instead, relevant components are retrieved directly using direct service names: &#039;ConsoleRouteNotFoundStrategy&#039;, &#039;ViewResolver&#039;, &#039;ViewRenderer&#039; and &#039;ViewHelperManager&#039;.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some integration details for the zend-eventmanager component have changed to support the 3.x version; see <a href="https://github.com/vufind-org/vufind/commit/db17011c8267a276808be91d43cf580fdc87a18a" class="urlextern" title="https://github.com/vufind-org/vufind/commit/db17011c8267a276808be91d43cf580fdc87a18a" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> <a href="/wiki/development:plugins:link_resolver_drivers" class="wikilink1" title="development:plugins:link_resolver_drivers" data-wiki-id="development:plugins:link_resolver_drivers">Link Resolver Drivers</a> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="/wiki/indexing:solrmarc:custom_java_best_practices" class="wikilink1" title="indexing:solrmarc:custom_java_best_practices" data-wiki-id="indexing:solrmarc:custom_java_best_practices">SolrMarc: Custom Java Best Practices</a> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/c44a44e87d452cc0d2d0e404489fd7a63749d799" class="urlextern" title="https://github.com/vufind-org/vufind/commit/c44a44e87d452cc0d2d0e404489fd7a63749d799" rel="ugc nofollow">this commit</a> and <a href="https://github.com/vufind-org/vufind/commit/e601d3d39c377ea784f350061aa21fbe984a6caa" class="urlextern" title="https://github.com/vufind-org/vufind/commit/e601d3d39c377ea784f350061aa21fbe984a6caa" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you use the @parent_yaml setting in any of your YAML files, you must put the setting name in quotes – e.g. change <code>@parent_yaml: “file”</code> to <code>“@parent_yaml”: “file”</code>. This is necessary to comply with stricter syntax checking in the latest version of the Symphony/Yaml library.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;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 <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>. This will prevent data contamination during upgrades, since some Zend Framework objects have changed. See <a href="https://github.com/vufind-org/vufind/commit/2306088bf7f7201b87aaa55c2a39038bd785edfa" class="urlextern" title="https://github.com/vufind-org/vufind/commit/2306088bf7f7201b87aaa55c2a39038bd785edfa" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> A new service has been created for saving favorites, instead of allowing the record driver object to handle this functionality; see <a href="https://github.com/vufind-org/vufind/commit/f16b9f83b1778f77bab5be63d3c72d0757afad11" class="urlextern" title="https://github.com/vufind-org/vufind/commit/f16b9f83b1778f77bab5be63d3c72d0757afad11" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/e266d1f466e4cd2308d53c69389caf46e6d1d9fc" class="urlextern" title="https://github.com/vufind-org/vufind/commit/e266d1f466e4cd2308d53c69389caf46e6d1d9fc" rel="ugc nofollow">this commit</a> and rearrange your code accordingly.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <abbr title="Uniform Resource Locator">URL</abbr> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/57da049a264499e990ebfa64d87d04a7d3f4b29a" class="urlextern" title="https://github.com/vufind-org/vufind/commit/57da049a264499e990ebfa64d87d04a7d3f4b29a" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> Command line utilities now make better use of native Zend Framework routing, and the custom VuFind-specific filename-based router has been eliminated. See <a href="https://github.com/vufind-org/vufind/pull/824" class="urlextern" title="https://github.com/vufind-org/vufind/pull/824" rel="ugc nofollow">this pull request</a>.</div> </li> <li class="level1"><div class="li"> The logic for dealing with account blocks in the ILS driver has been revised. If your ILS driver uses the special &#039;block&#039; value when handling requests (holds, recalls, etc.) it will need to be revised to implement the getRequestBlocks method instead. See <a href="https://github.com/vufind-org/vufind/pull/815" class="urlextern" title="https://github.com/vufind-org/vufind/pull/815" rel="ugc nofollow">this pull request</a>.</div> </li> <li class="level1"><div class="li"> 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 &#039;blocks&#039; and &#039;holdings&#039; keys instead of simply consisting of holdings. Custom templates may need to be adjusted to match.</div> </li> <li class="level1"><div class="li"> \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.</div> </li> <li class="level1"><div class="li"> \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 <a href="https://github.com/vufind-org/vufind/commit/c66984fefabe7c0ce4acfbffdd0a8a8da1493d6a" class="urlextern" title="https://github.com/vufind-org/vufind/commit/c66984fefabe7c0ce4acfbffdd0a8a8da1493d6a" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> The “terms” method of the Solr search backend has been made more flexible, but it should be fully backward-compatible. See <a href="https://github.com/vufind-org/vufind/commit/b78eaec19453ba9bda901c4009d36537431d7c31" class="urlextern" title="https://github.com/vufind-org/vufind/commit/b78eaec19453ba9bda901c4009d36537431d7c31" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> Some no-longer-used custom indexing code/configuration related to an obsolete OCLC system serving LC name authority records has been removed. See <a href="https://github.com/vufind-org/vufind/commit/de0661936e6cbdad7db417077f02692acd9fdba8" class="urlextern" title="https://github.com/vufind-org/vufind/commit/de0661936e6cbdad7db417077f02692acd9fdba8" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Some status-related blocked*Action() controller methods have been eliminated, as they are no longer needed.</div> </li> </ul> <p> <a href="/wiki/changelog:release-4-0" class="wikilink1" title="changelog:release-4-0" data-wiki-id="changelog:release-4-0">Press Release</a> </p> </div> <h2 class="sectionedit42" id="release_314_-_7_5_2017">Release 3.1.4 - 7/5/2017</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> </ul> </div> <h2 class="sectionedit43" id="release_313_-_3_13_2017">Release 3.1.3 - 3/13/2017</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/translation expansion release.</div> </li> </ul> </div> <h2 class="sectionedit44" id="release_312_-_1_16_2017">Release 3.1.2 - 1/16/2017</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix/translation expansion release.</div> </li> <li class="level1"><div class="li"> Includes upgrade to SolrMarc v3.0.6.</div> </li> </ul> </div> <h2 class="sectionedit45" id="release_311_-_10_31_2016">Release 3.1.1 - 10/31/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> <li class="level1"><div class="li"> Includes upgrade to SolrMarc v3.0.2.</div> </li> </ul> </div> <h2 class="sectionedit46" id="release_31_-_9_26_2016">Release 3.1 - 9/26/2016</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> New optional mechanism to explore/sort facet lists (currently supported for Solr and Summon). See <a href="https://github.com/vufind-org/vufind/pull/678" class="urlextern" title="https://github.com/vufind-org/vufind/pull/678" rel="ugc nofollow">this pull request</a> for details.</div> </li> <li class="level1"><div class="li"> New optional “asset pipeline” to combine and compress <abbr title="Cascading Style Sheets">CSS</abbr> and Javascript files for improved performance. Off by default; see the new asset_pipeline setting in config.ini (and <a href="https://github.com/vufind-org/vufind/commit/ba19117a60c33468e05bae730c3a366334715cc2" class="urlextern" title="https://github.com/vufind-org/vufind/commit/ba19117a60c33468e05bae730c3a366334715cc2" rel="ugc nofollow">this commit</a>) for details.</div> </li> <li class="level1"><div class="li"> The <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> indexing tool has been upgraded to version 3.0.1, a major release that adds greatly improved performance and significant new features.</div> </li> <li class="level1"><div class="li"> Indexing of MARC relator terms has been improved.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/85dcd3f94fd28a75bff7eee0a08f350cd8f03504" class="urlextern" title="https://github.com/vufind-org/vufind/commit/85dcd3f94fd28a75bff7eee0a08f350cd8f03504" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> Improved geographic functionality: existing Google Maps functionality has been updated to reflect <abbr title="Application Programming Interface">API</abbr> changes, and new experimental OpenLayers-based modules have been added which include more robust features. See <a href="https://github.com/vufind-org/vufind/pull/722" class="urlextern" title="https://github.com/vufind-org/vufind/pull/722" rel="ugc nofollow">pull request #722</a> for details/history.</div> </li> <li class="level1"><div class="li"> New (somewhat experimental) KohaILSDI ILS driver, which uses Koha&#039;s ILS-DI <abbr title="Application Programming Interface">API</abbr> for augmented functionality. The plain Koha driver still remains for users with older Koha systems that do not support the <abbr title="Application Programming Interface">API</abbr>.</div> </li> <li class="level1"><div class="li"> New PAIA ILS driver, implementing the <a href="https://gbv.github.io/paia/paia.html" class="urlextern" title="https://gbv.github.io/paia/paia.html" rel="ugc nofollow">PAIA</a> specification as an extension of the DAIA driver.</div> </li> <li class="level1"><div class="li"> New settings to enforce specific password patterns; see <a href="https://github.com/vufind-org/vufind/commit/d27a6282bc7678b617e5238393a672a405598e17" class="urlextern" title="https://github.com/vufind-org/vufind/commit/d27a6282bc7678b617e5238393a672a405598e17" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> Optional setting to link displayed call numbers to a specific browse index. See <a href="https://github.com/vufind-org/vufind/commit/1adf06a81083238103805d0e0a706f631a487684" class="urlextern" title="https://github.com/vufind-org/vufind/commit/1adf06a81083238103805d0e0a706f631a487684" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Tag search now supports wildcards.</div> </li> <li class="level1"><div class="li"> Support for faceting authority records using new RDA values.</div> </li> <li class="level1"><div class="li"> Improvements to web accessibility within Bootstrap3 theme.</div> </li> <li class="level1"><div class="li"> Sidebar facet lists now stay collapsed/expanded across searches/pages for more consistent user experience.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/8994b76c02cd24705a60c7a5132cd05ba0ee5a9c" class="urlextern" title="https://github.com/vufind-org/vufind/commit/8994b76c02cd24705a60c7a5132cd05ba0ee5a9c" rel="ugc nofollow">this commit</a> for details).</div> </li> <li class="level1"><div class="li"> Optional support for the Solr MoreLikeThis handler allows similar item results to be displayed for sharded indexes; see <a href="https://github.com/vufind-org/vufind/commit/4ddf4320d095414296c7e7ef5f61c0ead212e22d" class="urlextern" title="https://github.com/vufind-org/vufind/commit/4ddf4320d095414296c7e7ef5f61c0ead212e22d" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> The Voyager and VoyagerRestful ILS drivers are no longer dependent on the poorly-supported PDO_OCI PHP module.</div> </li> <li class="level1"><div class="li"> User comments may now optionally be protected with ReCaptcha.</div> </li> <li class="level1"><div class="li"> Logger integration with <a href="http://slack.com" class="urlextern" title="http://slack.com" rel="ugc nofollow">Slack</a>.</div> </li> <li class="level1"><div class="li"> Search specification YAML files now support a @parent_yaml property for manually-chained inheritance.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The new release of SolrMarc has been designed with backward compatibility in mind, but because it is a major revision, watch carefully in case of backward-incompatible changes. As of this writing, the only known differences are some minor changes to the handling of punctuation in the topic and title_sort fields, both of which seem to improve results slightly. Also note that the log4j configuration has been adjusted, so if you have customized your own logging settings, these may need to be re-examined.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Indexing of relator terms has become more complex to support the rich data available in some records. If you see warnings during indexing time about “Unknown relators” you may need to make some adjustments to the author* settings in <a href="https://github.com/vufind-org/vufind/blob/dev/import/marc.properties" class="urlextern" title="https://github.com/vufind-org/vufind/blob/dev/import/marc.properties" rel="ugc nofollow">marc.properties</a> and/or the synonym mappings in <a href="https://github.com/vufind-org/vufind/blob/dev/config/vufind/author-classification.ini" class="urlextern" title="https://github.com/vufind-org/vufind/blob/dev/config/vufind/author-classification.ini" rel="ugc nofollow">author-classification.ini</a>. See comments in both of those files for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Removed getController() method from the Record view helper; this has served no purpose since VuFind 2.4.x, but some meaningless references to it have lingered in templates through 3.0.x. Remove any references from your local custom templates!</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Search result and list templates (result-list.phtml and list-entry.phtml in record driver template directories, plus the wrapping templates/search/list-list.phtml) have been switched to use <a href="http://getbootstrap.com/components/#media" class="urlextern" title="http://getbootstrap.com/components/#media" rel="ugc nofollow">Bootstrap&#039;s media objects</a>. Visual anomalies may occur if custom templates are not adjusted to utilize new styling. See <a href="https://github.com/vufind-org/vufind/commit/83a116940c8a534382b0cc6b602c9bddd289ca12" class="urlextern" title="https://github.com/vufind-org/vufind/commit/83a116940c8a534382b0cc6b602c9bddd289ca12" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Tags are now case-insensitive (and displayed in all-lowercase) by default. This works around some strange MySQL behavior in previous releases, but it marks a change in behavior for PostgreSQL users. All database platforms are now capable of supporting either case-sensitive or case-insensitive tags. If this is important to you, to ensure proper data and configuration, it is recommended that you first run the upgrade script to upgrade the configuration only (skip the database step). Then select your desired case sensitivity setting in the [Social] section of config.ini. Finally, re-run the upgrade script, skipping the configuration step. You may be prompted to merge duplicate tags (if you are moving from a case-sensitive PostgreSQL instance to a case-insensitive configuration). See <a href="https://vufind.org/jira/browse/VUFIND-1187" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1187" rel="ugc nofollow">VUFIND-1187</a> for more history on this issue.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind\View\Helper\Root\Record now has a dependency on VuFind\Cover\Router for thumbnail <abbr title="Uniform Resource Locator">URL</abbr> generation; if you have a custom subclass of this helper, make sure to adjust your factory to inject the additional dependency. See <a href="https://github.com/vufind-org/vufind/commit/5484fef5fc62817a5c4ce10bf45f595875a49ef6" class="urlextern" title="https://github.com/vufind-org/vufind/commit/5484fef5fc62817a5c4ce10bf45f595875a49ef6" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;s session handlers must implement a disableWrites() method. This is handled in the current abstract base handler. If you have a custom subclass of VuFind\Session\AbstractBase, you should rename your write() method to saveSession(). See <a href="https://github.com/vufind-org/vufind/commit/0207b241b81bdb2a5556c593f39532206273094b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/0207b241b81bdb2a5556c593f39532206273094b" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The formatCacheKey() ILS driver method introduced in release 3.0 has been renamed getCacheKey(). If you have a custom driver implementing this method, please rename it. See <a href="https://github.com/vufind-org/vufind/pull/698" class="urlextern" title="https://github.com/vufind-org/vufind/pull/698" rel="ugc nofollow">pull request #698</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The LBS4 ILS driver is now a subclass of the DAIA driver in order to allow more complete/reliable functionality; some additional configuration in LBS4.ini will be necessary to enable communication with the DAIA <abbr title="Application Programming Interface">API</abbr>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The Piwik view helper has been improved to track lightbox behavior in the Bootstrap3 theme; if you have customized the helper, you may need to make adjustments.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Due to changes to the Google Maps <abbr title="Application Programming Interface">API</abbr>, all existing map-related functionality has been revised to require an <abbr title="Application Programming Interface">API</abbr> key in config.ini. See the googleMapApiKey setting in the [Content] section.</div> </li> <li class="level1"><div class="li"> VuFind&#039;s OAI-PMH harvester has been moved to a <a href="https://github.com/vufind-org/vufindharvest" class="urlextern" title="https://github.com/vufind-org/vufindharvest" rel="ugc nofollow">separate project</a>. It is still included with VuFind as a Composer dependency, so no functionality has changed. If you have customized the harvest code, however, you may need to adopt a different strategy.</div> </li> <li class="level1"><div class="li"> The display of the format list in the Bootstrap-based themes has been significantly simplified. Custom templates might need minor adjustments.</div> </li> </ul> <p> <a href="/wiki/changelog:release-3-1" class="wikilink1" title="changelog:release-3-1" data-wiki-id="changelog:release-3-1">Press Release</a> </p> </div> <h2 class="sectionedit47" id="release_303_-_8_1_2016">Release 3.0.3 - 8/1/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> </ul> </div> <h2 class="sectionedit48" id="release_302_-_7_5_2016">Release 3.0.2 - 7/5/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix release.</div> </li> </ul> </div> <h2 class="sectionedit49" id="release_301_-_5_27_2016">Release 3.0.1 - 5/27/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Added missing ReCaptcha support to Feedback module.</div> </li> <li class="level1"><div class="li"> Expanded translation support (including new full Bengali translation).</div> </li> <li class="level1"><div class="li"> Minor bug fixes.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> The Feedback controller and related templates were significantly changed to fix broken functionality.</div> </li> <li class="level1"><div class="li"> Some details of the Javascript autocomplete control were adjusted to resolve bugs.</div> </li> </ul> </div> <h2 class="sectionedit50" id="release_30_-_4_25_2016">Release 3.0 - 4/25/2016</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Optional <a href="/wiki/configuration:record_caching" class="wikilink1" title="configuration:record_caching" data-wiki-id="configuration:record_caching">record cache</a> to improve speed/integrity of favorites by keeping local copies of records in the database.</div> </li> <li class="level1"><div class="li"> Optional “privacy mode” to disable storage of personally identifying information in the database (disables many features).</div> </li> <li class="level1"><div class="li"> More detailed and flexible indexing of author (and other creator) information.</div> </li> <li class="level1"><div class="li"> Improved ipv6 support in permission system.</div> </li> <li class="level1"><div class="li"> 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 <abbr title="Uniform Resource Locator">URL</abbr>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> New “RemoveFilters” recommendation module (see <a href="https://github.com/vufind-org/vufind/commit/9298fec693d8556702990734ee1f68df767f1557" class="urlextern" title="https://github.com/vufind-org/vufind/commit/9298fec693d8556702990734ee1f68df767f1557" rel="ugc nofollow">this commit</a>) for recommending that users remove filters to obtain more results; this is now on by default for no-results searches.</div> </li> <li class="level1"><div class="li"> New “SwitchTab” recommendation module (see <a href="https://github.com/vufind-org/vufind/commit/ffacce62167c15ed2d37801d84a491bc3f1c5d96" class="urlextern" title="https://github.com/vufind-org/vufind/commit/ffacce62167c15ed2d37801d84a491bc3f1c5d96" rel="ugc nofollow">this commit</a>) for recommending that users try a different tab (when multiple tabs are enabled).</div> </li> <li class="level1"><div class="li"> New optional “delimited facets” feature to allow greater control over Solr facet display and ordering (see <a href="https://github.com/vufind-org/vufind/commit/c5d0de085c44752b9c6d5f747aaeec0eb878801a" class="urlextern" title="https://github.com/vufind-org/vufind/commit/c5d0de085c44752b9c6d5f747aaeec0eb878801a" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> Support for more granular item availability status messages using new optional <a href="/wiki/development:architecture:real_time_availability_status#services" class="wikilink1" title="development:architecture:real_time_availability_status" data-wiki-id="development:architecture:real_time_availability_status">available services</a> feature in <a href="/wiki/development:plugins:ils_drivers" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">ILS drivers</a>.</div> </li> <li class="level1"><div class="li"> Improved support for publication information in MARC 260/264 fields (see <a href="https://github.com/vufind-org/vufind/pull/577" class="urlextern" title="https://github.com/vufind-org/vufind/pull/577" rel="ugc nofollow">this pull request</a>).</div> </li> <li class="level1"><div class="li"> Added <a href="http://info.buchhandel.de/handbuch_links" class="urlextern" title="http://info.buchhandel.de/handbuch_links" rel="ugc nofollow">Buchhandel.de</a> cover support (may require local template customization for terms of service compliance).</div> </li> <li class="level1"><div class="li"> Added simple <a href="https://us.libraryh3lp.com/" class="urlextern" title="https://us.libraryh3lp.com/" rel="ugc nofollow">libraryh3lp</a> recommendation module (to allow chat box on “no results” screen).</div> </li> <li class="level1"><div class="li"> Upgraded to Solr 5.5.0.</div> </li> <li class="level1"><div class="li"> Upgraded to SolrMarc 2.10.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some changes have been made to the resource table of the database; records previously stored with a &#039;source&#039; value of &#039;VuFind&#039; are now stored with a value of &#039;Solr&#039; (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&#039;s source field).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some other, lesser, database changes have also been made; see the <a href="/wiki/development:architecture:database_schema#changelog" class="wikilink1" title="development:architecture:database_schema" data-wiki-id="development:architecture:database_schema">database changelog</a> for full details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> All of VuFind&#039;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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The getResourceSource() method of the record drivers is now deprecated; use getSourceIdentifier() instead.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind&#039;s representation of authors has been made significantly more flexible, leading to several record driver changes:</div> <ul> <li class="level2"><div class="li"> getCorporateAuthor() has been replaced by getCorporateAuthors()</div> </li> <li class="level2"><div class="li"> getHighlightedAuthor() has been replaced by getPrimaryAuthorsWithHighlighting()</div> </li> <li class="level2"><div class="li"> Use of getPrimaryAuthor() is now discouraged in favor of getPrimaryAuthors()</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The vufind.sh/vufind.bat control scripts for Solr have been replaced with solr.sh/solr.bat for greater naming clarity.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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().</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The SearchTabs view helper has been significantly refactored; local customizations will need to be adjusted.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The “Editions”/“WorldCatEditions” related record modules (previously on by default) and all related support functions have been removed due to the shutdown of OCLC&#039;s xID services. See <a href="https://vufind.org/jira/browse/VUFIND-1142" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1142" rel="ugc nofollow">VUFIND-1142</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The GetLastSearchLink view helper has been removed, replaced by a new SearchMemory helper that contains additional functionality.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/576" class="urlextern" title="https://github.com/vufind-org/vufind/pull/576" rel="ugc nofollow">pull request #576</a> for more detail/background information.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Some changes have been made to the Solr schema which will require reindexing – see the <a href="/wiki/development:architecture:solr_index_schema#vufind_30" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">Schema Changelog</a> for details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The default Apache configuration has been changed to use a &lt;Location&gt; section instead of a RewriteBase directive. This makes directory-based multi-site configuration easier. See <a href="https://github.com/vufind-org/vufind/commit/0bbe3d85f9b08faa9b1de9c986af7afea5c33040" class="urlextern" title="https://github.com/vufind-org/vufind/commit/0bbe3d85f9b08faa9b1de9c986af7afea5c33040" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.”</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> In <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>, 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/d3b67caa26baac5b466ad8bf957580c28e2d83c6" class="urlextern" title="https://github.com/vufind-org/vufind/commit/d3b67caa26baac5b466ad8bf957580c28e2d83c6" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <abbr title="Application Programming Interface">API</abbr>. VuFind&#039;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 <a href="https://github.com/vufind-org/vufind/commit/972844055aa975e0e9c395a7cdd84aa62d34330b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/972844055aa975e0e9c395a7cdd84aa62d34330b" rel="ugc nofollow">this commit</a> and <a href="https://github.com/vufind-org/vufind/commit/8f7914d5082cbcc6a52e5ea2f96007c27f123bf7" class="urlextern" title="https://github.com/vufind-org/vufind/commit/8f7914d5082cbcc6a52e5ea2f96007c27f123bf7" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The holdings data passed to RecordTab/holdingsils.phtml is now formatted slightly differently for simplicity; see <a href="https://github.com/vufind-org/vufind/commit/0498863f3a2a28f797d524168d3ca49df0d32331" class="urlextern" title="https://github.com/vufind-org/vufind/commit/0498863f3a2a28f797d524168d3ca49df0d32331" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a> 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 <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a> to httpd-vufind.conf. See <a href="https://github.com/vufind-org/vufind/commit/c797cfb1b45a649f9dc85461e77199e25da25c01" class="urlextern" title="https://github.com/vufind-org/vufind/commit/c797cfb1b45a649f9dc85461e77199e25da25c01" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/1aeb0ddcb20ada9647e77234ae6352af3ded775c" class="urlextern" title="https://github.com/vufind-org/vufind/commit/1aeb0ddcb20ada9647e77234ae6352af3ded775c" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The WorldCatTerms <a href="/wiki/development:plugins:recommendation_modules" class="wikilink1" title="development:plugins:recommendation_modules" data-wiki-id="development:plugins:recommendation_modules">recommendation module</a> has been removed due to the <a href="http://www.oclc.org/research/themes/data-science/termservices.html" class="urlextern" title="http://www.oclc.org/research/themes/data-science/termservices.html" rel="ugc nofollow">shutdown of the API</a> that powered it.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> If you used makeDynamicCovers = &#039;solid&#039; 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/5d14edc5d02e18af87d65669fe66510a090fdae6" class="urlextern" title="https://github.com/vufind-org/vufind/commit/5d14edc5d02e18af87d65669fe66510a090fdae6" rel="ugc nofollow">this commit</a> for details.</div> </li> <li class="level1"><div class="li"> Default Solr facet sorting has been changed to always sort by count unless otherwise specified (see <a href="https://vufind.org/jira/browse/VUFIND-1128" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1128" rel="ugc nofollow">VUFIND-1128</a>).</div> </li> <li class="level1"><div class="li"> The “notes” element in the return value of <a href="/wiki/development:plugins:ils_drivers#getholding" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">getHolding</a> 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.”</div> </li> <li class="level1"><div class="li"> \VuFind\Db\Table\Search::setSavedFlag() has been removed.</div> </li> <li class="level1"><div class="li"> The signature of \VuFind\Db\Table\Search::saveSearch() has changed slightly.</div> </li> <li class="level1"><div class="li"> \VuFind\Search\Memory::retrieve() has been deprecated in favor of \VuFind\Search\Memory::retrieveSearch().</div> </li> <li class="level1"><div class="li"> \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 <a href="https://github.com/vufind-org/vufind/commit/dc44c3e3b78396739d8a92b7330559db02228686" class="urlextern" title="https://github.com/vufind-org/vufind/commit/dc44c3e3b78396739d8a92b7330559db02228686" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-3-0" class="wikilink1" title="changelog:release-3-0" data-wiki-id="changelog:release-3-0">Press Release</a> </p> </div> <h2 class="sectionedit51" id="release_254_-_4_25_2016">Release 2.5.4 - 4/25/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor Ubuntu 16.04 / PHP 7 compatibility release.</div> </li> </ul> </div> <h2 class="sectionedit52" id="release_253_-_4_18_2016">Release 2.5.3 - 4/18/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fix / PHP 7 compatibility release.</div> </li> </ul> </div> <h2 class="sectionedit53" id="release_252_-_2_3_2016">Release 2.5.2 - 2/3/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor security fix release (see <a href="https://vufind.org/jira/browse/VUFIND-1143" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1143" rel="ugc nofollow">VUFIND-1143</a>).</div> </li> </ul> </div> <h2 class="sectionedit54" id="release_251_-_1_11_2016">Release 2.5.1 - 1/11/2016</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Minor bug fixes.</div> </li> <li class="level1"><div class="li"> Changed default configurations to disable functionality tied to deprecated OCLC services (see <a href="https://vufind.org/jira/browse/VUFIND-1142" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1142" rel="ugc nofollow">VUFIND-1142</a>).</div> </li> <li class="level1"><div class="li"> Expanded translations.</div> </li> </ul> </div> <h2 class="sectionedit55" id="release_25_-_9_28_2015">Release 2.5 - 9/28/2015</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Improved user interface for tagging records; users now have the ability to remove the tags they created and easily +1 tags created by others.</div> </li> <li class="level1"><div class="li"> Permissions-based Solr filters can now be managed using the [ConditionalHiddenFilters] section of <a href="/wiki/configuration:files:searches.ini" class="wikilink1" title="configuration:files:searches.ini" data-wiki-id="configuration:files:searches.ini">searches.ini</a>.</div> </li> <li class="level1"><div class="li"> New “offcanvas” menus for responsive bootstrap3/bootprint3 theme, optionally activated via offcanvas setting in Site section of <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>.</div> </li> <li class="level1"><div class="li"> Improved phone number validation in SMS dialogs using <a href="https://github.com/googlei18n/libphonenumber" class="urlextern" title="https://github.com/googlei18n/libphonenumber" rel="ugc nofollow">libphonenumber</a>.</div> </li> <li class="level1"><div class="li"> Users can manage multiple ILS accounts within a single VuFind account through the optional “library cards” feature.</div> </li> <li class="level1"><div class="li"> New AlphaBrowseLink <a href="/wiki/development:plugins:recommendation_modules" class="wikilink1" title="development:plugins:recommendation_modules" data-wiki-id="development:plugins:recommendation_modules">recommendation module</a> to display a link to the <a href="/wiki/indexing:alphabetical_heading_browse" class="wikilink1" title="indexing:alphabetical_heading_browse" data-wiki-id="indexing:alphabetical_heading_browse">alphabetical heading browse</a> above search results.</div> </li> <li class="level1"><div class="li"> New configuration option to use special default sort for empty searches, since relevance does not apply in this context (Solr/Summon-only).</div> </li> <li class="level1"><div class="li"> New configuration option (coversize in [Content] section of <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>) to customize or disable thumbnail display without modifying themes.</div> </li> <li class="level1"><div class="li"> Support for <a href="https://github.com/vufind-org/vufind/blob/v2.5/config/vufind/config.ini#L760" class="urlextern" title="https://github.com/vufind-org/vufind/blob/v2.5/config/vufind/config.ini#L760" rel="ugc nofollow">image-based linking</a> – display of a graphic in response to a set of OpenURL parameters (where supported by the link resolver).</div> </li> <li class="level1"><div class="li"> New <a href="/wiki/development:plugins:link_resolver_drivers" class="wikilink1" title="development:plugins:link_resolver_drivers" data-wiki-id="development:plugins:link_resolver_drivers">link resolver driver</a> for <a href="http://www-fr.redi-bw.de/" class="urlextern" title="http://www-fr.redi-bw.de/" rel="ugc nofollow">ReDI</a>.</div> </li> <li class="level1"><div class="li"> Ability to customize translation strings on a per-theme basis.</div> </li> <li class="level1"><div class="li"> Added Arabic translation courtesy of <a href="http://www.kwareict.com/" class="urlextern" title="http://www.kwareict.com/" rel="ugc nofollow">KnowledgeWare Technologies</a>, Riyadh, Saudi Arabia.</div> </li> <li class="level1"><div class="li"> Added basic right-to-left support for Arabic/Hebrew (Bootstrap3/Bootprint3 themes only).</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> Upgraded to Solr 4.10.4.</div> </li> <li class="level1"><div class="li"> Upgraded to Zend Framework 2.4.6.</div> </li> <li class="level1"><div class="li"> Upgraded bootstrap3/bootprint3 themes to version 3.3.4 of the <a href="http://getbootstrap.com" class="urlextern" title="http://getbootstrap.com" rel="ugc nofollow">Bootstrap</a> library.</div> </li> <li class="level1"><div class="li"> OAI-PMH harvester is now more error-tolerant and can resume an interrupted harvest.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> As noted under release 2.4, the old Blueprint theme has now been removed.</div> </li> <li class="level1 node"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/d8e0011efb6e165131974fb9293db62bd4b00667" class="urlextern" title="https://github.com/vufind-org/vufind/commit/d8e0011efb6e165131974fb9293db62bd4b00667" rel="ugc nofollow">this commit</a> for details. Possible impacts:</div> <ul> <li class="level2"><div class="li"> 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.</div> </li> <li class="level2"><div class="li"> The signature of the SearchObject abstract recommendation module&#039;s constructor has changed. This may impact customizations to CatalogResults, SummonResults and WebResults, or local custom modules extended from this base.</div> </li> </ul> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Due to the Solr upgrade, all records should be reindexed after upgrading.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Due to the Solr upgrade, the <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> “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).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> OpenURL handling has been significantly rewritten. The OpenUrl view helper has taken on more responsibility in order to simplify templates using OpenURLs, a new <a href="/wiki/configuration:openurls#configuring_openurl_visibility" class="wikilink1" title="configuration:openurls" data-wiki-id="configuration:openurls">configuration file</a> 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 <a href="https://github.com/vufind-org/vufind/commit/11dca25f3933079472bc509324d8607b83aa2379" class="urlextern" title="https://github.com/vufind-org/vufind/commit/11dca25f3933079472bc509324d8607b83aa2379" rel="ugc nofollow">this commit</a> for key details (with some further adjustments <a href="https://github.com/vufind-org/vufind/commit/f1032ae12c1bca52ec3fd220eca8f72e8e5acc55" class="urlextern" title="https://github.com/vufind-org/vufind/commit/f1032ae12c1bca52ec3fd220eca8f72e8e5acc55" rel="ugc nofollow">here</a>, <a href="https://github.com/vufind-org/vufind/commit/4719c763b05e9e48b8a9b00007080eab2d729295" class="urlextern" title="https://github.com/vufind-org/vufind/commit/4719c763b05e9e48b8a9b00007080eab2d729295" rel="ugc nofollow">here</a>, <a href="https://github.com/vufind-org/vufind/commit/f32d330a235d720f972b01cf2f5921eac4811170" class="urlextern" title="https://github.com/vufind-org/vufind/commit/f32d330a235d720f972b01cf2f5921eac4811170" rel="ugc nofollow">here</a> and <a href="https://github.com/vufind-org/vufind/commit/ec28890fdaeb744e9b3003ccd14baa3548f4d141" class="urlextern" title="https://github.com/vufind-org/vufind/commit/ec28890fdaeb744e9b3003ccd14baa3548f4d141" rel="ugc nofollow">here</a>).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> <a href="https://www.google.com/recaptcha" class="urlextern" title="https://www.google.com/recaptcha" rel="ugc nofollow">ReCaptcha</a> support has been updated to use the latest version of Google&#039;s <abbr title="Application Programming Interface">API</abbr>. 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> In the Browse module, the data sent back from the controller now has separate &#039;value&#039; and &#039;displayText&#039; keys instead of a single &#039;result&#039; value to properly account for translation. If you have custom templates, they need to be updated. See <a href="https://github.com/vufind-org/vufind/commit/6d62c47f2367437a3cf97777c8481056ec0b7eff" class="urlextern" title="https://github.com/vufind-org/vufind/commit/6d62c47f2367437a3cf97777c8481056ec0b7eff" rel="ugc nofollow">this commit</a>.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The \VuFind\I18n\Translator\TranslatorAwareTrait has been restructured to add support for text domains.</div> </li> <li class="level1"><div class="li"> Related to the TreeDataSource refactoring, the getHierarchyPositionsInParents() and getTitlesInHierarchy() record driver methods are no longer needed and have been removed to prevent confusion.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The [Delimiters] section of MultiBackend.ini is no longer used; configurable delimiters never worked correctly, so the feature has been removed.</div> </li> <li class="level1"><div class="li"> The addition of the coversize setting (see <a href="https://github.com/vufind-org/vufind/commit/3e9f01b77b43c0e67c112d2c634d360b2c0b5e53" class="urlextern" title="https://github.com/vufind-org/vufind/commit/3e9f01b77b43c0e67c112d2c634d360b2c0b5e53" rel="ugc nofollow">this commit</a>) 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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-5" class="wikilink1" title="changelog:release-2-5" data-wiki-id="changelog:release-2-5">Press Release</a> </p> </div> <h2 class="sectionedit56" id="release_241_-_5_25_2015">Release 2.4.1 - 5/25/2015</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Several bug fixes; see <a href="https://vufind.org/jira/browse/VUFIND-1020?jql=project%20%3D%20VUFIND%20AND%20fixVersion%20%3D%202.4.1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1020?jql=project%20%3D%20VUFIND%20AND%20fixVersion%20%3D%202.4.1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC" rel="ugc nofollow">JIRA</a> for details.</div> </li> <li class="level1"><div class="li"> Expanded translation files.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> The \VuFind\Hierarchy\TreeRenderer\JSTree class has been significantly rewritten to address some encoding bugs; see PR <a href="https://github.com/vufind-org/vufind/pull/350" class="urlextern" title="https://github.com/vufind-org/vufind/pull/350" rel="ugc nofollow">#350</a>.</div> </li> </ul> </div> <h2 class="sectionedit57" id="release_24_-_3_23_2015">Release 2.4 - 3/23/2015</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> A new default theme: bootprint3 offers a look similar to the old blueprint theme with the added benefit of <a href="http://getbootstrap.com/" class="urlextern" title="http://getbootstrap.com/" rel="ugc nofollow">Bootstrap</a>&#039;s responsive design.</div> </li> <li class="level1"><div class="li"> <a href="http://piwik.org/" class="urlextern" title="http://piwik.org/" rel="ugc nofollow">Piwik</a> analytics support.</div> </li> <li class="level1"><div class="li"> <a href="http://dp.la" class="urlextern" title="http://dp.la" rel="ugc nofollow">DPLA</a> recommendation module.</div> </li> <li class="level1"><div class="li"> Similar items carousel on record view.</div> </li> <li class="level1"><div class="li"> Support for logging in with <a href="http://facebook.com" class="urlextern" title="http://facebook.com" rel="ugc nofollow">Facebook</a>.</div> </li> <li class="level1"><div class="li"> Improved Zend Framework configuration to optimize production performance.</div> </li> <li class="level1"><div class="li"> Expanded layout configuration options for <a href="/wiki/configuration:combining_search_types" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">combined search</a> module.</div> </li> <li class="level1"><div class="li"> Improved “send email” configuration options (allow multiple recipients, allow user-edited subjects; see the [Mail] section of <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>).</div> </li> <li class="level1"><div class="li"> Support for <a href="https://wiki.apache.org/solr/HierarchicalFaceting" class="urlextern" title="https://wiki.apache.org/solr/HierarchicalFaceting" rel="ugc nofollow">hierarchical (nested) facets</a> in Solr (see <a href="/wiki/configuration:files:facets.ini" class="wikilink1" title="configuration:files:facets.ini" data-wiki-id="configuration:files:facets.ini">facets.ini</a>).</div> </li> <li class="level1"><div class="li"> VuFind&#039;s RSS feed now includes <a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_response_elements" class="urlextern" title="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_response_elements" rel="ugc nofollow">OpenSearch response elements</a> to allow more <abbr title="Application Programming Interface">API</abbr>-style functionality</div> </li> <li class="level1"><div class="li"> Updated LibGuides module for compatibility with LibGuides2 (v1 also still supported).</div> </li> <li class="level1"><div class="li"> <a href="http://en.wikipedia.org/wiki/RIS_%28file_format%29" class="urlextern" title="http://en.wikipedia.org/wiki/RIS_%28file_format%29" rel="ugc nofollow">RIS</a> export support.</div> </li> <li class="level1"><div class="li"> More flexible set definition in the OAI-PMH server.</div> </li> <li class="level1"><div class="li"> Improved locale support and new configuration option for default currency (see [Site] section of <a href="/wiki/configuration:files:config.ini" class="wikilink1" title="configuration:files:config.ini" data-wiki-id="configuration:files:config.ini">config.ini</a>).</div> </li> <li class="level1"><div class="li"> New highlighting/display options in <a href="/wiki/indexing:alphabetical_heading_browse" class="wikilink1" title="indexing:alphabetical_heading_browse" data-wiki-id="indexing:alphabetical_heading_browse">alphabetical heading browse</a> (see <a href="https://github.com/vufind-org/vufind/commit/ac4f10e87bbf5e3227beeed6a8c4365b67df9f0b" class="urlextern" title="https://github.com/vufind-org/vufind/commit/ac4f10e87bbf5e3227beeed6a8c4365b67df9f0b" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> Improved handling of call numbers.</div> </li> <li class="level1"><div class="li"> Added <a href="/wiki/development:code_generators" class="wikilink1" title="development:code_generators" data-wiki-id="development:code_generators">code generators</a> to help automate certain common development/customization tasks.</div> </li> <li class="level1"><div class="li"> Upgraded to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 2.8.</div> </li> <li class="level1"><div class="li"> Upgraded to Zend Framework 2.3.7.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> This version will require at least PHP version 5.4, a higher requirement than previous releases.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Call number improvements required changes to the Solr schema, so records must be reindexed after an upgrade. See the <a href="/wiki/development:architecture:solr_index_schema#changelog" class="wikilink1" title="development:architecture:solr_index_schema" data-wiki-id="development:architecture:solr_index_schema">index schema changelog</a> for more details.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/262" class="urlextern" title="https://github.com/vufind-org/vufind/pull/262" rel="ugc nofollow">this pull request</a> for details on the changes you&#039;ll have to make to custom Summon.ini and searches.ini files.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> VuFind\Auth\LDAP has been significantly refactored and custom subclasses will likely need to be rewritten.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The constructor signatures of \VuFind\Cart and the UpgradeController have changed to reflect centralized cookie handling functionality (see <a href="https://github.com/vufind-org/vufind/commit/a4321aaa73bec36c309235aac7517936f5e685cf" class="urlextern" title="https://github.com/vufind-org/vufind/commit/a4321aaa73bec36c309235aac7517936f5e685cf" rel="ugc nofollow">this commit</a>). This will affect custom subclasses.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\QRCode\Loader::getQrCode() is now \VuFind\QRCode\Loader::getImage() for consistency with \VuFind\Cover\Loader.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \VuFind\Code\ISBN has been extracted to a <a href="https://github.com/vufind-org/vufindcode" class="urlextern" title="https://github.com/vufind-org/vufindcode" rel="ugc nofollow">separate library</a> and renamed to \VuFindCode\ISBN. If you depend on this class, you may need to update use statements.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Renamed and refactored \VuFind\Sitemap to \VuFind\Sitemap\Generator.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The XCNCIP ILS driver has been removed (this was experimental and built for an <a href="https://code.google.com/p/xcnciptoolkit/" class="urlextern" title="https://code.google.com/p/xcnciptoolkit/" rel="ugc nofollow">obsolete version</a> of the XC NCIP Toolkit; users should upgrade to use the more feature-complete XCNCIP2 driver, which works with the <a href="https://code.google.com/p/xcncip2toolkit/" class="urlextern" title="https://code.google.com/p/xcncip2toolkit/" rel="ugc nofollow">newer version</a> of the toolkit and is still fully supported).</div> </li> <li class="level1"><div class="li"> The VuFindHttp module no longer exists, replaced by a <a href="https://github.com/vufind-org/vufindhttp" class="urlextern" title="https://github.com/vufind-org/vufindhttp" rel="ugc nofollow">separate VuFindHttp library</a>. All class names and functionality remain the same.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/vufind-org/vufind/commit/fd10f122e2536d02da86533fd76cb4a5ca989554" class="urlextern" title="https://github.com/vufind-org/vufind/commit/fd10f122e2536d02da86533fd76cb4a5ca989554" rel="ugc nofollow">new model</a>.</div> </li> <li class="level1"><div class="li"> The \VuFind\Cover\Loader determines the location of its cache files slightly differently (it no longer appends &#039;/covers&#039; to the directory provided to the constructor, instead assuming that the full path will be passed in).</div> </li> <li class="level1"><div class="li"> The search backend for EBSCO Discovery Service has been significantly refactored.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-4" class="wikilink1" title="changelog:release-2-4" data-wiki-id="changelog:release-2-4">Press Release</a> </p> </div> <h2 class="sectionedit58" id="release_231_-_11_17_2014">Release 2.3.1 - 11/17/2014</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Several bug fixes; see <a href="https://vufind.org/jira/browse/VUFIND-1020?jql=project%20%3D%20VUFIND%20AND%20fixVersion%20%3D%202.3.1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1020?jql=project%20%3D%20VUFIND%20AND%20fixVersion%20%3D%202.3.1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC" rel="ugc nofollow">JIRA</a> for details.</div> </li> <li class="level1"><div class="li"> Expanded translation files.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> Several large-scale fixes to the Bootstrap3 theme have introduced significant template changes; if you are using this theme, be sure to double-check compatibility with local custom templates and Javascript.</div> </li> <li class="level1"><div class="li"> The \VuFind\RecordDriver\SolrMarc::getFieldData() method no longer uses its second parameter (due to refactoring in support of the <a href="https://vufind.org/jira/browse/VUFIND-1034" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-1034" rel="ugc nofollow">VUFIND-1034</a> bug fix). This should be a seamless change, but in the extremely unlikely case that you have overridden the method, be sure you do not rely on $value.</div> </li> </ul> </div> <h2 class="sectionedit59" id="release_23_-_8_11_2014">Release 2.3 - 8/11/2014</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Added support for Ex Libris Primo Central discovery service.</div> </li> <li class="level1"><div class="li"> Added support for EBSCO EDS and EIT APIs.</div> </li> <li class="level1"><div class="li"> Added support for searching LibGuides via <abbr title="Application Programming Interface">API</abbr>.</div> </li> <li class="level1 node"><div class="li"> New themes based on <a href="http://getbootstrap.com/" class="urlextern" title="http://getbootstrap.com/" rel="ugc nofollow">Bootstrap</a> 3 (to replace the earlier experimental Bootstrap 2-based themes)</div> <ul> <li class="level2"><div class="li"> <a href="/wiki/installation:migration_notes:bootstrap_migration" class="wikilink1" title="installation:migration_notes:bootstrap_migration" data-wiki-id="installation:migration_notes:bootstrap_migration">Documentation on migrating</a> from Bootstrap 2 to Bootstrap 3</div> </li> </ul> </li> <li class="level1"><div class="li"> Added support for password recovery and user-initiated password change (only when using DB authetication; off by default).</div> </li> <li class="level1"><div class="li"> Added support for <a href="https://www.google.com/recaptcha" class="urlextern" title="https://www.google.com/recaptcha" rel="ugc nofollow">ReCAPTCHA</a> in several places (off by default).</div> </li> <li class="level1"><div class="li"> Optional dynamic cover image generation (off by default).</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> “Visual” view featuring treemap navigation (off by default).</div> </li> <li class="level1"><div class="li"> Configurable citation formats (including new support for Chicago Style).</div> </li> <li class="level1"><div class="li"> Social features (comments/tags/favorites) may now be turned off via configuration.</div> </li> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> MultiILS authentication module for use with MultiBackend driver.</div> </li> <li class="level1"><div class="li"> Javascript session keep-alive feature (off by default).</div> </li> <li class="level1"><div class="li"> Support for Solr-driven (rather than ILS-driven) “New Item” searches (configurable via <a href="/wiki/configuration:files:searches.ini" class="wikilink1" title="configuration:files:searches.ini" data-wiki-id="configuration:files:searches.ini">searches.ini</a>).</div> </li> <li class="level1"><div class="li"> The ability to pre-filter searches with user-removable limits.</div> </li> <li class="level1"><div class="li"> Improved PostgreSQL support (now supported by web-based installer).</div> </li> <li class="level1"><div class="li"> Upgrade to Zend Framework 2.2.7.</div> </li> <li class="level1"><div class="li"> Added checkbox facet support to advanced search screen.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/commit/62fc3636fef8ee41e5fb6b93546b62cbf42a2a6d" class="urlextern" title="https://github.com/vufind-org/vufind/commit/62fc3636fef8ee41e5fb6b93546b62cbf42a2a6d" rel="ugc nofollow">this commit</a>); custom holdingsils.phtml templates should be updated.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The signature of the getHolding ILS driver method has changed from ($id, $patron = false) to ($id, array $patron = null).</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <a href="https://github.com/vufind-org/vufind/pull/170" class="urlextern" title="https://github.com/vufind-org/vufind/pull/170" rel="ugc nofollow">this pull request</a> for details of the changes.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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().</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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().</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> 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 <em>always</em> includes a record driver.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> \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.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> View templates have been updated to use the escapeHtmlAttr helper instead of escapeHtml when escaping text within <abbr title="HyperText Markup Language">HTML</abbr> attributes. Custom templates should be updated to match.</div> </li> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The latest <a href="https://github.com/vufind-org/vufind-browse-handler" class="urlextern" title="https://github.com/vufind-org/vufind-browse-handler" rel="ugc nofollow">Solr browse handler</a> 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&#039;s <a href="https://github.com/vufind-org/vufind-browse-handler" class="urlextern" title="https://github.com/vufind-org/vufind-browse-handler" rel="ugc nofollow">GitHub page</a>.</div> </li> <li class="level1"><div class="li"> 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 <a href="https://github.com/KDK-Alli/RecordManager" class="urlextern" title="https://github.com/KDK-Alli/RecordManager" rel="ugc nofollow">RecordManager</a> tool.</div> </li> <li class="level1"><div class="li"> 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&#039;t break anything.</div> </li> <li class="level1"><div class="li"> Handling of date ranges on advanced search screens has changed (see <a href="https://vufind.org/jira/browse/VUFIND-627" class="urlextern" title="https://vufind.org/jira/browse/VUFIND-627" rel="ugc nofollow">VUFIND-627</a>).</div> </li> <li class="level1"><div class="li"> The VuFind\I18n\Translator\Loader\ExtendedIni translation loader has been significantly rewritten.</div> </li> <li class="level1"><div class="li"> The protected process() method of \VuFind\Date\Converter has been changed to public convert().</div> </li> <li class="level1"><div class="li"> Support for embedded video clips has been removed – Syndetics was the only supported content provider and has discontinued the service.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The WorldCat search connector constructor parameters have changed to reflect the removal of the non-functional LimitCodes setting.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-3" class="wikilink1" title="changelog:release-2-3" data-wiki-id="changelog:release-2-3">Press Release</a> </p> </div> <h2 class="sectionedit60" id="release_221_-_2_26_2014">Release 2.2.1 - 2/26/2014</h2> <div class="level2"> <p> Bug fix release, primarily addressing lightbox issues in the Bootstrap/Bootprint themes. </p> </div> <h2 class="sectionedit61" id="release_22_-_1_27_2014">Release 2.2 - 1/27/2014</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Added <a href="http://getbootstrap.com/" class="urlextern" title="http://getbootstrap.com/" rel="ugc nofollow">Bootstrap</a>-based themes (experimental)</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> schema.org microdata integration.</div> </li> <li class="level1"><div class="li"> Tag management tools in admin module.</div> </li> <li class="level1"><div class="li"> Optional QR code support for convenient smartphone record linking.</div> </li> <li class="level1"><div class="li"> Support for CAS authentication.</div> </li> <li class="level1"><div class="li"> Support for allowing user-selected authentication methods (multiple parallel authentication options).</div> </li> <li class="level1"><div class="li"> Support for Solr&#039;s Extended DisMax search handler (disabled by default).</div> </li> <li class="level1"><div class="li"> Upgrade to Zend Framework 2.2.5.</div> </li> <li class="level1"><div class="li"> Added support for new Summon features: Topic Explorer, query expansion, language-specific relevance ranking, etc.</div> </li> <li class="level1"><div class="li"> Expanded functionality in OAI-PMH harvest tool.</div> </li> <li class="level1"><div class="li"> New recommendation module: SwitchQuery, to suggest alternate queries that may return more/better results.</div> </li> <li class="level1"><div class="li"> Added Slovene translation; significantly expanded Brazilian Portuguese translation.</div> </li> <li class="level1"><div class="li"> Assorted minor bug fixes and improvements.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> All Solr DateField types have been changed to TrieDateField. This means that you should completely rebuild your index to avoid search problems. See <a href="http://vufind.org/jira/browse/VUFIND-546" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-546" rel="ugc nofollow">VUFIND-546</a>.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Spellcheck behavior in the Solr search backend and related search classes has been significantly refactored (see <a href="http://vufind.org/jira/browse/VUFIND-840" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-840" rel="ugc nofollow">VUFIND-840</a> and <a href="https://github.com/vufind-org/vufind/commit/76905b49fcf11d07bca3a4ea843551bb822dcef5" class="urlextern" title="https://github.com/vufind-org/vufind/commit/76905b49fcf11d07bca3a4ea843551bb822dcef5" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> 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 <a href="http://vufind.org/jira/browse/VUFIND-937" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-937" rel="ugc nofollow">VUFIND-937</a> and <a href="https://github.com/vufind-org/vufind/commit/fbfd06f814dc7603701582109a8cd7b9538f196a" class="urlextern" title="https://github.com/vufind-org/vufind/commit/fbfd06f814dc7603701582109a8cd7b9538f196a" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> In the Options/Params/Results search classes, Results::createBackendParameters() has been replaced by Params::getBackendParameters() for all modules using the VuFindSearch system (see <a href="https://github.com/vufind-org/vufind/commit/b5458e2aaf6188dbd04c70adf8cd7c4651dafd7f" class="urlextern" title="https://github.com/vufind-org/vufind/commit/b5458e2aaf6188dbd04c70adf8cd7c4651dafd7f" rel="ugc nofollow">this commit</a>).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> The VuFind\Search\Memory class is now accessed as a Zend Framework service rather than being used statically (see <a href="http://vufind.org/jira/browse/VUFIND-883" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-883" rel="ugc nofollow">VUFIND-883</a>).</div> </li> <li class="level1"><div class="li"> Default record tabs can now be set from within module.config.php; the old $this→defaultTab in record controllers has become $this→fallbackDefaultTab; see <a href="http://vufind.org/jira/browse/VUFIND-777" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-777" rel="ugc nofollow">VUFIND-777</a>.</div> </li> <li class="level1"><div class="li"> The Sitemap generator&#039;s constructor parameters have changed; see <a href="http://vufind.org/jira/browse/VUFIND-656" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-656" rel="ugc nofollow">VUFIND-656</a>.</div> </li> <li class="level1"><div class="li"> The Aleph ILS driver&#039;s constructor parameters have changed.</div> </li> <li class="level1"><div class="li"> The code which represents user lists using VuFind&#039;s internal facet mechanism has been removed in favor of a simpler solution for rendering the “Your Lists” section of the MyResearch menu.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-2" class="wikilink1" title="changelog:release-2-2" data-wiki-id="changelog:release-2-2">Press Release</a> </p> </div> <h2 class="sectionedit62" id="release_211_-_9_9_2013">Release 2.1.1 - 9/9/2013</h2> <div class="level2"> <p> This bug fix release solves some problems in the <a href="/wiki/configuration:combining_search_types" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">combined search type</a> functionality, hierarchy tree display, and favorite list maintenance. </p> </div> <h2 class="sectionedit63" id="release_21_-_8_26_2013">Release 2.1 - 8/26/2013</h2> <div class="level2"> <p> New features: </p> <ul> <li class="level1"><div class="li"> Upgrade to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 2.6.</div> </li> <li class="level1"><div class="li"> Upgrade to Zend Framework 2.2.1.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/configuration:combining_search_types" class="wikilink1" title="configuration:combining_search_types" data-wiki-id="configuration:combining_search_types">combining search types</a> into multi-column displays, custom search type drop-downs, tabbed search boxes, etc.</div> </li> <li class="level1"><div class="li"> New Solr core for <a href="/wiki/indexing:websites" class="wikilink1" title="indexing:websites" data-wiki-id="indexing:websites">indexing websites</a> (with simple sitemap.xml-based crawling tool).</div> </li> <li class="level1"><div class="li"> Expanded information visible in the alphabetical browse lists (titles in call number browse, author in title browse, etc.).</div> </li> <li class="level1"><div class="li"> Support for <a href="http://www.booksite.com/" class="urlextern" title="http://www.booksite.com/" rel="ugc nofollow">Booksite</a> content integration.</div> </li> <li class="level1"><div class="li"> Basic support for Pazpar2 integration.</div> </li> <li class="level1"><div class="li"> New ILS driver for Polaris.</div> </li> <li class="level1"><div class="li"> Improved support for using PostgreSQL instead of MySQL.</div> </li> <li class="level1"><div class="li"> Improved Summon support (“Best Bets” recommendations, fixed cover <abbr title="Application Programming Interface">API</abbr>, etc.)</div> </li> <li class="level1"><div class="li"> Added partial Danish translation.</div> </li> <li class="level1"><div class="li"> Assorted minor bug fixes and improvements.</div> </li> </ul> <p> Possible backward compatibility breaks: </p> <ul> <li class="level1"><div class="li"> change to Solr highlighting query generation.</div> </li> <li class="level1"><div class="li"> change to renderSpellingSuggestions() method in search() view helper in Blueprint theme.</div> </li> <li class="level1"><div class="li"> change to search/searchbox.phtml template to support new <a href="http://vufind.org/jira/browse/VUFIND-843" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-843" rel="ugc nofollow">flexible search handler drop-down</a> feature.</div> </li> <li class="level1"><div class="li"> minor adjustments to initialization/registration of VuFindSearch\Service.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-1" class="wikilink1" title="changelog:release-2-1" data-wiki-id="changelog:release-2-1">Press Release</a> </p> </div> <h2 class="sectionedit64" id="release_201_-_6_25_2013">Release 2.0.1 - 6/25/2013</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Addresses Solr configuration errors present in 2.0.</div> </li> <li class="level1"><div class="li"> Expands language files slightly.</div> </li> </ul> </div> <h2 class="sectionedit65" id="release_20_-_6_24_2013">Release 2.0 - 6/24/2013</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Upgrade to a newer version of Solr (4.2.1) and Jetty (8.1.8).</div> </li> <li class="level1"><div class="li"> Refinements to <a href="/wiki/development:architecture:search_service" class="wikilink1" title="development:architecture:search_service" data-wiki-id="development:architecture:search_service">search service</a> architecture (error event, more granular parameter handling).</div> </li> <li class="level1"><div class="li"> Built-in Google Analytics support.</div> </li> <li class="level1"><div class="li"> Significantly improved Horizon ILS driver.</div> </li> <li class="level1"><div class="li"> Addition of “generator” meta tag in output.</div> </li> <li class="level1"><div class="li"> Support for RDA 264 field.</div> </li> <li class="level1"><div class="li"> Auto-detection of preferred user language.</div> </li> <li class="level1"><div class="li"> Miscellaneous bug fixes and improvements.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-0" class="wikilink1" title="changelog:release-2-0" data-wiki-id="changelog:release-2-0">Press Release</a> </p> </div> <h2 class="sectionedit66" id="release_20rc1_-_4_29_2013">Release 2.0RC1 - 4/29/2013</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> New <a href="/wiki/development:architecture:search_service" class="wikilink1" title="development:architecture:search_service" data-wiki-id="development:architecture:search_service">search service</a> architecture.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/indexing:hierarchies_and_collections" class="wikilink1" title="indexing:hierarchies_and_collections" data-wiki-id="indexing:hierarchies_and_collections">hierarchies and collections</a> (consistent with the 1.4 release).</div> </li> <li class="level1"><div class="li"> Upgraded to newer versions of <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> and <a href="/wiki/development:architecture:laminas" class="wikilink1" title="development:architecture:laminas" data-wiki-id="development:architecture:laminas">Zend Framework 2</a>.</div> </li> <li class="level1"><div class="li"> Security improvements (safer password storage, optional login requirement before emailing).</div> </li> <li class="level1"><div class="li"> New “MultiBackend” ILS driver for connecting multiple ILSes to a single VuFind instance.</div> </li> <li class="level1"><div class="li"> Enhanced/fixed or added Clavius, Horizon, NewGenLib and Voyager ILS drivers.</div> </li> <li class="level1"><div class="li"> Tika full text import support (supplemental to existing Aperture support).</div> </li> <li class="level1"><div class="li"> EndNote Web export support.</div> </li> <li class="level1"><div class="li"> Clickatell SMS support (consistent with the 1.4 release).</div> </li> <li class="level1"><div class="li"> Miscellaneous bug fixes and improvements.</div> </li> </ul> <p> <a href="/wiki/changelog:release-2-0rc1" class="wikilink1" title="changelog:release-2-0rc1" data-wiki-id="changelog:release-2-0rc1">Press Release</a> </p> </div> <h2 class="sectionedit67" id="release_20beta_-_10_1_2012">Release 2.0beta - 10/1/2012</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Switched from Zend Framework 1.x to <a href="/wiki/development:architecture:laminas" class="wikilink1" title="development:architecture:laminas" data-wiki-id="development:architecture:laminas">Zend Framework 2</a>.</div> </li> <li class="level1"><div class="li"> More <a href="http://vufind.org/downloads.php" class="urlextern" title="http://vufind.org/downloads.php" rel="ugc nofollow">download options</a> than previous releases (tar.gz/zip/deb).</div> </li> <li class="level1"><div class="li"> Improved installation process for <a href="/wiki/installation:installing_multiple_instances" class="wikilink1" title="installation:installing_multiple_instances" data-wiki-id="installation:installing_multiple_instances">multi-site configurations</a>.</div> </li> <li class="level1"><div class="li"> Flexible <a href="/wiki/development:plugins:general_information" class="wikilink1" title="development:plugins:general_information" data-wiki-id="development:plugins:general_information">plugin architecture</a> using ZF2 service manager.</div> </li> </ul> </div> <h2 class="sectionedit68" id="release_20alpha_-_7_2_2012">Release 2.0alpha - 7/2/2012</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> New architecture: see <a href="/wiki/legacy:architecture:why_vufind_2.0" class="wikilink1" title="legacy:architecture:why_vufind_2.0" data-wiki-id="legacy:architecture:why_vufind_2.0">Why VuFind 2.0?</a> for some reasons for the change.</div> </li> <li class="level1"><div class="li"> More feature-rich Summon and WorldCat modules (full support for tags, favorites, comments, citations and other standard VuFind features).</div> </li> <li class="level1"><div class="li"> More complete mobile theme.</div> </li> <li class="level1"><div class="li"> More flexible theme system (allow users to choose from multiple themes).</div> </li> <li class="level1"><div class="li"> Configuration-driven record export system supported by more record types.</div> </li> <li class="level1"><div class="li"> Streamlined install/upgrade process.</div> </li> <li class="level1"><div class="li"> New “related records” plug-in mechanism to allow configuration-driven customization of record views (no more hard-coded “more like this” / “WorldCat editions” functionality).</div> </li> <li class="level1"><div class="li"> Language file inheritance (override language settings without editing core files).</div> </li> </ul> </div> <h2 class="sectionedit69" id="release_14_-_1_28_2013">Release 1.4 - 1/28/2013</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_13_to_14" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> <a href="/wiki/indexing:hierarchies_and_collections" class="wikilink1" title="indexing:hierarchies_and_collections" data-wiki-id="indexing:hierarchies_and_collections">Hierarchical collection support</a></div> </li> <li class="level1"><div class="li"> Upgrade to <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> version 2.5.</div> </li> <li class="level1"><div class="li"> A “no ILS” driver for users without an integrated library system or for graceful support of temporary outages</div> </li> <li class="level1"><div class="li"> Support for title-level (as opposed to item-level) holds</div> </li> <li class="level1"><div class="li"> Improved/expanded jquerymobile theme – now the recommended mobile theme</div> </li> <li class="level1"><div class="li"> <a href="http://vufind.org/jira/browse/VUFIND-596" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-596" rel="ugc nofollow">Improved support</a> for MARC 7xx linking fields</div> </li> <li class="level1"><div class="li"> <a href="http://vufind.org/jira/browse/VUFIND-318" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-318" rel="ugc nofollow">More configuration options</a> for Google/HathiTrust/OpenLibrary previews</div> </li> <li class="level1"><div class="li"> Home page facets may now be configured independently of advanced search facets</div> </li> <li class="level1"><div class="li"> Support for using Tika instead of Aperture for full text harvesting</div> </li> <li class="level1"><div class="li"> Support for “no results” recommendation modules – special suggestions displayed only when the result set is empty</div> </li> <li class="level1"><div class="li"> 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)</div> </li> <li class="level1"><div class="li"> Optional Clickatell support for SMS messaging</div> </li> <li class="level1"><div class="li"> Improved support for using VuFind as an <a href="http://vufind.org/jira/browse/VUFIND-258" class="urlextern" title="http://vufind.org/jira/browse/VUFIND-258" rel="ugc nofollow">article index</a></div> </li> <li class="level1"><div class="li"> New languages: Basque, Catalan, Czech and Russian</div> </li> <li class="level1"><div class="li"> Support for ldaps scheme in LDAP authentication module</div> </li> <li class="level1"><div class="li"> Various bug fixes and minor enhancements</div> </li> </ul> <p> <a href="/wiki/changelog:release-1-4" class="wikilink1" title="changelog:release-1-4" data-wiki-id="changelog:release-1-4">Press Release</a> </p> </div> <h2 class="sectionedit70" id="release_13_-_1_30_2012">Release 1.3 - 1/30/2012</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_12_to_13" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> Upgrade to latest versions of Solr (3.5) and <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> (2.3)</div> </li> <li class="level1"><div class="li"> New “book bag” functionality for performing actions (save, email, etc.) on multiple items from result lists (available in Blueprint theme only)</div> </li> <li class="level1"><div class="li"> Improved integration with <a href="http://www.applications.sciverse.com/action/appDetail/293706?zone=main&amp;pageOrigin=appGallery&amp;activity=display" class="urlextern" title="http://www.applications.sciverse.com/action/appDetail/293706?zone=main&amp;pageOrigin=appGallery&amp;activity=display" rel="ugc nofollow">VuFind Template App for SciVerse</a></div> </li> <li class="level1"><div class="li"> Optional Solr-driven Reserves search module</div> </li> <li class="level1"><div class="li"> New recommendation modules (Timeline graph, Europeana, Google Maps)</div> </li> <li class="level1"><div class="li"> Improved Syndetics integration</div> </li> <li class="level1"><div class="li"> Blueprint is now the default theme (since it is most feature-rich and uses jQuery, which will be the standard in VuFind 2.0)</div> </li> <li class="level1"><div class="li"> Various bug fixes and minor enhancements</div> </li> </ul> <p> <a href="/wiki/changelog:release-1-3" class="wikilink1" title="changelog:release-1-3" data-wiki-id="changelog:release-1-3">Press Release</a> </p> </div> <h2 class="sectionedit71" id="release_12_-_8_1_2011">Release 1.2 - 8/1/2011</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_11_to_12" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> New (experimental) jQuery Mobile theme.</div> </li> <li class="level1"><div class="li"> Added infrastructure for holds/recalls and renewals via <a href="/wiki/legacy:vufind_1.x_developer_manual:building_an_ils_driver" class="wikilink1" title="legacy:vufind_1.x_developer_manual:building_an_ils_driver" data-wiki-id="legacy:vufind_1.x_developer_manual:building_an_ils_driver">ILS drivers</a> (currently supported by Voyager, Horizon and Demo drivers).</div> </li> <li class="level1"><div class="li"> Improved advanced search behavior.</div> </li> <li class="level1"><div class="li"> Optional support for MARC 7xx linking fields.</div> </li> <li class="level1"><div class="li"> Optional support for multiple result views (list vs. grid).</div> </li> <li class="level1"><div class="li"> Optional support for multiple result list page sizes.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/indexing:full_text_tools" class="wikilink1" title="indexing:full_text_tools" data-wiki-id="indexing:full_text_tools">indexing full text</a> from URLs in MARC records.</div> </li> <li class="level1"><div class="li"> Improved EZProxy integration.</div> </li> <li class="level1"><div class="li"> Configurable “retain filters” checkbox.</div> </li> <li class="level1"><div class="li"> BibTeX export support.</div> </li> <li class="level1"><div class="li"> More complete translations for most supported languages.</div> </li> <li class="level1"><div class="li"> Fixed Dewey indexing bugs from release 1.1.</div> </li> <li class="level1"><div class="li"> Fixed public list bugs from release 1.1.</div> </li> </ul> </div> <h2 class="sectionedit72" id="release_11_-_3_21_2011">Release 1.1 - 3/21/2011</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_10x_to_11" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> Full <a href="/wiki/indexing:tracking_record_changes#oai-pmh_server_functionality" class="wikilink1" title="indexing:tracking_record_changes" data-wiki-id="indexing:tracking_record_changes">OAI-PMH server support</a> and <a href="/wiki/indexing:tracking_record_changes#enhanced_rss_functionality" class="wikilink1" title="indexing:tracking_record_changes" data-wiki-id="indexing:tracking_record_changes">smarter RSS feeds</a>.</div> </li> <li class="level1"><div class="li"> Smarter handling of stemming in search results ranking.</div> </li> <li class="level1"><div class="li"> Book preview support through Google Books, OpenLibrary and HathiTrust.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/indexing:marc#importing_authority_records" class="wikilink1" title="indexing:marc" data-wiki-id="indexing:marc">indexing authority data</a>.</div> </li> <li class="level1"><div class="li"> Support for <a href="/wiki/configuration:solr_shards" class="wikilink1" title="configuration:solr_shards" data-wiki-id="configuration:solr_shards">Solr Sharding</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/indexing:alphabetical_heading_browse" class="wikilink1" title="indexing:alphabetical_heading_browse" data-wiki-id="indexing:alphabetical_heading_browse">alphabetical heading browse</a> functionality.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:autocomplete" class="wikilink1" title="configuration:autocomplete" data-wiki-id="configuration:autocomplete">Autocomplete</a> system.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/administration:search_engine_optimization#sitemaps" class="wikilink1" title="administration:search_engine_optimization" data-wiki-id="administration:search_engine_optimization">Sitemap generation</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:highlighting" class="wikilink1" title="configuration:highlighting" data-wiki-id="configuration:highlighting">Search result highlighting</a>.</div> </li> <li class="level1"><div class="li"> Optional embedded OpenURL results using <a href="/wiki/legacy:vufind_1.x_developer_manual:building_a_link_resolver_driver" class="wikilink1" title="legacy:vufind_1.x_developer_manual:building_a_link_resolver_driver" data-wiki-id="legacy:vufind_1.x_developer_manual:building_a_link_resolver_driver">Link Resolver Drivers</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/indexing:xml" class="wikilink1" title="indexing:xml" data-wiki-id="indexing:xml">XSLT Import Tool</a> for XML records, including optional full text indexing with <a href="/wiki/indexing:full_text_tools" class="wikilink1" title="indexing:full_text_tools" data-wiki-id="indexing:full_text_tools">Aperture</a>.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/legacy:vufind_1.x_developer_manual:user_interface_customization#theme_inheritance" class="wikilink1" title="legacy:vufind_1.x_developer_manual:user_interface_customization" data-wiki-id="legacy:vufind_1.x_developer_manual:user_interface_customization">Theme inheritance</a> now includes Javascript support; note that Javascript files have been reorganized to take advantage of this, which may require adjustments to locally customized templates.</div> </li> <li class="level1"><div class="li"> Support for cover images from Baker &amp; Taylor&#039;s <a href="http://www.btol.com/pdfs/content_cafe.pdf" class="urlextern" title="http://www.btol.com/pdfs/content_cafe.pdf" rel="ugc nofollow">Content Café</a> subscription service.</div> </li> <li class="level1"><div class="li"> Upgraded to latest version of <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> MARC import tool (v2.2).</div> </li> <li class="level1"><div class="li"> Improved favorite list management features.</div> </li> <li class="level1"><div class="li"> New optional jQuery/Blueprint theme.</div> </li> <li class="level1"><div class="li"> Bug fixes.</div> </li> </ul> </div> <h2 class="sectionedit73" id="release_101_-_8_13_2010">Release 1.0.1 - 8/13/2010</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_to_101" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> 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).</div> </li> <li class="level1"><div class="li"> Added NewGenLib ILS driver.</div> </li> <li class="level1"><div class="li"> Added basic <a href="/wiki/indexing:oai-pmh" class="wikilink1" title="indexing:oai-pmh" data-wiki-id="indexing:oai-pmh">OAI-PMH harvester</a> tool.</div> </li> <li class="level1"><div class="li"> More flexible configuration of sort options (you can now specify tie-breakers).</div> </li> <li class="level1"><div class="li"> Bug fixes to address issues discovered during the first month of VuFind 1.0 deployment. See <a href="http://vufind.org/jira/browse/VUFIND/fixforversion/10020" class="urlextern" title="http://vufind.org/jira/browse/VUFIND/fixforversion/10020" rel="ugc nofollow">JIRA</a> for details on bugs, including patches for the most critical problems.</div> </li> </ul> </div> <h2 class="sectionedit74" id="release_10_-_7_15_2010">Release 1.0 - 7/15/2010</h2> <div class="level2"> <p> <em> WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_rc2_to_10" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>. </em> </p> <ul> <li class="level1"><div class="li"> Upgraded to Solr 1.4.1, the latest bugfix release of the index engine.</div> </li> <li class="level1"><div class="li"> Dewey Decimal support (see <a href="/wiki/configuration:call_numbers" class="wikilink1" title="configuration:call_numbers" data-wiki-id="configuration:call_numbers">Call Numbers</a> page for more details).</div> </li> <li class="level1"><div class="li"> Recommendations module interface to create custom recommendations for individual search types (see <a href="/wiki/legacy:vufind_1.x_developer_manual:building_a_recommendations_module" class="wikilink1" title="legacy:vufind_1.x_developer_manual:building_a_recommendations_module" data-wiki-id="legacy:vufind_1.x_developer_manual:building_a_recommendations_module">Building a Recommendations Module</a> for more details).</div> </li> <li class="level1"><div class="li"> <a href="/wiki/legacy:vufind_1.x_developer_manual:supporting_a_new_metadata_format" class="wikilink1" title="legacy:vufind_1.x_developer_manual:supporting_a_new_metadata_format" data-wiki-id="legacy:vufind_1.x_developer_manual:supporting_a_new_metadata_format">Record Driver</a> mechanism to help with ingesting record formats other than MARC.</div> </li> <li class="level1"><div class="li"> Mobile interface.</div> </li> <li class="level1"><div class="li"> Summon module.</div> </li> <li class="level1"><div class="li"> Expanded support for non-English languages.</div> </li> <li class="level1"><div class="li"> Many bug fixes and new configuration options.</div> </li> </ul> </div> <h2 class="sectionedit75" id="release_10rc2_-_12_14_2009">Release 1.0RC2 - 12/14/2009</h2> <div class="level2"> <p> <em>WARNING: If you are upgrading to this release, see the <a href="/wiki/legacy:installation:migration_notes#upgrading_rc1_to_rc2" class="wikilink1" title="legacy:installation:migration_notes" data-wiki-id="legacy:installation:migration_notes">migration notes</a>.</em> </p> <ul> <li class="level1"><div class="li"> Upgraded to Solr 1.4, the latest official release of the index engine.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Facets are no longer retrieved via AJAX for faster search result display.</div> </li> <li class="level1"><div class="li"> Revamped (and fully functional) advanced search (thanks to Greg Pendlebury).</div> </li> <li class="level1"><div class="li"> Searches are now fully customizable through configuration files – you don&#039;t need to change any code. See <a href="/wiki/configuration:search_customization" class="wikilink1" title="configuration:search_customization" data-wiki-id="configuration:search_customization">Search Customization</a> for details.</div> </li> <li class="level1"><div class="li"> 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 <a href="/wiki/legacy:vufind_1.x_developer_manual:user_interface_customization#theme_inheritance" class="wikilink1" title="legacy:vufind_1.x_developer_manual:user_interface_customization" data-wiki-id="legacy:vufind_1.x_developer_manual:user_interface_customization">Theme Inheritance</a> for more details.</div> </li> <li class="level1"><div class="li"> Updated <a href="/wiki/indexing:solrmarc" class="wikilink1" title="indexing:solrmarc" data-wiki-id="indexing:solrmarc">SolrMarc</a> 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).</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> New default theme – a whole new user interface look and feel, without losing the option to retain the original “classic” look.</div> </li> <li class="level1"><div class="li"> Improved Admin interface – view statistics and configuration files from one convenient place.</div> </li> <li class="level1"><div class="li"> Improved authentication code – added Shibboleth support, made LDAP support more flexible, fixed minor problems with other methods. </div> </li> <li class="level1"><div class="li"> Flexible session handling: store session in Memcache, MySQL or the local filesystem.</div> </li> <li class="level1"><div class="li"> New logging mechanism (configurable in config.ini) allows fatal errors to be captured to file, database or email for better discovery of problems.</div> </li> <li class="level1"><div class="li"> Many, many bug fixes and security improvements.</div> </li> </ul> </div> <h2 class="sectionedit76" id="release_10rc1_-_10_15_2008">Release 1.0RC1 - 10/15/2008</h2> <div class="level2"> <p> Change information is unavailable for this release. </p> </div> <h2 class="sectionedit77" id="release_082_revision_549_-_4_21_2008">Release 0.8.2 (Revision 549) - 4/21/2008</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Fixed importing bugs from 0.8.1 release</div> </li> <li class="level1"><div class="li"> Improved author information indexing</div> </li> <li class="level1"><div class="li"> Revised record format detection in importer</div> </li> <li class="level1"><div class="li"> Added clean Era on import</div> </li> <li class="level1"><div class="li"> Fixed boolean searching</div> </li> <li class="level1"><div class="li"> Fixed Narrow Search Results js error</div> </li> <li class="level1"><div class="li"> Fixed Browse Module - Thanks to Bob Wicksall</div> </li> <li class="level1"><div class="li"> Fixed Syndetics Reviews - Thanks to Joel Norman</div> </li> </ul> </div> <h2 class="sectionedit78" id="release_081_revision_530_-_4_15_2008">Release 0.8.1 (Revision 530) - 4/15/2008</h2> <div class="level2"> <p> <em>WARNING: For this release you must <a href="/wiki/indexing:re-indexing" class="wikilink1" title="indexing:re-indexing" data-wiki-id="indexing:re-indexing">re-index records</a>.</em> </p> <ul> <li class="level1"><div class="li"> Search queries - queries have been restructured to be more powerful and higher quality with better relevancy ranking</div> </li> <li class="level1"><div class="li"> Searching - filter out illegal characters</div> </li> <li class="level1"><div class="li"> Searching - user&#039;s input is now tokenized and a AND query and OR query are now generated</div> </li> <li class="level1"><div class="li"> Index data - punctuation in Title, Subject, Date, ISBN fields are now cleaned </div> </li> <li class="level1"><div class="li"> Index data - isbn &amp; issn fields are now multivalued</div> </li> <li class="level1"><div class="li"> Index data - added new fields to allow more granular control of searching</div> </li> <li class="level1"><div class="li"> Languages - All 450+ ISO languages are now recognized</div> </li> <li class="level1"><div class="li"> Import - fixed import.sh to work easier</div> </li> <li class="level1"><div class="li"> Record View - revised subject links to be accurate</div> </li> <li class="level1"><div class="li"> Record View - fixed display of tags</div> </li> <li class="level1"><div class="li"> Facets - Fixed narrow by call number</div> </li> <li class="level1"><div class="li"> Author page - author name cleaned up to allow better results from wikipedia</div> </li> <li class="level1"><div class="li"> Synonyms - added some basic synonyms to synonyms.txt file</div> </li> </ul> </div> <h2 class="sectionedit79" id="release_08_revision_402_-_3_18_2008">Release 0.8 (Revision 402) - 3/18/2008</h2> <div class="level2"> <p> <em>WARNING: For this release you must <a href="/wiki/indexing:re-indexing" class="wikilink1" title="indexing:re-indexing" data-wiki-id="indexing:re-indexing">re-index records</a>.</em> </p> <ul> <li class="level1"><div class="li"> New Import Tool - Developed by Wayne Graham of William and Mary College</div> </li> <li class="level1"><div class="li"> Data directory is no longer used</div> </li> <li class="level1"><div class="li"> Refactored Record Module to use <abbr title="HyperText Markup Language">HTML</abbr> for display instead of XSL</div> </li> <li class="level1"><div class="li"> Place Hold/Recall is now incorporated into the system and available for Voyager Systems. More ILS systems will be intergrated as soon as possible</div> </li> <li class="level1"><div class="li"> Book Covers and Book Reviews can now be supplied by other providers other than Amazon. Syndetics and Google Books are included as well.</div> </li> <li class="level1"><div class="li"> Innovative Driver - Development by Adam Brin.</div> </li> </ul> </div> <h2 class="sectionedit80" id="release_07_revision_264_-_12_12_2007">Release 0.7 (Revision 264) - 12/12/2007</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Internationalization - VuFind has been translated into German, Spanish, French, Japanese, Brazilian Portugese and Chinese.</div> </li> <li class="level1"><div class="li"> Zotero - Users of VuFind can now save items to their Zotero plugin.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> 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.</div> </li> <li class="level1"><div class="li"> Narrow Results now include a facet called Subject Area that is based on the Call Number.</div> </li> <li class="level1"><div class="li"> Logged in interface has been redesigned</div> </li> <li class="level1"><div class="li"> AJAX Queries on search results page were consolidated for better performance Patch by Chris Delis.</div> </li> <li class="level1"><div class="li"> Added “more” and “less” functionality to the results facets to allow for more that 5 options to show. Patch by Chris Delis.</div> </li> <li class="level1"><div class="li"> Improved all fields search algorithm.</div> </li> <li class="level1"><div class="li"> Improved “Similiar Items” algorithm.</div> </li> <li class="level1"><div class="li"> Added a “Search Within” feature.</div> </li> <li class="level1"><div class="li"> Added basic Aleph Driver by Christoph Krempe</div> </li> <li class="level1"><div class="li"> Added basic SirsiDynix Sybase Driver by Matt Mackey</div> </li> <li class="level1"><div class="li"> Holdings tab is now the default tab on the Record View page</div> </li> <li class="level1"><div class="li"> Bug Fix: Install script now creates the MySQL database correctly</div> </li> <li class="level1"><div class="li"> Bug Fix: Deleting of favorites now works correctly</div> </li> </ul> </div> <h2 class="sectionedit81" id="release_061_revision_133_-_8_22_2007">Release 0.6.1 (Revision 133) - 8/22/2007</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Bug Fix: Narrow Results did not work in Safari and IE7</div> </li> <li class="level1"><div class="li"> Bug Fix: Install script did not install all necessary libraries</div> </li> <li class="level1"><div class="li"> Bug Fix: Advanced search not working correctly</div> </li> <li class="level1"><div class="li"> Bug Fix: Voyager driver now has configurable port number</div> </li> <li class="level1"><div class="li"> Added debug option in configuration</div> </li> </ul> </div> <h2 class="sectionedit82" id="release_06_revision_118_-_8_16_2007">Release 0.6 (Revision 118) - 8/16/2007</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> New Tagging/Favorites System and New MySQL Database Schema</div> </li> <li class="level1"><div class="li"> Redesigned “logged-in” Homepage</div> </li> <li class="level1"><div class="li"> Users can view their checked out items</div> </li> <li class="level1"><div class="li"> Narrow by Callnumber</div> </li> <li class="level1"><div class="li"> New fields in SOLR Schema</div> </li> <li class="level1"><div class="li"> Enhanced import script with new data cleanup mechanisms</div> </li> <li class="level1"><div class="li"> Revised advanced search mechanism</div> </li> <li class="level1"><div class="li"> Enhanced installation script</div> </li> <li class="level1"><div class="li"> Migrated from Tomcat to Jetty for ease of packaging (Thanks to Wayne Graham)</div> </li> <li class="level1"><div class="li"> New control script (vufind.sh) for new Jetty Server (Thanks to Wayne Graham)</div> </li> <li class="level1"><div class="li"> Bug Fix: Login popup window</div> </li> <li class="level1"><div class="li"> Bug Fix: Missing book cover images and Amazon reviews</div> </li> <li class="level1"><div class="li"> Bug Fix: More Like This - strange inclusions</div> </li> <li class="level1"><div class="li"> Bug Fix: Holdings Tab display works with latest Structures_Datagrid library</div> </li> <li class="level1"><div class="li"> And many more bug fixes…</div> </li> </ul> </div> <h2 class="sectionedit83" id="release_05_-_7_18_2007">Release 0.5 - 7/18/2007</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> Spelling Correction</div> </li> <li class="level1"><div class="li"> Tagging and Commenting per Record</div> </li> <li class="level1"><div class="li"> Save Resources</div> </li> <li class="level1"><div class="li"> Database Authentication</div> </li> <li class="level1"><div class="li"> Search History</div> </li> <li class="level1"><div class="li"> Author Pages</div> </li> <li class="level1"><div class="li"> More Like This</div> </li> </ul> </div> <h2 class="sectionedit84" id="alpha">Alpha</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> MARCXML Initial Import Script</div> </li> <li class="level1"><div class="li"> Result Facets</div> </li> <li class="level1"><div class="li"> Live Status Information</div> </li> <li class="level1"><div class="li"> LDAP Authentication</div> </li> </ul> </div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>changelog.txt</bdi> · Last modified: 2024/11/26 15:48 by <bdi>demiankatz</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Page Tools</h3> <div class="tools"> <ul> <li class="source"><a href="/wiki/changelog?do=edit" title="Show pagesource [v]" rel="nofollow" accesskey="v"><span>Show pagesource</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5l3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41-3.74 3.74m11.16 0l-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41 3.74-3.74z"/></svg></a></li><li class="revs"><a href="/wiki/changelog?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o"><span>Old revisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/wiki/changelog?do=backlink" title="Backlinks" rel="nofollow"><span>Backlinks</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t"><span>Back to top</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> </div></div></div><!-- /site --> <div class="no"><img src="/wiki/lib/exe/taskrunner.php?id=changelog&amp;1732697810" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div> <footer> <div class="content"> <!-- ********** FOOTER ********** --> <div id="dokuwiki__footer"><div class="pad"> <div class="bar" id="bar__bottom"> <div class="bar-left" id="bar__bottomleft"> <form class="button btn_source" method="post" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="edit" /><button type="submit" accesskey="v" title="Show pagesource [V]"><span>Show pagesource</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5l3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41-3.74 3.74m11.16 0l-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41 3.74-3.74z"/></svg></button></div></form> <form class="button btn_revs" method="get" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="revisions" /><button type="submit" accesskey="o" title="Old revisions [O]"><span>Old revisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></button></div></form> </div> <div class="bar-right" id="bar__bottomright"> <form class="button btn_media" method="get" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="media" /><input type="hidden" name="ns" value="" /><button type="submit" title="Media Manager"><span>Media Manager</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M7 15l4.5-6 3.5 4.5 2.5-3L21 15m1-11h-8l-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M2 6H0v14a2 2 0 0 0 2 2h18v-2H2V6z"/></svg></button></div></form> <form class="button btn_admin" method="get" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="admin" /><button type="submit" title="Admin"><span>Admin</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 15.5A3.5 3.5 0 0 1 8.5 12 3.5 3.5 0 0 1 12 8.5a3.5 3.5 0 0 1 3.5 3.5 3.5 3.5 0 0 1-3.5 3.5m7.43-2.53c.04-.32.07-.64.07-.97 0-.33-.03-.66-.07-1l2.11-1.63c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.31-.61-.22l-2.49 1c-.52-.39-1.06-.73-1.69-.98l-.37-2.65A.506.506 0 0 0 14 2h-4c-.25 0-.46.18-.5.42l-.37 2.65c-.63.25-1.17.59-1.69.98l-2.49-1c-.22-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64L4.57 11c-.04.34-.07.67-.07 1 0 .33.03.65.07.97l-2.11 1.66c-.19.15-.25.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1.01c.52.4 1.06.74 1.69.99l.37 2.65c.04.24.25.42.5.42h4c.25 0 .46-.18.5-.42l.37-2.65c.63-.26 1.17-.59 1.69-.99l2.49 1.01c.22.08.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.66z"/></svg></button></div></form> <form class="button btn_login" method="get" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="login" /><input type="hidden" name="sectok" value="" /><button type="submit" title="Log In"><span>Log In</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></button></div></form> <form class="button btn_index" method="get" action="/wiki/changelog"><div class="no"><input type="hidden" name="do" value="index" /><button type="submit" accesskey="x" title="Sitemap [X]"><span>Sitemap</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 3h6v4H3V3m12 7h6v4h-6v-4m0 7h6v4h-6v-4m-2-4H7v5h6v2H5V9h2v2h6v2z"/></svg></button></div></form> <a class="nolink" href="#dokuwiki__top"><button class="button" onclick="window.scrollTo(0, 0)" title="Back to top">Back to top</button></a> </div> <div class="clearer"></div> </div> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Except where otherwise noted, content on this wiki is licensed under the following license: <bdi><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Noncommercial-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" rel="license"><img src="/wiki/lib/images/license/button/cc-by-nc-sa.png" alt="CC Attribution-Noncommercial-Share Alike 4.0 International" /></a> <!--<a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/wiki/lib/tpl/vufind_wiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/wiki/lib/tpl/vufind_wiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/wiki/lib/tpl/vufind_wiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/wiki/lib/tpl/vufind_wiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a>--> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/wiki/lib/tpl/vufind_wiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <!-- GITHUB RIBBON <a href="https://github.com/vufind-org/vufind"> <img style="position: absolute; top: 0; left: 0; border: 0; height: 100px" decoding="async" loading="lazy" src="https://vufind.org/images/github_fork.png" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1"> </a> --> <!-- Matomo --> <script type="text/javascript"> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://morpheus.library.villanova.edu/piwik/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '12']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> </div></footer><!-- /footer --> </div> </footer> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10