CINXE.COM

development:plugins:ils_drivers [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>development:plugins:ils_drivers [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="index,follow"/> <meta name="keywords" content="development,plugins,ils_drivers"/> <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/development:plugins:ils_drivers?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=development:plugins"/> <link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/development:plugins:ils_drivers"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/development:plugins:ils_drivers"/> <link rel="canonical" href="https://vufind.org/wiki/development:plugins:ils_drivers"/> <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='development:plugins';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":"development:plugins:ils_drivers","namespace":"development:plugins","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/development:plugins:ils_drivers?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="development:plugins:ils_drivers" /><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="development:plugins:ils_drivers" /><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/development:plugins:ils_drivers?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/wiki/development:plugins:ils_drivers?do=media&amp;ns=development%3Aplugins" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/wiki/development:plugins:ils_drivers?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/development" class="wikilink1" title="development" data-wiki-id="development">development</a></bdi> » <bdi><a href="/wiki/development:plugins" class="wikilink1" title="development:plugins" data-wiki-id="development:plugins">plugins</a></bdi> » <bdi><a href="/wiki/development:plugins:ils_drivers" class="wikilink1" title="development:plugins:ils_drivers" data-wiki-id="development:plugins:ils_drivers">ils_drivers</a></bdi></div> <div class="trace"><span class="bchead">Trace:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/wiki/development:plugins:ils_drivers" class="breadcrumbs" title="development:plugins:ils_drivers">ils_drivers</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>development:plugins:ils_drivers</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="#ils_drivers">ILS Drivers</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#key_plugin_details">Key Plugin Details</a></div></li> <li class="level2"><div class="li"><a href="#basic_structure">Basic Structure</a></div></li> <li class="level2"><div class="li"><a href="#key_methods">Key Methods</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#cancelholds">cancelHolds</a></div></li> <li class="level3"><div class="li"><a href="#cancelillrequests">cancelILLRequests</a></div></li> <li class="level3"><div class="li"><a href="#cancelstorageretrievalrequests">cancelStorageRetrievalRequests</a></div></li> <li class="level3"><div class="li"><a href="#changepassword">changePassword</a></div></li> <li class="level3"><div class="li"><a href="#checkillrequestisvalid">checkILLRequestIsValid</a></div></li> <li class="level3"><div class="li"><a href="#checkrequestisvalid">checkRequestIsValid</a></div></li> <li class="level3"><div class="li"><a href="#checkstorageretrievalrequestisvalid">checkStorageRetrievalRequestIsValid</a></div></li> <li class="level3"><div class="li"><a href="#findreserves">findReserves</a></div></li> <li class="level3"><div class="li"><a href="#getaccountblocks">getAccountBlocks</a></div></li> <li class="level3"><div class="li"><a href="#getcancelholddetails">getCancelHoldDetails</a></div></li> <li class="level3"><div class="li"><a href="#getcancelholdlink">getCancelHoldLink</a></div></li> <li class="level3"><div class="li"><a href="#getcancelillrequestdetails">getCancelILLRequestDetails</a></div></li> <li class="level3"><div class="li"><a href="#getcancelstorageretrievalrequestdetails">getCancelStorageRetrievalRequestDetails</a></div></li> <li class="level3"><div class="li"><a href="#getconfig">getConfig</a></div></li> <li class="level3"><div class="li"><a href="#getconsortialholdings">getConsortialHoldings</a></div></li> <li class="level3"><div class="li"><a href="#getcourses">getCourses</a></div></li> <li class="level3"><div class="li"><a href="#getdefaultpickuplocation">getDefaultPickUpLocation</a></div></li> <li class="level3"><div class="li"><a href="#getdepartments">getDepartments</a></div></li> <li class="level3"><div class="li"><a href="#getfunds">getFunds</a></div></li> <li class="level3"><div class="li"><a href="#getholddefaultrequireddate">getHoldDefaultRequiredDate</a></div></li> <li class="level3"><div class="li"><a href="#getholding">getHolding</a></div></li> <li class="level3"><div class="li"><a href="#getholdlink">getHoldLink</a></div></li> <li class="level3"><div class="li"><a href="#getillpickuplibraries">getILLPickupLibraries</a></div></li> <li class="level3"><div class="li"><a href="#getillpickuplocations">getILLPickupLocations</a></div></li> <li class="level3"><div class="li"><a href="#getinstructors">getInstructors</a></div></li> <li class="level3"><div class="li"><a href="#getmyfines">getMyFines</a></div></li> <li class="level3"><div class="li"><a href="#getmyholds">getMyHolds</a></div></li> <li class="level3"><div class="li"><a href="#getmyillrequests">getMyILLRequests</a></div></li> <li class="level3"><div class="li"><a href="#getmyprofile">getMyProfile</a></div></li> <li class="level3"><div class="li"><a href="#getmystorageretrievalrequests">getMyStorageRetrievalRequests</a></div></li> <li class="level3"><div class="li"><a href="#getmytransactionhistory">getMyTransactionHistory</a></div></li> <li class="level3"><div class="li"><a href="#getmytransactions">getMyTransactions</a></div></li> <li class="level3"><div class="li"><a href="#getnewitems">getNewItems</a></div></li> <li class="level3"><div class="li"><a href="#getofflinemode">getOfflineMode</a></div></li> <li class="level3"><div class="li"><a href="#getpickuplocations">getPickUpLocations</a></div></li> <li class="level3"><div class="li"><a href="#getproxiedusers">getProxiedUsers</a></div></li> <li class="level3"><div class="li"><a href="#getproxyingusers">getProxyingUsers</a></div></li> <li class="level3"><div class="li"><a href="#getpurchasehistory">getPurchaseHistory</a></div></li> <li class="level3"><div class="li"><a href="#getrenewdetails">getRenewDetails</a></div></li> <li class="level3"><div class="li"><a href="#getrequestblocks">getRequestBlocks</a></div></li> <li class="level3"><div class="li"><a href="#getrequestgroups">getRequestGroups</a></div></li> <li class="level3"><div class="li"><a href="#getstatus">getStatus</a></div></li> <li class="level3"><div class="li"><a href="#getstatuses">getStatuses</a></div></li> <li class="level3"><div class="li"><a href="#getsuppressedauthorityrecords">getSuppressedAuthorityRecords</a></div></li> <li class="level3"><div class="li"><a href="#getsuppressedrecords">getSuppressedRecords</a></div></li> <li class="level3"><div class="li"><a href="#geturlsforrecord">getUrlsForRecord</a></div></li> <li class="level3"><div class="li"><a href="#hasholdings">hasHoldings</a></div></li> <li class="level3"><div class="li"><a href="#init">init</a></div></li> <li class="level3"><div class="li"><a href="#loginishidden">loginIsHidden</a></div></li> <li class="level3"><div class="li"><a href="#patronlogin">patronLogin</a></div></li> <li class="level3"><div class="li"><a href="#placehold">placeHold</a></div></li> <li class="level3"><div class="li"><a href="#placeillrequest">placeILLRequest</a></div></li> <li class="level3"><div class="li"><a href="#placestorageretrievalrequest">placeStorageRetrievalRequest</a></div></li> <li class="level3"><div class="li"><a href="#purgetransactionhistory">purgeTransactionHistory</a></div></li> <li class="level3"><div class="li"><a href="#renewmyitems">renewMyItems</a></div></li> <li class="level3"><div class="li"><a href="#renewmyitemslink">renewMyItemsLink</a></div></li> <li class="level3"><div class="li"><a href="#setconfig">setConfig</a></div></li> <li class="level3"><div class="li"><a href="#supportsmethod">supportsMethod</a></div></li> <li class="level3"><div class="li"><a href="#updateholds">updateHolds</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#further_reading">Further Reading</a></div></li> <li class="level2"><div class="li"><a href="#related_video">Related Video</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="ils_drivers">ILS Drivers</h1> <div class="level1"> <p> This page contains details on writing a custom driver for an integrated library system not already supported by VuFind®. VuFind® supports many platforms, so check to see if it already has support before you try to write your own! </p> </div> <h2 class="sectionedit2" id="key_plugin_details">Key Plugin Details</h2> <div class="level2"> <p> <strong>Default Namespace:</strong> \VuFind\ILS\Driver </p> <p> <strong>Interface:</strong> <a href="https://github.com/vufind-org/vufind/blob/dev/module/VuFind/src/VuFind/ILS/Driver/DriverInterface.php" class="urlextern" title="https://github.com/vufind-org/vufind/blob/dev/module/VuFind/src/VuFind/ILS/Driver/DriverInterface.php" rel="ugc nofollow">\VuFind\ILS\Driver\DriverInterface</a> </p> <p> <strong>Service Locator Configuration Section in module.config.php:</strong> [&#039;vufind&#039;][&#039;plugin_managers&#039;][&#039;ils_driver&#039;] </p> <p> <strong>Service Manager Name for Service Locator:</strong> VuFind\ILS\Driver\PluginManager </p> <p> See the <a href="/wiki/development:plugins:general_information" class="wikilink1" title="development:plugins:general_information" data-wiki-id="development:plugins:general_information">General Plugin Information</a> page for more details on VuFind® plugins. </p> </div> <h2 class="sectionedit3" id="basic_structure">Basic Structure</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> The PHP driver class must be registered in the service locator with the value used as the driver setting in the [Catalog] 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"> The driver class must implement the VuFind\ILS\Driver\DriverInterface. For convenience, most drivers will achieve this by extending VuFind\ILS\Driver\AbstractBase.</div> </li> <li class="level1"><div class="li"> You may wish to define a catalog-specific .ini file in VuFind®&#039;s configuration directory – the name of this file should correspond with the base class name of the driver (i.e. for VuFind\ILS\Driver\Voyager, use Voyager.ini). This configuration will be automatically loaded and sent to the setConfig() method by the VuFind\ILS\Connection wrapper class; you do not need to write explicit config loading into your driver.</div> </li> <li class="level1"><div class="li"> All heavy-weight initialization logic (i.e. establishing database connections) and configuration validation should take place in the init() method, NOT the constructor. Driver constructors should be as light-weight as possible.</div> </li> </ul> </div> <h2 class="sectionedit4" id="key_methods">Key Methods</h2> <div class="level2"> <p> ILS Drivers must contain some or all of the following methods (optional methods are marked as such in their descriptions). It should be assumed that any method may throw a VuFind\Exception\ILS object in case of an unexpected problem. </p> </div> <h3 class="sectionedit5" id="cancelholds">cancelHolds</h3> <div class="level3"> <p> This method cancels a list of holds for a specific patron. (optional) <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1"><div class="li"> Input: cancelDetails An associative array with two keys: patron (array returned by the driver&#039;s patronLogin method) and details (an array of strings – either cancel_details values provided by the getMyHolds method, or values returned by the driver&#039;s getCancelHoldDetails method if cancel_details was unset)</div> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> count – The number of items successfully cancelled</div> </li> <li class="level2 node"><div class="li"> items – Associative array where key matches one of the item_id values returned by getMyHolds and the value is an associative array with these keys:</div> <ul> <li class="level3"><div class="li"> success – Boolean true or false</div> </li> <li class="level3"><div class="li"> status – A status message from the language file (required – VuFind®-specific message, subject to translation)</div> </li> <li class="level3"><div class="li"> sysMessage - A system supplied failure message (optional – useful for passing additional details from the ILS)</div> </li> </ul> </li> </ul> </li> </ul> </div> <h3 class="sectionedit6" id="cancelillrequests">cancelILLRequests</h3> <div class="level3"> <p> This method cancels a list of ILL requests for a specific patron. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1"><div class="li"> Input: cancelDetails An associative array with two keys: patron (array returned by the driver&#039;s patronLogin method) and details (an array of strings returned by the driver&#039;s getCancelILLRequestDetails method)</div> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> count – The number of items successfully cancelled</div> </li> <li class="level2 node"><div class="li"> items – Associative array where key matches one of the item_id values returned by getMyILLRequests and the value is an associative array with these keys:</div> <ul> <li class="level3"><div class="li"> success – Boolean true or false</div> </li> <li class="level3"><div class="li"> status – A status message from the language file (required – VuFind®-specific message, subject to translation)</div> </li> <li class="level3"><div class="li"> sysMessage - A system supplied failure message (optional – useful for passing additional details from the ILS)</div> </li> </ul> </li> </ul> </li> </ul> </div> <h3 class="sectionedit7" id="cancelstorageretrievalrequests">cancelStorageRetrievalRequests</h3> <div class="level3"> <p> This method cancels a list of storage retrieval requests for a specific patron. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1"><div class="li"> Input: cancelDetails An associative array with two keys: patron (array returned by the driver&#039;s patronLogin method) and details (an array of strings returned by the driver&#039;s getCancelStorageRetrievalRequestDetails method)</div> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> count – The number of items successfully cancelled</div> </li> <li class="level2 node"><div class="li"> items – Associative array where key matches one of the item_id values returned by getMyStorageRetrievalRequests and the value is an associative array with these keys:</div> <ul> <li class="level3"><div class="li"> success – Boolean true or false</div> </li> <li class="level3"><div class="li"> status – A status message from the language file (required – VuFind®-specific message, subject to translation)</div> </li> <li class="level3"><div class="li"> sysMessage - A system supplied failure message (optional – useful for passing additional details from the ILS)</div> </li> </ul> </li> </ul> </li> </ul> </div> <h3 class="sectionedit8" id="changepassword">changePassword</h3> <div class="level3"> <p> This method changes patron&#039;s password (PIN code). (optional) <em> Not supported prior to VuFind® 2.4 </em> </p> <ul> <li class="level1 node"><div class="li"> Input: details An associative array with three keys:</div> <ul> <li class="level2"><div class="li"> patron - The patron array from patronLogin</div> </li> <li class="level2"><div class="li"> oldPassword - Old password</div> </li> <li class="level2"><div class="li"> newPassword - New password</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> success – Boolean true or false</div> </li> <li class="level2"><div class="li"> status – A status message from the language file (required – VuFind®-specific message, subject to translation)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit9" id="checkillrequestisvalid">checkILLRequestIsValid</h3> <div class="level3"> <p> <em> Not supported prior to VuFind® 2.3 </em> </p> <p> This optional method can be used to check if a particular user is allowed to place an ILL request on a particular item. If you omit this method, the driver will still operate correctly; however, implementing it allows minor enhancements to the user experience. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID, Item Data (similar to the details parameter passed to the placeILLRequest() method, but without the &#039;patron&#039; key), Patron Data (from patronLogin() method)</div> </li> <li class="level1"><div class="li"> Output: True if item may be requested, false if not. Prior to VuFind® 4.0, this might also return “block” if the patron is blocked from making requests; that functionality has been superseded by the getRequestBlocks method. Starting with VuFind® 4.0, this may also return an array with two keys: valid (boolean) plus status (message string to display to user).</div> </li> </ul> </div> <h3 class="sectionedit10" id="checkrequestisvalid">checkRequestIsValid</h3> <div class="level3"> <p> Introduced in VuFind® 1.3, this optional method can be used to check if a particular user is allowed to place a hold/recall request on a particular item. If you omit this method, the driver will still operate correctly; however, implementing it allows minor enhancements to the user experience. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID, Item Data (similar to the holdDetails parameter passed to the placeHold() method, but without the &#039;patron&#039; key), Patron Data (from patronLogin() method)</div> </li> <li class="level1"><div class="li"> Output: True if item may be requested, false if not. Starting with VuFind® 4.0, this may also return an array with two keys: valid (boolean) plus status (message string to display to user).</div> </li> </ul> </div> <h3 class="sectionedit11" id="checkstorageretrievalrequestisvalid">checkStorageRetrievalRequestIsValid</h3> <div class="level3"> <p> <em> Not supported prior to VuFind® 2.3 </em> </p> <p> This optional method can be used to check if a particular user is allowed to place a storage retrieval request on a particular item. If you omit this method, the driver will still operate correctly; however, implementing it allows minor enhancements to the user experience. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID, Item Data (similar to the details parameter passed to the placeStorageRetrievalRequest() method, but without the &#039;patron&#039; key), Patron Data (from patronLogin() method)</div> </li> <li class="level1"><div class="li"> Output: True if item may be requested, false if not. Prior to VuFind® 4.0, this might also return “block” if the patron is blocked from making requests; that functionality has been superseded by the getRequestBlocks method. Starting with VuFind® 4.0, this may also return an array with two keys: valid (boolean) plus status (message string to display to user).</div> </li> </ul> </div> <h3 class="sectionedit12" id="findreserves">findReserves</h3> <div class="level3"> <p> This method returns items that are on reserve for the specified course, instructor and/or department. </p> <ul> <li class="level1"><div class="li"> Input: CourseID, InstructorID, DepartmentID (these values come from the corresponding getCourses, getInstructors and getDepartments methods; any of these three filters may be set to a blank string to skip)</div> </li> <li class="level1 node"><div class="li"> Output: An array of associative arrays representing reserve items. Array keys:</div> <ul> <li class="level2"><div class="li"> BIB_ID - The record ID of the current reserve item.</div> </li> <li class="level2"><div class="li"> COURSE_ID - The course ID associated with the current reserve item, if any (required when using Solr-based reserves).</div> </li> <li class="level2"><div class="li"> DEPARTMENT_ID - The department ID associated with the current reserve item, if any (required when using Solr-based reserves).</div> </li> <li class="level2"><div class="li"> INSTRUCTOR_ID - The instructor ID associated with the current reserve item, if any (required when using Solr-based reserves).</div> </li> <li class="level2"><div class="li"> DISPLAY_CALL_NO - The call number of the current reserve item (never used; deprecated).</div> </li> <li class="level2"><div class="li"> AUTHOR - The author of the current reserve item (never used; deprecated).</div> </li> <li class="level2"><div class="li"> TITLE - The title of the current reserve item (never used; deprecated).</div> </li> <li class="level2"><div class="li"> PUBLISHER - The publisher of the current reserve item (never used; deprecated).</div> </li> <li class="level2"><div class="li"> PUBLISHER_DATE - The publication date of the current reserve item (never used; deprecated).</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit13" id="getaccountblocks">getAccountBlocks</h3> <div class="level3"> <p> This optional method returns an array of strings describing blocks on the user&#039;s account (for example, lost items, financial violations, etc.). If no blocks are in place, it returns false. <em> Not supported prior to VuFind® 4.0 </em> </p> <ul> <li class="level1"><div class="li"> Input: patron (array returned by the driver&#039;s patronLogin method)</div> </li> <li class="level1"><div class="li"> Output: array or false</div> </li> </ul> </div> <h3 class="sectionedit14" id="getcancelholddetails">getCancelHoldDetails</h3> <div class="level3"> <p> This method returns a string to use as the input form value for cancelling each hold item. If determining this identifier does not require complex calculations, you can fill in the cancel_details key directly in the getMyHolds method instead of implementing this method. (optional, but required if you implement cancelHolds and do not provide cancel_details in getMyHolds). <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1 node"><div class="li"> Input:</div> <ul> <li class="level2"><div class="li"> holdDetails - One of the individual item arrays returned by the getMyHolds method</div> </li> <li class="level2"><div class="li"> patron (array returned by the driver&#039;s patronLogin method) <em> Added in VuFind® 8.0 </em></div> </li> </ul> </li> <li class="level1"><div class="li"> Output: A string to use as the input form value for cancelling each hold item; you can pass any data that is needed by your ILS to identify the hold – the output of this method will be used as part of the input to the cancelHolds method. Starting with VuFind® 3.0, you may indicate holds which are not allowed to be cancelled by returning an empty string.</div> </li> </ul> </div> <h3 class="sectionedit15" id="getcancelholdlink">getCancelHoldLink</h3> <div class="level3"> <p> This method returns a <abbr title="Uniform Resource Locator">URL</abbr> to use as a link to a native OPAC for cancelling each hold item. (optional – only implement this if your ILS is unable to support implementation of the cancelHolds method). <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1 node"><div class="li"> Input:</div> <ul> <li class="level2"><div class="li"> holdDetails - One of the individual item arrays returned by getMyHolds method</div> </li> <li class="level2"><div class="li"> patron (array returned by the driver&#039;s patronLogin method) <em> Added in VuFind® 8.0 </em></div> </li> </ul> </li> <li class="level1"><div class="li"> Output: A <abbr title="Uniform Resource Locator">URL</abbr> to a native OPAC for cancelling each hold item</div> </li> </ul> </div> <h3 class="sectionedit16" id="getcancelillrequestdetails">getCancelILLRequestDetails</h3> <div class="level3"> <p> This method returns a string to use as the input form value for cancelling each hold item. (optional, but required if you implement cancelILLRequests). <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1 node"><div class="li"> Input:</div> <ul> <li class="level2"><div class="li"> details - One of the individual item arrays returned by the getMyILLRequests method</div> </li> <li class="level2"><div class="li"> patron (array returned by the driver&#039;s patronLogin method)</div> </li> </ul> </li> <li class="level1"><div class="li"> Output: A string to use as the input form value for cancelling each request; you can pass any data that is needed by your ILS to identify the request – the output of this method will be used as part of the input to the cancelILLRequests method.</div> </li> </ul> </div> <h3 class="sectionedit17" id="getcancelstorageretrievalrequestdetails">getCancelStorageRetrievalRequestDetails</h3> <div class="level3"> <p> This method returns a string to use as the input form value for cancelling each hold item. (optional, but required if you implement cancelStorageRetrievalRequests). <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1 node"><div class="li"> Input:</div> <ul> <li class="level2"><div class="li"> details - One of the individual item arrays returned by the getMyStorageRetrievalRequests method</div> </li> <li class="level2"><div class="li"> patron (array returned by the driver&#039;s patronLogin method)</div> </li> </ul> </li> <li class="level1"><div class="li"> Output: A string to use as the input form value for cancelling each request; you can pass any data that is needed by your ILS to identify the request – the output of this method will be used as part of the input to the cancelStorageRetrievalRequests method.</div> </li> </ul> </div> <h3 class="sectionedit18" id="getconfig">getConfig</h3> <div class="level3"> <p> This method returns driver configuration settings related to a particular function. It is primarily used to get the configuration settings for placing holds. (optional, but necessary if you want to implement hold or other request functionality) <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1 node"><div class="li"> Input:</div> <ul> <li class="level2"><div class="li"> A string corresponding with the function to check (“cancelHolds”, “Holds”, “Renewals”; from v2.3: “cancelStorageRetrievalRequests”, “storageRetrievalRequests”, “cancelILLRequests”, “ILLRequests”); from v2.4: “changePassword”</div> </li> <li class="level2"><div class="li"> From 2.4: An optional string (record or patron id) or an array of function-specific parameters </div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Output: An associative array of configuration settings</div> <ul> <li class="level2 node"><div class="li"> Array keys used for input of “cancelHolds”, “cancelStorageRetrievalRequests” (from v2.3) and “cancelILLRequests” (from v2.3)</div> <ul> <li class="level3"><div class="li"> No required keys at this time</div> </li> </ul> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “Holdings”</div> <ul> <li class="level3"><div class="li"> itemLimit (optional) - The page size used when retrieving holdings data in a paginated format (see <a href="#getholding" title="development:plugins:ils_drivers ↵" class="wikilink1">getHolding()</a>). <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> In VuFind® 6.0.x, this was erroneously included in the “Holds” section instead, but it was moved to “Holdings” beginning with release 6.1.</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “Holds”</div> <ul> <li class="level3"><div class="li"> HMACKeys - a colon-separated list of fields to verify with a hash key when submitting a hold form (at a minimum, “id” is recommended). Note that this is used for verifying VuFind®&#039;s own hold form; it is not directly tied to the ILS in any way. MUST BE PROVIDED in order to place holds within VuFind®; if omitted, VuFind® will attempt to fail over from placeHold to placeHoldLink functionality. This also serves another important purpose: any keys in the return array from getHolding will be passed to placeHold if they match entries in this list. This makes it possible to pass through all of the the necessary details about placing a hold.</div> </li> <li class="level3"><div class="li"> extraHoldFields (optional) - a colon-separated list of form fields to include in the place hold form; may include “comments”, “requiredByDate”, “pickUpLocation” and (from VuFind® 8.0) “startDate”. Note that all parameters activated here must be processed by the placeHold method.</div> </li> <li class="level3 node"><div class="li"> defaultRequiredDate - A colon-separated list used to set the default “not required after” date for holds in the format days:months:years (e.g. 0:1:0 will set a “not required after” date of 1 month from the current date).</div> <ul> <li class="level4"><div class="li"> This only applies if extraHoldFields includes “requiredByDate.”</div> </li> <li class="level4"><div class="li"> Starting with VuFind® 2.3, you may prefix this string with “driver:” to attempt to load a default date from the ILS based on internal rules instead of calculating one in VuFind®; if the ILS calls, the relative rules will still be used (e.g. “driver:0:1:0”); this feature requires that the driver implement the <a href="#getholddefaultrequireddate" title="development:plugins:ils_drivers ↵" class="wikilink1">getHoldDefaultRequiredDate()</a> method.</div> </li> </ul> </li> <li class="level3"><div class="li"> consortium (optional) - Boolean true or false (default): Does this driver provide consortial capabilities (e.g., XCNCIP2 driver)? If set to true, then the driver method getConsortialHoldings() will be called in order to to provide multiple Holding statuses in a consortial environment; this feature requires that the driver implement the <a href="#getconsortialholdings" title="development:plugins:ils_drivers ↵" class="wikilink1">getConsortialHoldings()</a> method. If set to false (or omitted), the <a href="#getholding" title="development:plugins:ils_drivers ↵" class="wikilink1">getHolding()</a> method will be called.</div> </li> <li class="level3"><div class="li"> itemLimit (optional, deprecated) - This setting was used here in VuFind® 6.0.x; it was moved to Holdings (see above) with release 6.1, but is still supported here for backward compatibility.</div> </li> <li class="level3"><div class="li"> helpText - A generic help text displayed on the hold request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, but everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[*] - (From VuFind® 8.0) A default help text displayed on the hold request form if not overridden. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[lng] - A language-specific help text displayed on the hold request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> updateHelpText[*] - (From VuFind® 8.0) A default help text displayed on the hold update form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> updateHelpText[lng] - (From VuFind® 8.0) A language-specific help text displayed on the hold update form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> updateFields (optional) - (From VuFind® 8.0) A colon-separated list of form fields to include in the update holds form; may include “frozen”, “frozenThrough”, “startDate”, “requiredByDate” and “pickUpLocation”. Note that all parameters activated here must be processed by the updateHolds method.</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “Renewals”</div> <ul> <li class="level3"><div class="li"> No required keys at this time</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “StorageRetrievalRequests” (from v2.3)</div> <ul> <li class="level3"><div class="li"> HMACKeys - a colon-separated list of fields to verify with a hash key when submitting a hold form (at a minimum, “id” is recommended). Note that this is used for verifying VuFind®&#039;s own request form; it is not directly tied to the ILS in any way. MUST BE PROVIDED in order to place requests within VuFind®. This also serves another important purpose: any keys in the return array from getHolding will be passed to placeStorageRetrievalRequest if they match entries in this list. This makes it possible to pass through all of the the necessary details about placing a request.</div> </li> <li class="level3"><div class="li"> extraFields (optional) - a colon-separated list of form fields to include in the request form; may include “comments”, “requiredByDate”, “pickUpLocation” and “item-issue”. Note that all parameters activated here must be processed by the placeStorageRetrievalRequest method.</div> </li> <li class="level3 node"><div class="li"> defaultRequiredDate - A colon-separated list used to set the default “not required after” date for requests in the format days:months:years (e.g. 0:1:0 will set a “not required after” date of 1 month from the current date).</div> <ul> <li class="level4"><div class="li"> This only applies if extraFields includes “requiredByDate.”</div> </li> </ul> </li> <li class="level3"><div class="li"> helpText - A generic help text displayed on the request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[*] - (From VuFind® 8.0) A default help text displayed on the request form if not overridden. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[lng] - A language-specific help text displayed on the request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “ILLRequests” (from v2.3)</div> <ul> <li class="level3"><div class="li"> HMACKeys - a colon-separated list of fields to verify with a hash key when submitting a hold form (at a minimum, “id” is recommended). Note that this is used for verifying VuFind®&#039;s own request form; it is not directly tied to the ILS in any way. MUST BE PROVIDED in order to place requests within VuFind®. This also serves another important purpose: any keys in the return array from getHolding will be passed to placeILLRequest if they match entries in this list. This makes it possible to pass through all of the the necessary details about placing a request.</div> </li> <li class="level3"><div class="li"> extraFields (optional) - a colon-separated list of form fields to include in the request form; may include “comments”, “requiredByDate”, “pickUpLocation”, “pickUpLibrary”, “pickUpLibraryLocation” and “itemId”. “pickUpLibraryLocation” is a special dynamic field that is populated based on “pickUpLibrary” using the <a href="#getillpickuplocations" title="development:plugins:ils_drivers ↵" class="wikilink1">getILLPickupLocations()</a> method, which must be implemented by the ILS driver. Note that all parameters activated here must be processed by the placeILLRequest method.</div> </li> <li class="level3 node"><div class="li"> defaultRequiredDate - A colon-separated list used to set the default “not required after” date for requests in the format days:months:years (e.g. 0:1:0 will set a “not required after” date of 1 month from the current date).</div> <ul> <li class="level4"><div class="li"> This only applies if extraFields includes “requiredByDate.”</div> </li> </ul> </li> <li class="level3"><div class="li"> helpText - A generic help text displayed on the request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[*] - (From VuFind® 8.0) A default help text displayed on the request form if not overridden. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> <li class="level3"><div class="li"> helpText[lng] - A language-specific help text displayed on the request form. Displayed as is; <abbr title="HyperText Markup Language">HTML</abbr> tags can be used, and everything needs to be properly escaped.</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Array keys used for input of “changePassword” (from v2.4)</div> <ul> <li class="level3"><div class="li"> minLength - Minimum length for a new password</div> </li> <li class="level3"><div class="li"> maxLength - Maximum length for a new password</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit19" id="getconsortialholdings">getConsortialHoldings</h3> <div class="level3"> <p> This optional method (see <a href="#getconfig" title="development:plugins:ils_drivers ↵" class="wikilink1">getConfig()</a>) queries the ILS for consortial holding information. </p> <ul> <li class="level1"><div class="li"> Input: RecordID, output of patronLogin (so that patron-specific data may be added to the return array), an array of RecordIDs (consortial “source records” for RecordID)</div> </li> <li class="level1"><div class="li"> Output: The same as described in <a href="#getholding" title="development:plugins:ils_drivers ↵" class="wikilink1">getHolding()</a>.</div> </li> </ul> </div> <h3 class="sectionedit20" id="getcourses">getCourses</h3> <div class="level3"> <p> This method queries the ILS for a list of courses to be used as input to the findReserves method (Optional) </p> <ul> <li class="level1"><div class="li"> Output: An associative array with key = course ID, value = course name.</div> </li> </ul> </div> <h3 class="sectionedit21" id="getdefaultpickuplocation">getDefaultPickUpLocation</h3> <div class="level3"> <p> This method returns the default pick up location code or id for use when placing holds and other requests. (optional) <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method (optional), hold information array similar to placeHold&#039;s input (optional, provided only when user is in the process of placing a hold – may be used to limit the available pickup options based on item ID, etc.; not supported prior to VuFind® 1.3)</div> </li> <li class="level2"><div class="li"> Output: A pick up location id or code (string); starting with VuFind® 2.3, this may also return false to force the user to choose a location.</div> </li> </ul> </div> <h3 class="sectionedit22" id="getdepartments">getDepartments</h3> <div class="level3"> <p> This method queries the ILS for a list of departments to be used as input to the findReserves method (Optional) </p> <ul> <li class="level1"><div class="li"> Output: An associative array with key = department ID, value = department name.</div> </li> </ul> </div> <h3 class="sectionedit23" id="getfunds">getFunds</h3> <div class="level3"> <p> Get a list of funds that can be used to limit the “new item” search. Note that “fund” may be a misnomer – if funds are not an appropriate way to limit your new item results, you can return a different set of values from this function. For example, you might just make this a wrapper for getDepartments(). The important thing is that whatever you return from this function, the IDs can be used as a limiter to the getNewItems() function, and the names are appropriate for display on the new item search screen. If you do not want or support such limits, just return an empty array here and the limit control on the new item search screen will disappear. </p> <ul> <li class="level1"><div class="li"> Output: An associative array with key = fund ID, value = fund name.</div> </li> </ul> </div> <h3 class="sectionedit24" id="getholddefaultrequireddate">getHoldDefaultRequiredDate</h3> <div class="level3"> <p> Get Default “Hold Required By” Date (optional). <em> Not supported until VuFind® 2.3. </em> </p> <p> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> This method is only called if the defaultRequiredDate setting in the ILS driver&#039;s .ini file has a “driver:” prefix. An example: </p> <pre class="code">[Holds] defaultRequiredDate = &#039;driver:0:2:0&#039;</pre> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method (optional), hold information array similar to placeHold&#039;s input (optional, provided only when user is in the process of placing a hold – may be used to limit the available pickup options based on item ID, etc.; must never add new options to the return array – may only be used as a limiter; not supported prior to VuFind® 1.3)</div> </li> <li class="level1"><div class="li"> Output: Unix timestamp (or null if no date available)</div> </li> </ul> </div> <h3 class="sectionedit25" id="getholding">getHolding</h3> <div class="level3"> <p> This method queries the ILS for holding information. </p> <p> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Starting with VuFind® 6.0, this method supports pagination to prevent retrieval of impractically large result sets. To support pagination, the getConfig(“Holds”) call must return an itemLimit value. </p> <p> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> In VuFind® 6.1, the reliance on the getConfig(“Holds”) call for retrieving itemLimit values was revised to use the more appropriate getConfig(“Holdings”) call instead. </p> <ul> <li class="level1"><div class="li"> Input: RecordID, output of patronLogin (so that patron-specific data may be added to the return array), additional options (beginning in release 6.0; these may include &#039;page&#039;, &#039;itemLimit&#039; and &#039;offset&#039; parameters used for result pagination).</div> </li> <li class="level1"><div class="li"> Output: Prior to release 6.0, returns an array of associative arrays, one for each item attached to the specified bibliographic record. Beginning with release 6.0, may instead return an associative array with &#039;total&#039; and &#039;holdings&#039; keys, where &#039;total&#039; is the total number of items available from the ILS, and &#039;holdings&#039; is the requested page of results, represented as associative arrays). Beginning with release 6.1, an &#039;electronic_holdings&#039; key may also be included, containing records for online items not found in the regular &#039;holdings&#039; array; these are highlighted at the top of the holdings display, independently from pagination, to ease access to available full content. Regardless of top-level format or whether it&#039;s a &#039;holding&#039; or &#039;electronic_holding&#039;, each associative array representing an item holding contains these keys:</div> </li> </ul> <div class="table sectionedit26"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> the RecordID that was passed in </td> </tr> <tr class="row2"> <td class="col0 leftalign"> availability </td><td class="col1"> boolean/int/AvailabilityStatusInterface </td><td class="col2"> yes </td><td class="col3"> * / 9.1 / 10.0 </td><td class="col4"> is the item available (i.e. on the shelf and/or available for checkout)? See below for further information. </td> </tr> <tr class="row3"> <td class="col0 leftalign"> status </td><td class="col1 leftalign"> string </td><td class="col2"> depends on availability </td><td class="col3 leftalign"> </td><td class="col4"> description of the availability status of the item. Is handled by <code>availability</code> if using AvailabilityStatusInterface. See below for further information. </td> </tr> <tr class="row4"> <td class="col0 leftalign"> location </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> description of the physical location of the item. Note: prior to VuFind® 1.3, some drivers <abbr title="HyperText Markup Language">HTML</abbr> entity encoded this string; that is incorrect behavior in VuFind® 1.3 or later – this should be plain text, not <abbr title="HyperText Markup Language">HTML</abbr>. </td> </tr> <tr class="row5"> <td class="col0 leftalign"> location_code </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> an internal code representing the location. </td> </tr> <tr class="row6"> <td class="col0 leftalign"> locationhref </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.5 </td><td class="col4"> a <abbr title="Uniform Resource Locator">URL</abbr> to link the location name to. </td> </tr> <tr class="row7"> <td class="col0 leftalign"> reserve </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> “on reserve” status – legal values: &#039;Y&#039; or &#039;N&#039; </td> </tr> <tr class="row8"> <td class="col0 leftalign"> callnumber </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> the call number of this item </td> </tr> <tr class="row9"> <td class="col0"> callnumber_prefix </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 8.0 </td><td class="col4"> a call number prefix (i.e. a value that sets the context of the call number, such as a material format designation, but is not part of the call number for sorting purposes, etc.) </td> </tr> <tr class="row10"> <td class="col0 leftalign"> duedate </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> due date of checked out item in a human-readable form (null if not checked out) </td> </tr> <tr class="row11"> <td class="col0 leftalign"> returnDate </td><td class="col1 leftalign"> string or boolean </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> A string showing return date of an item (false if not recently returned) </td> </tr> <tr class="row12"> <td class="col0 leftalign"> number </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> the copy number for this item (note: although called “number”, this may actually be a string if individual items are named rather than numbered – the value will be used in displays to distinguish between copies within a list) </td> </tr> <tr class="row13"> <td class="col0 leftalign"> enumchron </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 5.0 </td><td class="col4"> enumeration / chronology data about the current copy (i.e. volume number and/or year); introduced to separate this detailed information from the simple number field above. </td> </tr> <tr class="row14"> <td class="col0 leftalign"> requests_placed </td><td class="col1 leftalign"> int </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> The total number of holds and recalls placed on an item </td> </tr> <tr class="row15"> <td class="col0 leftalign"> barcode </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> the barcode number for this item (important: even if you do not have access to real barcode numbers, you may want to include dummy values, since a missing barcode will prevent some other item information from displaying in the VuFind® interface). </td> </tr> <tr class="row16"> <td class="col0 leftalign"> notes </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3"> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> deprecated in 3.0</td><td class="col4"> an array of notes associated with holdings </td> </tr> <tr class="row17"> <td class="col0 leftalign"> holdings_id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> the ID of the holdings record containing the current item </td> </tr> <tr class="row18"> <td class="col0 leftalign"> holdings_notes </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 3.0 </td><td class="col4"> an array of notes associated with holdings record containing the current item </td> </tr> <tr class="row19"> <td class="col0 leftalign"> item_notes </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 3.0 </td><td class="col4"> an array of notes associated with the current item </td> </tr> <tr class="row20"> <td class="col0 leftalign"> summary </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> an array of summary information strings associated with holdings </td> </tr> <tr class="row21"> <td class="col0 leftalign"> supplements </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> an array of strings about supplements associated with holdings </td> </tr> <tr class="row22"> <td class="col0 leftalign"> indexes </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> an array of strings about indexes associated with holdings </td> </tr> <tr class="row23"> <td class="col0 leftalign"> is_holdable </td><td class="col1 leftalign"> bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> whether or not ANY user can place a hold or recall on the item – allows system administrators to determine hold behaviour (defaults to true if unset). Use this setting to indicate hold availability based on the item itself; use the addLink setting for hold availability based on the combination of the item and the current logged-in user. </td> </tr> <tr class="row24"> <td class="col0 leftalign"> holdtype </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> the type of hold to be placed – of use for systems with multiple hold types such as “hold” or “recall”. Prior to VuFind® 4.0, a value of “block” will inform the user that they cannot place a hold on the item due to account blocks (optional); starting in 4.0, the “block” value was replaced with the separate getRequestBlocks method. </td> </tr> <tr class="row25"> <td class="col0 leftalign"> addLink </td><td class="col1 leftalign"> string or bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> whether not the CURRENT user can place a hold or recall on the item – for use with drivers which can determine hold logic based on patron data – i.e. only used when holds_mode is set to “driver” in config.ini; normally a boolean, but until VuFind® 4.0 may be set to the special value of “block” to indicate a user permission problem (optional; starting in 4.0, use the getRequestBlocks method instead). Starting with VuFind® 1.3, you can also use the special value of “check” which will trigger an AJAX call against the checkRequestIsValid() method to allow complex link rules to be evaluated without holding up the main page load. </td> </tr> <tr class="row26"> <td class="col0 leftalign"> item_id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> the item (as opposed to bibliographic) identifier (optional) </td> </tr> <tr class="row27"> <td class="col0 leftalign"> holdOverride </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 1.3 </td><td class="col4"> you can use this value to override the usual config.ini Catalog:holds_mode setting on an item-by-item basis; useful for local customizations but not recommended for generic shared driver code. Also note that this feature only works when the Catalog:allow_holds_override setting is turned on in config.ini. </td> </tr> <tr class="row28"> <td class="col0"> addStorageRetrievalRequestLink </td><td class="col1"> string or bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> you can use this value to indicate availability of storage retrieval requests. See addLink above for valid values. If “check” is returned, the driver must implement the <a href="#checkstorageretrievalrequestisvalid" title="development:plugins:ils_drivers ↵" class="wikilink1">checkStorageRetrievalRequestIsValid()</a> method. See also getConfig and other storage retrieval request methods. At least <a href="#placestorageretrievalrequest" title="development:plugins:ils_drivers ↵" class="wikilink1">placeStorageRetrievalRequest()</a> must be implemented. </td> </tr> <tr class="row29"> <td class="col0"> addILLRequestLink </td><td class="col1 leftalign"> string or bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> you can use this value to indicate availability of Inter-Library Loan (ILL) requests. See addLink above for valid values. If “check” is returned, the driver must implement the <a href="#checkillrequestisvalid" title="development:plugins:ils_drivers ↵" class="wikilink1">checkILLRequestIsValid()</a> method. See also getConfig and other ILL request methods. At least <a href="#placeillrequest" title="development:plugins:ils_drivers ↵" class="wikilink1">placeILLRequest()</a> must be implemented. </td> </tr> <tr class="row30"> <td class="col0 leftalign"> source </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 2.4 </td><td class="col4"> The search backend from which the record may be retrieved (defaults to Solr) </td> </tr> <tr class="row31"> <td class="col0"> use_unknown_message </td><td class="col1 leftalign"> bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> when set to true, will cause display of a message indicating that the status of the item is unknown. Is handled by <code>availability</code> if using AvailabilityStatusInterface. See below for further information.</td> </tr> <tr class="row32"> <td class="col0 leftalign"> services </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 3.0 </td><td class="col4"> this value can be used to indicate availability services (loan, presence). For now, &#039;services&#039; is only used by code calling getStatus(), not getHolding(), but setting it here as well will not hurt anything and may be useful for future enhancements. See the <a href="#getstatus" title="development:plugins:ils_drivers ↵" class="wikilink1">getStatus()</a> documentation for more details. </td> </tr> <tr class="row33"> <td class="col0 leftalign"> boundWithRecords </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 10.0 </td><td class="col4"> an array of arrays, where each instance defines bibId and title keys describing a “bound-with” record associated with the current record; title keys may be null if title information is unavailable </td> </tr> <tr class="row34"> <td class="col0 leftalign"> loan_type_id </td><td class="col1 leftalign"> int or string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 11.0 </td><td class="col4"> the id of the loan type that applies to the record; not used as of this writing </td> </tr> <tr class="row35"> <td class="col0 leftalign"> loan_type_name </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 11.0 </td><td class="col4"> the human-readable name of the loan type that applies to the record; displayed when display_loan_type_in_holdings is set to true in config.ini </td> </tr> </table></div> <p> The <code>availability</code> field may contain a boolean value: </p> <ul> <li class="level1"><div class="li"> true - Item is available, and &#039;Available&#039; is displayed as status</div> </li> <li class="level1"><div class="li"> false - Item is unavailable, and the <code>status</code> field is used for display</div> </li> </ul> <p> Starting with VuFind® 9.1, also the following constants from <code>\VuFind\ILS\Logic\ItemStatus</code> (VuFind® 9.1) or <code>\VuFind\ILS\Logic\AvailabilityStatusInterface</code> (VuFind® 10.0 and higher) class can be used, and the <code>status</code> field is always used for display: </p> <ul> <li class="level1"><div class="li"> STATUS_UNAVAILABLE - Item is unavailable</div> </li> <li class="level1"><div class="li"> STATUS_AVAILABLE - Item is available</div> </li> <li class="level1"><div class="li"> STATUS_UNCERTAIN - Item availability is uncertain (the item could be available e.g. only to a specific patron group)</div> </li> <li class="level1"><div class="li"> STATUS_UNKNOWN - No information about the availability is known (VuFind 10.0)</div> </li> </ul> <p> Starting in VuFind 10.0® the <code>AvailabilityStatusInterface</code> was introduced that combines the fields <code>availability</code>, <code>status</code> and <code>use_unknown_message</code>. The latter two are neither required nor used if this is used for <code>availability</code>. You can use the standard implementation <code>\VuFind\ILS\Logic\AvailabilityStatus</code> or create your own. The constructor of the standard implementation accepts the availability as boolean or int and the status as string. Using the constant STATUS_UNKNOWN as availability is equivalent to setting <code>use_unknown_message</code> to true. Note that if you don&#039;t return an instance of <code>AvailabilityStatusInterface</code> in your ILS driver the fields <code>availability</code>, <code>status</code> and <code>use_unknown_message</code> will be used to create an instance of the standard implementation that will be used throughout the rest of the code anyway. </p> </div> <h3 class="sectionedit27" id="getholdlink">getHoldLink</h3> <div class="level3"> <p> This method returns a <abbr title="Uniform Resource Locator">URL</abbr> that links into the ILS to allow the patron to place a hold. Optional – should only be defined when the placeHold method cannot be implemented due to ILS limitations. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic Record ID, Item details array from getHolding (second parameter is optional and was introduced in VuFind® 1.2; starting with VuFind® 1.4, it is also possible that the second parameter will contain a &#039;level&#039; key set to &#039;title&#039; instead of item information for cases where a user has explicitly requested a title-level hold)</div> </li> <li class="level1"><div class="li"> Output: Link to legacy OPAC for placing hold (or null if no hold link is available for this item).</div> </li> </ul> </div> <h3 class="sectionedit28" id="getillpickuplibraries">getILLPickupLibraries</h3> <div class="level3"> <p> <em> Not supported prior to VuFind® 2.3 </em> </p> <p> This method must be implemented if “pickUpLibrary” is specified in extraFields of getConfig(&#039;ILLRequests&#039;). </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID, Patron Data (from patronLogin() method)</div> </li> <li class="level1 node"><div class="li"> Output: An array of associative arrays containing:</div> <ul> <li class="level2"><div class="li"> id - Pick up library ID</div> </li> <li class="level2"><div class="li"> name - Display name for the library</div> </li> <li class="level2"><div class="li"> isDefault - Whether this is the default pick up library</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit29" id="getillpickuplocations">getILLPickupLocations</h3> <div class="level3"> <p> <em> Not supported prior to VuFind® 2.3 </em> </p> <p> This method must be implemented if “pickUpLibraryLocation” is specified in extraFields of getConfig(&#039;ILLRequests&#039;). </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID, Pick up library ID (from getILLPickupLibraries()), Patron Data (from patronLogin() method)</div> </li> <li class="level1 node"><div class="li"> Output: An array of associative arrays containing:</div> <ul> <li class="level2"><div class="li"> id - Pick up library ID</div> </li> <li class="level2"><div class="li"> name - Display name for the library</div> </li> <li class="level2"><div class="li"> isDefault - Whether this is the default pick up library</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit30" id="getinstructors">getInstructors</h3> <div class="level3"> <p> This method queries the ILS for a list of instructors to be used as input to the findReserves method (Optional) </p> <ul> <li class="level1"><div class="li"> Output: An associative array with key = instructor ID, value = instructor name.</div> </li> </ul> </div> <h3 class="sectionedit31" id="getmyfines">getMyFines</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current fines </p> <p> Input: Patron array returned by patronLogin method </p> <p> Output: Returns an array of associative arrays, one for each fine associated with the specified account. Each associative array contains these keys: </p> <div class="table sectionedit32"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> amount </td><td class="col1 leftalign"> int </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> The total amount of the fine IN PENNIES. Be sure to adjust decimal points appropriately (i.e. for a $1.00 fine, amount should be set to 100) </td> </tr> <tr class="row2"> <td class="col0 leftalign"> checkout </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> A string representing the date when the item was checked out </td> </tr> <tr class="row3"> <td class="col0 leftalign"> fine </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> A string describing the reason for the fine (i.e. “Overdue”, “Long Overdue”) </td> </tr> <tr class="row4"> <td class="col0 leftalign"> description </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 10.0 </td><td class="col4"> A string with textual description for the fine (e.g. manual fine reason) </td> </tr> <tr class="row5"> <td class="col0 leftalign"> balance </td><td class="col1 leftalign"> int </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> The unpaid portion of the fine IN PENNIES </td> </tr> <tr class="row6"> <td class="col0 leftalign"> createdate </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> A string representing the date when the fine was accrued (optional) </td> </tr> <tr class="row7"> <td class="col0 leftalign"> duedate </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> A string representing the date when the item was due </td> </tr> <tr class="row8"> <td class="col0 leftalign"> id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> The bibliographic ID of the record involved in the fine </td> </tr> <tr class="row9"> <td class="col0 leftalign"> source </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.4 </td><td class="col4"> The search backend from which the record may be retrieved (defaults to Solr) </td> </tr> </table></div> </div> <h3 class="sectionedit33" id="getmyholds">getMyHolds</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current holds </p> <p> Input: Patron array returned by patronLogin method </p> <p> Output: Returns an array of associative arrays, one for each hold associated with the specified account. Each associative array contains these keys: </p> <div class="table sectionedit34"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> type </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Type of hold – i.e. hold vs. recall </td> </tr> <tr class="row2"> <td class="col0 leftalign"> id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Bibliographic record ID associated with the hold </td> </tr> <tr class="row3"> <td class="col0 leftalign"> source </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.4 </td><td class="col4"> Search backend from which the record may be retrieved (defaults to Solr) </td> </tr> <tr class="row4"> <td class="col0 leftalign"> item_id </td><td class="col1 leftalign"> string </td><td class="col2"> with cancelHolds </td><td class="col3 leftalign"> </td><td class="col4"> Item id of the requested item (must be unique if cancelHolds is supported) </td> </tr> <tr class="row5"> <td class="col0 leftalign"> location </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 1.3 </td><td class="col4"> In VuFind® 1.3 and later, either a locationID value or a raw ready-to-display string. In VuFind® 1.2, should correspond with a locationID value from getPickUpLocations. </td> </tr> <tr class="row6"> <td class="col0 leftalign"> reqnum </td><td class="col1 leftalign"> string </td><td class="col2"> with updateHolds </td><td class="col3 leftalign"> </td><td class="col4"> A control number for the request (must be unique if updateHolds is supported) </td> </tr> <tr class="row7"> <td class="col0 leftalign"> expire </td><td class="col1"> locale date string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Expiration date of the hold </td> </tr> <tr class="row8"> <td class="col0 leftalign"> create </td><td class="col1"> locale date string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Creation date of the hold </td> </tr> <tr class="row9"> <td class="col0 leftalign"> position </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Position in the hold queue </td> </tr> <tr class="row10"> <td class="col0 leftalign"> available </td><td class="col1 leftalign"> boolean </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Whether or not the hold is available for pickup </td> </tr> <tr class="row11"> <td class="col0 leftalign"> in_transit </td><td class="col1 leftalign"> string/boolean </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> If in transit, either boolean true or a string describing the destination location; false otherwise </td> </tr> <tr class="row12"> <td class="col0"> last_pickup_date </td><td class="col1"> locale date string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 5.1 </td><td class="col4"> A string representing the deadline for picking up the item; ignored unless available (above) is set to true </td> </tr> <tr class="row13"> <td class="col0 leftalign"> frozen </td><td class="col1 leftalign"> boolean </td><td class="col2"> with frozenThrough </td><td class="col3 leftalign"> 8.0 </td><td class="col4"> Whether the hold is temporarily suspended </td> </tr> <tr class="row14"> <td class="col0 leftalign"> frozenThrough </td><td class="col1"> locale date string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 8.0 </td><td class="col4"> Last suspension date if a hold is temporarily suspended </td> </tr> <tr class="row15"> <td class="col0 leftalign"> cancel_details </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 3.1 </td><td class="col4"> A cancel token, or a blank string to indicate that the hold cannot be canceled. If omitted, this will be dynamically generated using getCancelHoldDetails(). The value is passed to the cancelHolds method when a hold is canceled. You can fill this in if it is efficient to calculate the value up front; if it is an expensive calculation, you should omit the value entirely and let getCancelHoldDetails() do its job on demand (note, however, that getCancelHoldDetails is currently called for each hold unconditionally). </td> </tr> <tr class="row16"> <td class="col0 leftalign"> updateDetails </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 8.0 </td><td class="col4"> An update token, or a blank string to indicate that the hold cannot be updated. The value is passed to the updateHolds method when holds are updated. If both this and cancel_details are non-empty, the values must match. </td> </tr> <tr class="row17"> <td class="col0 leftalign"> title </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Title of the item (only used if the record cannot be found in VuFind®&#039;s index) </td> </tr> <tr class="row18"> <td class="col0"> publication_year </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Publication year of the item </td> </tr> <tr class="row19"> <td class="col0 leftalign"> volume </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Volume number of the item </td> </tr> <tr class="row20"> <td class="col0 leftalign"> isbn </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> ISBN for use in cover image loading </td> </tr> <tr class="row21"> <td class="col0 leftalign"> issn </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> ISSN for use in cover image loading </td> </tr> <tr class="row22"> <td class="col0 leftalign"> oclc </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> OCLC number for use in cover image loading </td> </tr> <tr class="row23"> <td class="col0 leftalign"> upc </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 2.3 </td><td class="col4"> UPC for use in cover image loading </td> </tr> <tr class="row24"> <td class="col0 leftalign"> proxiedBy </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 9.0 </td><td class="col4"> Display name of user that placed the request (if different from the current user) </td> </tr> <tr class="row25"> <td class="col0 leftalign"> proxiedFor </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 9.0 </td><td class="col4"> Display name of user for whom the request was placed (if different from the current user) </td> </tr> </table></div> </div> <h3 class="sectionedit35" id="getmyillrequests">getMyILLRequests</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current ILL requests. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method</div> </li> <li class="level1 node"><div class="li"> Output: Returns an array of associative arrays, one for each request associated with the specified account. Each associative array contains these keys:</div> <ul> <li class="level2"><div class="li"> id - The bibliographic record ID associated with the request (optional).</div> </li> <li class="level2"><div class="li"> source - The search backend from which the record may be retrieved (optional - defaults to Solr). <em> Introduced in VuFind® 2.4. </em></div> </li> <li class="level2"><div class="li"> location - A string describing the pickup location for the requested item (optional). It may be either a locationID value or a raw ready-to-display string.</div> </li> <li class="level2"><div class="li"> reqnum - A control number for the request (optional).</div> </li> <li class="level2"><div class="li"> expire - The expiration date of the request (a string).</div> </li> <li class="level2"><div class="li"> create - The creation date of the request (a string).</div> </li> <li class="level2"><div class="li"> position – The position of the user in the request queue (optional).</div> </li> <li class="level2"><div class="li"> available – Whether or not the request is available for pickup (true) or not (false) (optional).</div> </li> <li class="level2"><div class="li"> item_id – The item id the request item (optional).</div> </li> <li class="level2"><div class="li"> volume – The volume number of the item (optional).</div> </li> <li class="level2"><div class="li"> issue - The issue of the item (optional).</div> </li> <li class="level2"><div class="li"> year – The publication year of the item (optional).</div> </li> <li class="level2"><div class="li"> title - The title of the item (optional – only used if the record cannot be found in VuFind®&#039;s index).</div> </li> <li class="level2"><div class="li"> canceled - Boolean or date (string) indicating that the request has been canceled.</div> </li> <li class="level2"><div class="li"> processed - Boolean or date (string) indicating that the request has been processed.</div> </li> <li class="level2"><div class="li"> institution_name - Display name of the institution where the item was requested from (optional).</div> </li> <li class="level2"><div class="li"> isbn - An ISBN for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> issn - An ISSN for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> oclc - An OCLC number for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> upc - A UPC for use in cover image loading (optional)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit36" id="getmyprofile">getMyProfile</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current profile information </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method</div> </li> <li class="level1 node"><div class="li"> Output: An associative array with the following keys (all containing strings):</div> <ul> <li class="level2"><div class="li"> firstname</div> </li> <li class="level2"><div class="li"> lastname</div> </li> <li class="level2"><div class="li"> address1</div> </li> <li class="level2"><div class="li"> address2</div> </li> <li class="level2"><div class="li"> city (added in VuFind® 2.3)</div> </li> <li class="level2"><div class="li"> country (added in VuFind® 2.3)</div> </li> <li class="level2"><div class="li"> zip</div> </li> <li class="level2"><div class="li"> phone</div> </li> <li class="level2"><div class="li"> mobile_phone (added in VuFind® 5.0)</div> </li> <li class="level2"><div class="li"> group – i.e. Student, Staff, Faculty, etc.</div> </li> <li class="level2"><div class="li"> expiration_date – account expiration date (in display format, added in VuFind® 4.1; omit or set to null to exclude)</div> </li> <li class="level2"><div class="li"> birthdate (Y-m-d or an empty string, added in VuFind® 9.0)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit37" id="getmystorageretrievalrequests">getMyStorageRetrievalRequests</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current storage retrieval requests. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method</div> </li> <li class="level1 node"><div class="li"> Output: Returns an array of associative arrays, one for each request associated with the specified account. Each associative array contains these keys:</div> <ul> <li class="level2"><div class="li"> id - The bibliographic record ID associated with the request (optional).</div> </li> <li class="level2"><div class="li"> source - The search backend from which the record may be retrieved (optional - defaults to Solr). <em> Introduced in VuFind® 2.4. </em></div> </li> <li class="level2"><div class="li"> location - A string describing the pickup location for the requested item (optional). It may be either a locationID value or a raw ready-to-display string.</div> </li> <li class="level2"><div class="li"> reqnum - A control number for the request (optional).</div> </li> <li class="level2"><div class="li"> expire - The expiration date of the request (a string).</div> </li> <li class="level2"><div class="li"> create - The creation date of the request (a string).</div> </li> <li class="level2"><div class="li"> position – The position of the user in the request queue (optional).</div> </li> <li class="level2"><div class="li"> available – Whether or not the request is available for pickup (true) or not (false) (optional).</div> </li> <li class="level2"><div class="li"> item_id – The item id the request item (optional).</div> </li> <li class="level2"><div class="li"> volume – The volume number of the item (optional).</div> </li> <li class="level2"><div class="li"> issue - The issue of the item (optional).</div> </li> <li class="level2"><div class="li"> year – The publication year of the item (optional).</div> </li> <li class="level2"><div class="li"> title - The title of the item (optional – only used if the record cannot be found in VuFind®&#039;s index).</div> </li> <li class="level2"><div class="li"> canceled - Boolean or date (string) indicating that the request has been canceled.</div> </li> <li class="level2"><div class="li"> processed - Boolean or date (string) indicating that the request has been processed.</div> </li> <li class="level2"><div class="li"> institution_name - Display name of the institution where the request was made (optional).</div> </li> <li class="level2"><div class="li"> isbn - An ISBN for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> issn - An ISSN for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> oclc - An OCLC number for use in cover image loading (optional)</div> </li> <li class="level2"><div class="li"> upc - A UPC for use in cover image loading (optional)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit38" id="getmytransactionhistory">getMyTransactionHistory</h3> <div class="level3"> <p> This method retrieves a patron&#039;s historic transactions (previously checked out items). </p> <p> <img src="/wiki/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> The getConfig method must return a non-false value for this feature to be enabled. For privacy reasons, the entire feature should be disabled by default unless explicitly turned on in the driver&#039;s .ini file. </p> <p> <em> This feature was added in VuFind® 5.0. </em> </p> <ul> <li class="level1 node"><div class="li"> getConfig may return the following keys if the service supports paging on the ILS side:</div> <ul> <li class="level2"><div class="li"> max_results - Maximum number of results that can be requested at once. Overrides the config.ini Catalog section setting historic_loan_page_size.</div> </li> <li class="level2"><div class="li"> page_size - An array of allowed page sizes (number of records per page)</div> </li> <li class="level2"><div class="li"> default_page_size - Default number of records per page</div> </li> </ul> </li> <li class="level1 node"><div class="li"> getConfig may return also the following keys if the service supports sorting:</div> <ul> <li class="level2"><div class="li"> sort - An associative array where each key is a sort key and its value is a translation key</div> </li> <li class="level2"><div class="li"> default_sort - Default sort key </div> </li> </ul> </li> <li class="level1 node"><div class="li"> getConfig may return also the following keys with boolean true as the value if the service supports purging of all or selected entries from the history:</div> <ul> <li class="level2"><div class="li"> purge_all - Supports purging of all entries</div> </li> <li class="level2"><div class="li"> purge_selected - Supports purging of selected entries</div> </li> </ul> </li> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method and an array of optional parameters (keys = &#039;limit&#039;, &#039;page&#039;, &#039;sort&#039;).</div> </li> <li class="level1 node"><div class="li"> Output: Returns an array of associative arrays containing some or all of these keys:</div> <ul> <li class="level2"><div class="li"> title - item title</div> </li> <li class="level2"><div class="li"> checkoutDate - date checked out</div> </li> <li class="level2"><div class="li"> dueDate - date due</div> </li> <li class="level2"><div class="li"> id - bibliographic ID</div> </li> <li class="level2"><div class="li"> barcode - item barcode</div> </li> <li class="level2"><div class="li"> returnDate - date returned</div> </li> <li class="level2"><div class="li"> publication_year - publication year</div> </li> <li class="level2"><div class="li"> volume - item volume</div> </li> <li class="level2"><div class="li"> institution_name - owning institution</div> </li> <li class="level2"><div class="li"> borrowingLocation - checkout location</div> </li> <li class="level2"><div class="li"> message - message about the transaction</div> </li> <li class="level2"><div class="li"> row_id - ID of the transaction history row (required if purgeTransactionHistory is enabled)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit39" id="getmytransactions">getMyTransactions</h3> <div class="level3"> <p> This method queries the ILS for a patron&#039;s current checked out items </p> <ul> <li class="level1 node"><div class="li"> Starting with VuFind® 5.1, getConfig may return the following keys if the service supports paging on the ILS side:</div> <ul> <li class="level2"><div class="li"> max_results - Maximum number of results that can be requested at once. Overrides the config.ini Catalog section setting checked_out_page_size.</div> </li> <li class="level2"><div class="li"> page_size - An array of allowed page sizes (number of records per page)</div> </li> <li class="level2"><div class="li"> default_page_size - Default number of records per page</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Starting with VuFind® 5.1, getConfig may return also the following keys if the service supports sorting:</div> <ul> <li class="level2"><div class="li"> sort - An associative array where each key is a sort key and its value is a translation key</div> </li> <li class="level2"><div class="li"> default_sort - Default sort key </div> </li> </ul> </li> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method, and (starting with VuFind® 5.1) an optional array of parameters (keys = &#039;limit&#039;, &#039;page&#039;, &#039;sort&#039;)</div> </li> <li class="level1 node"><div class="li"> Output: Starting with VuFind® 5.1, may return an array with &#039;count&#039; and &#039;records&#039; keys, where &#039;count&#039; is the total number of transactions available, and &#039;records&#039; is the currently-requested page of results (in the format described below). Prior to 5.1, always returned an array of associative arrays, one for each item checked out by the specified account; this response format is still supported for drivers that do not allow pagination. Each associative array contains these keys:</div> <ul> <li class="level2"><div class="li"> duedate - The item&#039;s due date (a string).</div> </li> <li class="level2"><div class="li"> dueTime - The item&#039;s due time (a string, optional).</div> </li> <li class="level2"><div class="li"> dueStatus - A special status – may be &#039;due&#039; (for items due very soon) or &#039;overdue&#039; (for overdue items). If this is false, empty string, or unset, VuFind® will assume that items have no special status. (optional).</div> </li> <li class="level2"><div class="li"> id - The bibliographic ID of the checked out item.</div> </li> <li class="level2"><div class="li"> source - The search backend from which the record may be retrieved (optional - defaults to Solr). <em> Introduced in VuFind® 2.4. </em></div> </li> <li class="level2"><div class="li"> barcode - The barcode of the item (optional).</div> </li> <li class="level2"><div class="li"> renew - The number of times the item has been renewed (optional).</div> </li> <li class="level2"><div class="li"> renewLimit - The maximum number of renewals allowed (optional - introduced in VuFind® 2.3).</div> </li> <li class="level2"><div class="li"> request - The number of pending requests for the item (optional).</div> </li> <li class="level2"><div class="li"> volume – The volume number of the item (optional).</div> </li> <li class="level2"><div class="li"> publication_year – The publication year of the item (optional).</div> </li> <li class="level2"><div class="li"> renewable – Whether or not an item is renewable (required for renewals).</div> </li> <li class="level2"><div class="li"> message – A message regarding the item (optional).</div> </li> <li class="level2"><div class="li"> title - The title of the item (optional – only used if the record cannot be found in VuFind®&#039;s index).</div> </li> <li class="level2"><div class="li"> item_id - this is used to match up renew responses and must match the item_id in the renew response.</div> </li> <li class="level2"><div class="li"> institution_name - Display name of the institution that owns the item (optional). Used e.g. with received interlibrary loans (ILL) if they are displayed in the checked out items list (e.g. UB Requests between Voyager libraries).</div> </li> <li class="level2"><div class="li"> isbn - An ISBN for use in cover image loading (optional – introduced in release 2.3)</div> </li> <li class="level2"><div class="li"> issn - An ISSN for use in cover image loading (optional – introduced in release 2.3)</div> </li> <li class="level2"><div class="li"> oclc - An OCLC number for use in cover image loading (optional – introduced in release 2.3)</div> </li> <li class="level2"><div class="li"> upc - A UPC for use in cover image loading (optional – introduced in release 2.3)</div> </li> <li class="level2"><div class="li"> borrowingLocation - A string describing the location where the item was checked out (optional – introduced in release 2.4)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit40" id="getnewitems">getNewItems</h3> <div class="level3"> <p> This method queries the ILS for new items </p> <ul> <li class="level1 node"><div class="li"> Input: getNewItems takes the following parameters:</div> <ul> <li class="level2"><div class="li"> page - page number of results to retrieve (counting starts at 1)</div> </li> <li class="level2"><div class="li"> limit - the size of each page of results to retrieve</div> </li> <li class="level2"><div class="li"> daysOld - the maximum age of records to retrieve in days (maximum 30)</div> </li> <li class="level2"><div class="li"> fundID - optional fund ID to use for limiting results (use a value returned by getFunds, or exclude for no limit); note that “fund” may be a misnomer – if funds are not an appropriate way to limit your new item results, you can return a different set of values from getFunds. The important thing is that this parameter supports an ID returned by getFunds, whatever that may mean.</div> </li> </ul> </li> <li class="level1"><div class="li"> Output: An associative array with two keys: &#039;count&#039; (the number of items in the &#039;results&#039; array) and &#039;results&#039; (an array of associative arrays, each with a single key: &#039;id&#039;, a record ID).</div> </li> </ul> </div> <h3 class="sectionedit41" id="getofflinemode">getOfflineMode</h3> <div class="level3"> <p> This optional method (introduced in VuFind® 1.4) gets the online status of the ILS – “ils-offline” for systems where the main ILS is offline, “ils-none” for systems which do not use an ILS, false for systems that are fully online. If not implemented, the value defaults to false – most drivers will not need to worry about this method, which is primarily used by the special NoILS driver. </p> <ul> <li class="level1"><div class="li"> Output: string or false, as described above</div> </li> </ul> </div> <h3 class="sectionedit42" id="getpickuplocations">getPickUpLocations</h3> <div class="level3"> <p> This method returns a list of locations where a user may collect a hold. (optional) <em> Not supported prior to VuFind® 1.2 </em> </p> <p> Input: </p> <div class="table sectionedit43"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Parameter </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Always Provided </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> patron </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> Patron information from patronLogin </td> </tr> <tr class="row2"> <td class="col0 leftalign"> holdDetails </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> 1.3 </td><td class="col4"> When in the process of placing a hold, an array similar to placeHold&#039;s input. When editing a hold, the hold information returned by getMyHolds. May be used to limit the available pickup options based on item ID, etc.; must never add new options to the return array – may only be used as a limiter. </td> </tr> </table></div> <p> Output: An array of associative arrrays with the following fields: </p> <div class="table sectionedit44"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> locationID </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> A pick up location id or code </td> </tr> <tr class="row2"> <td class="col0 leftalign"> locationDisplay </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> The text to display for the location </td> </tr> </table></div> </div> <h3 class="sectionedit45" id="getproxiedusers">getProxiedUsers</h3> <div class="level3"> <p> This method returns a list of users for which the provided user can place proxy requests. <em> This method was added in VuFind® 9.0. </em> </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method</div> </li> <li class="level1"><div class="li"> Output: Associative array of user ID ⇒ user display name</div> </li> </ul> </div> <h3 class="sectionedit46" id="getproxyingusers">getProxyingUsers</h3> <div class="level3"> <p> This method returns a list of users who can place proxy requests on behalf of the specified user. <em> This method was added in VuFind® 9.1. </em> </p> <ul> <li class="level1"><div class="li"> Input: Patron array returned by patronLogin method</div> </li> <li class="level1"><div class="li"> Output: Associative array of user ID ⇒ user display name</div> </li> </ul> </div> <h3 class="sectionedit47" id="getpurchasehistory">getPurchaseHistory</h3> <div class="level3"> <p> This method returns information on recently received issues of a serial. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic record ID</div> </li> <li class="level1 node"><div class="li"> Output: Array of associative arrays, each with a single key:</div> <ul> <li class="level2"><div class="li"> issue - String describing the issue</div> </li> </ul> </li> </ul> <p> Currently, most drivers do not implement this method, instead always returning an empty array. It is only necessary to implement this in more detail if you want to populate the “Most Recent Received Issues” section of the record holdings tab. </p> </div> <h3 class="sectionedit48" id="getrenewdetails">getRenewDetails</h3> <div class="level3"> <p> This method returns a string to use as the input form value for renewing each hold item. (optional, but required if you implement the renewMyItems method) <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1"><div class="li"> Input: checkOutDetails - One of the individual item arrays returned by the getMyTransactions method</div> </li> <li class="level1"><div class="li"> Output: A string to use as the input form value for renewing each item; you can pass any data that is needed by your ILS to identify the transaction to renew – the output of this method will be used as part of the input to the renewMyItems method.</div> </li> </ul> </div> <h3 class="sectionedit49" id="getrequestblocks">getRequestBlocks</h3> <div class="level3"> <p> This optional method returns an array of strings describing reasons for blocking the active user from placing requests (holds, recalls, etc.). If no blocks are in place, it returns false. <em> Not supported prior to VuFind® 4.0 </em> </p> <ul> <li class="level1"><div class="li"> Input: patron (array returned by the driver&#039;s patronLogin method)</div> </li> <li class="level1"><div class="li"> Output: array or false</div> </li> </ul> </div> <h3 class="sectionedit50" id="getrequestgroups">getRequestGroups</h3> <div class="level3"> <p> This optional method returns information used to group together collections of pickup locations. <em> Not supported prior to VuFind® 2.3. </em> </p> <ul> <li class="level1"><div class="li"> Input: bibID (of record being requested), Patron Data (from patronLogin() method), holdDetails (Optional array, only passed in when getting a list in the context of placing a hold; contains most of the same values passed to placeHold, minus the patron data. May be used to limit the request group options or may be ignored; added in VuFind® 4.0).</div> </li> <li class="level1"><div class="li"> Output: False if request groups not in use or an array of associative arrays with id and name keys; VuFind® 10.1 adds an optional locationsLabel key which can be used to override the label for pickup locations within the group.</div> </li> </ul> </div> <h3 class="sectionedit51" id="getstatus">getStatus</h3> <div class="level3"> <p> This method returns a subset of the information from getHolding </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic record ID</div> </li> <li class="level1"><div class="li"> Output: Returns an array of associative arrays, one for each item attached to the specified bibliographic record. Each associative array contains these keys:</div> </li> </ul> <div class="table sectionedit52"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> id </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> The bibliographic record ID (same as input) </td> </tr> <tr class="row2"> <td class="col0 leftalign"> availability </td><td class="col1 leftalign"> boolean/int </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> * / 9.1 </td><td class="col4"> Is the item available (i.e. on the shelf and/or available for checkout)? See the description in getHolding for further information. </td> </tr> <tr class="row3"> <td class="col0 leftalign"> status </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> description of the availability status of the item </td> </tr> <tr class="row4"> <td class="col0 leftalign"> location </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> description of the physical location of the item. Note: prior to VuFind® 1.3, some drivers <abbr title="HyperText Markup Language">HTML</abbr> entity encoded this string; that is incorrect behavior in VuFind® 1.3 or later – this should be plain text, not <abbr title="HyperText Markup Language">HTML</abbr>. </td> </tr> <tr class="row5"> <td class="col0 leftalign"> reserve </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> Is the item on course reserve? (“Y” for yes, “N” for no) </td> </tr> <tr class="row6"> <td class="col0 leftalign"> callnumber </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> yes </td><td class="col3 leftalign"> </td><td class="col4"> the call number of this item </td> </tr> <tr class="row7"> <td class="col0"> callnumber_prefix </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 8.0 </td><td class="col4"> a call number prefix (i.e. a value that sets the context of the call number, such as a material format designation, but is not part of the call number for sorting purposes, etc.) </td> </tr> <tr class="row8"> <td class="col0"> use_unknown_message </td><td class="col1 leftalign"> bool </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> </td><td class="col4"> when set to true, will cause display of a message indicating that the status of the item is unknown. </td> </tr> <tr class="row9"> <td class="col0 leftalign"> services </td><td class="col1 leftalign"> string[] </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 3.0 </td><td class="col4"> This can be used to indicate availability services (loan, presence). When set, the value is expected to be an array of strings representing available services for the current item. These services will be displayed in the result list in order to provide more detailed availability information than simply showing binary available/unavailable status. Further display control can be achieved through <abbr title="Cascading Style Sheets">CSS</abbr> classes assigned to every service. For now, only the services “loan” (available to be borrowed) and “presentation” (available for use within the institution) are supported (including appropriate translation strings). See additional documentation on services <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">here</a>. </td> </tr> <tr class="row10"> <td class="col0 leftalign"> error </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> no </td><td class="col3 leftalign"> 5.0 </td><td class="col4"> If you set this to an error string, all other fields except id will be ignored, and the error message will be displayed to the user along with an “Item Status Unavailable” status. This is particularly useful in the <a href="/wiki/configuration:ils:multibackend_driver" class="wikilink1" title="configuration:ils:multibackend_driver" data-wiki-id="configuration:ils:multibackend_driver">MultiBackend driver</a> for dealing with partial failures, but other applications may exist. </td> </tr> </table></div> <p> Note: Some driver implementations add additional values beyond those listed above. However, these extra values are not used by core code and should generally be ignored. </p> </div> <h3 class="sectionedit53" id="getstatuses">getStatuses</h3> <div class="level3"> <p> This method calls getStatus for an array of records </p> <ul> <li class="level1"><div class="li"> Input: Array of bibliographic record IDs.</div> </li> <li class="level1"><div class="li"> Output: Array of return values from getStatus (note – the keys of this array have no special meaning; you will need to search it if you want to retrieve a specific record&#039;s values).</div> </li> </ul> </div> <h3 class="sectionedit54" id="getsuppressedauthorityrecords">getSuppressedAuthorityRecords</h3> <div class="level3"> <p> Return a list of suppressed authority records (used to remove non-visible items from VuFind®&#039;s index). <em> Note: this method was introduced in VuFind® 1.4. </em> </p> <ul> <li class="level1"><div class="li"> Output: An array of authority record IDs.</div> </li> </ul> </div> <h3 class="sectionedit55" id="getsuppressedrecords">getSuppressedRecords</h3> <div class="level3"> <p> Return a list of suppressed bibliographic records (used to remove non-visible items from VuFind®&#039;s index). </p> <ul> <li class="level1"><div class="li"> Output: An array of bibliographic record IDs.</div> </li> </ul> </div> <h3 class="sectionedit56" id="geturlsforrecord">getUrlsForRecord</h3> <div class="level3"> <p> This optional method (introduced in VuFind® 9.1) returns one or more ILS-specific links associated with the provided bibliographic record ID. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic record ID</div> </li> <li class="level1"><div class="li"> Output: Link data (in the same format returned by the record driver&#039;s getURLs method)</div> </li> </ul> </div> <h3 class="sectionedit57" id="hasholdings">hasHoldings</h3> <div class="level3"> <p> This optional method (introduced in VuFind® 1.4) can be used to hide the holdings tab for records where holdings do not apply. Most drivers will not need to implement this – it is primarily for use by the special NoILS driver. </p> <ul> <li class="level1"><div class="li"> Input: Bibliographic ID</div> </li> <li class="level1"><div class="li"> Output: true if holdings exist, false if they do not.</div> </li> </ul> </div> <h3 class="sectionedit58" id="init">init</h3> <div class="level3"> <p> This method is where your driver should initialize all expensive resource dependencies and verify its configuration array (found in $this→config when extending VuFind\ILS\Driver\AbstractBase). If a problem is encountered, this method should throw an Exception. </p> <ul> <li class="level1"><div class="li"> Input: none</div> </li> <li class="level1"><div class="li"> Output: none</div> </li> </ul> </div> <h3 class="sectionedit59" id="loginishidden">loginIsHidden</h3> <div class="level3"> <p> This optional method (introduced in VuFind® 1.4) can be used to hide VuFind®&#039;s login options. Most drivers will not need to implement this – it is primarily for use by the special NoILS driver. </p> <ul> <li class="level1"><div class="li"> Output: true if login should be hidden, false otherwise.</div> </li> </ul> </div> <h3 class="sectionedit60" id="patronlogin">patronLogin</h3> <div class="level3"> <p> This method processes authentication against the ILS. </p> <p> When ILS or MultiILS authentication is used as the login method, the username in VuFind®&#039;s user table is, by default, taken from cat_username but it&#039;s configurable with the ILS_username_field in [Authentication] 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>. </p> <p> Starting with version 4.0, VuFind® uses the id field as the primary link between the ILS user and the VuFind® user. The cat_username field or the field configured above is used if the user cannot be found with id. The idea is to have a more persistent link between the account (since cat_username is typically a library card, and a card may need to be changed, it&#039;s not really permanent) while allowing the existing accounts that don&#039;t yet have the id in them to be found. </p> <p> Depending on the driver and its configuration, the username may be a library card number, an email address or another patron identifier. For instance with Alma there are a couple of different login methods, and only the regular password authentication uses the password parameter. </p> <ul> <li class="level1"><div class="li"> Input: Username, Password</div> </li> <li class="level1 node"><div class="li"> Output: null on failed login, associative array of patron information on success. Keys:</div> <ul> <li class="level2"><div class="li"> id - the patron&#039;s ID in the ILS</div> </li> <li class="level2"><div class="li"> firstname - the patron&#039;s first name</div> </li> <li class="level2"><div class="li"> lastname - the patron&#039;s last name</div> </li> <li class="level2"><div class="li"> cat_username - the username used to log in</div> </li> <li class="level2"><div class="li"> cat_password - the password used to log in</div> </li> <li class="level2"><div class="li"> email - the patron&#039;s email address (null if unavailable)</div> </li> <li class="level2"><div class="li"> major - the patron&#039;s major (null if unavailable)</div> </li> <li class="level2"><div class="li"> college - the patron&#039;s college (null if unavailable)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit61" id="placehold">placeHold</h3> <div class="level3"> <p> This method places a hold on a specific record for a specific patron. (Optional – if this feature is not supported by the ILS, you can define the getHoldLink method instead). <em> This method was not consistently implemented until VuFind® 1.2 – earlier drivers may include a placeHold method, but none of those early versions are supported by standard core code. </em> </p> <ul> <li class="level1 node"><div class="li"> Input: holdDetails - An associative array with several keys. &#039;patron&#039; will always be defined to contain the array returned by patronLogin method; other fields may vary depending on the fields defined in the HMACKeys and extraHoldFields settings returned by the getConfig method. Some commonly used values:</div> <ul> <li class="level2"><div class="li"> holdtype - type of hold (as provided by the getHolding method)</div> </li> <li class="level2"><div class="li"> pickUpLocation - user-selected pickup location</div> </li> <li class="level2"><div class="li"> item_id - item ID</div> </li> <li class="level2"><div class="li"> comment - user comment</div> </li> <li class="level2"><div class="li"> id - bibliographic ID</div> </li> <li class="level2"><div class="li"> level - starting with VuFind® 1.4, this key may be passed in set to &#039;title&#039; when a user requests a title-level hold; in order for the title-level hold mechanism to work correctly, make sure that the HMACKeys setting returned by getConfig(&#039;Holds&#039;) includes &#039;level&#039;.</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> success – Boolean true or false</div> </li> <li class="level2"><div class="li"> sysMessage – A system supplied failure message (optional)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit62" id="placeillrequest">placeILLRequest</h3> <div class="level3"> <p> This method places an ILL request on a specific record for a specific patron. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1 node"><div class="li"> Input: details - An associative array with several keys. &#039;patron&#039; will always be defined to contain the array returned by patronLogin method; other fields may vary depending on the fields defined in the HMACKeys and extraFields settings returned by the getConfig method. Some commonly used values:</div> <ul> <li class="level2"><div class="li"> pickUpLocation - user-selected pickup location</div> </li> <li class="level2"><div class="li"> item_id - item ID</div> </li> <li class="level2"><div class="li"> comment - user comment</div> </li> <li class="level2"><div class="li"> id - bibliographic ID</div> </li> <li class="level2"><div class="li"> level - this key may be passed in set to &#039;title&#039; when a user requests a title-level request; in order for the title-level request mechanism to work correctly, make sure that the HMACKeys setting returned by getConfig(&#039;ILLRequests&#039;) includes &#039;level&#039;.</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> success – Boolean true or false</div> </li> <li class="level2"><div class="li"> sysMessage – A system supplied failure message (optional)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit63" id="placestorageretrievalrequest">placeStorageRetrievalRequest</h3> <div class="level3"> <p> This method places a storage retrieval request on a specific record for a specific patron. (optional) <em> Not supported prior to VuFind® 2.3 </em> </p> <ul> <li class="level1 node"><div class="li"> Input: details - An associative array with several keys. &#039;patron&#039; will always be defined to contain the array returned by patronLogin method; other fields may vary depending on the fields defined in the HMACKeys and extraFields settings returned by the getConfig method. Some commonly used values:</div> <ul> <li class="level2"><div class="li"> pickUpLocation - user-selected pickup location</div> </li> <li class="level2"><div class="li"> item_id - item ID</div> </li> <li class="level2"><div class="li"> comment - user comment</div> </li> <li class="level2"><div class="li"> id - bibliographic ID</div> </li> <li class="level2"><div class="li"> level - this key may be passed in set to &#039;title&#039; when a user requests a title-level request; in order for the title-level request mechanism to work correctly, make sure that the HMACKeys setting returned by getConfig(&#039;StorageRetrievalRequests&#039;) includes &#039;level&#039;.</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Output: Associative array containing:</div> <ul> <li class="level2"><div class="li"> success – Boolean true or false</div> </li> <li class="level2"><div class="li"> sysMessage – A system supplied failure message (optional)</div> </li> </ul> </li> </ul> </div> <h3 class="sectionedit64" id="purgetransactionhistory">purgeTransactionHistory</h3> <div class="level3"> <p> <em> Not supported prior to VuFind® 9.1 </em> </p> <p> This method deletes selected entries or all entries from the transaction (checkout) history. </p> <p> Availability of purge options in the UI is controlled by getConfig for getMyTransactionHistory returning <code>purge_all = true</code> and/or <code>purge_selected = true</code>. </p> <p> Input: </p> <div class="table sectionedit65"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Parameter </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Always Provided </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> patron </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Patron information from patronLogin </td> </tr> <tr class="row2"> <td class="col0 leftalign"> ids </td><td class="col1 leftalign"> array or null </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4 leftalign"> Array of row_id&#039;s from getMyTransactionHistory or null to purge all entries from the transaction history </td> </tr> </table></div> <p> Output: An associative array containing the following fields: </p> <div class="table sectionedit66"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> success </td><td class="col1 leftalign"> boolean </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Whether the purge request was successful </td> </tr> <tr class="row2"> <td class="col0 leftalign"> status </td><td class="col1 leftalign"> string </td><td class="col2"> If success=false </td><td class="col3 leftalign"> </td><td class="col4"> Status string containing information on why the purge request failed </td> </tr> <tr class="row3"> <td class="col0 leftalign"> sysMessage </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> System message that can be displayed to the user to further explain the reason for a failure </td> </tr> </table></div> </div> <h3 class="sectionedit67" id="renewmyitems">renewMyItems</h3> <div class="level3"> <p> This method renews a list of items for a specific patron. (optional – you may wish to implement getRenewLink instead if your ILS does not support direct renewals) <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1 node"><div class="li"> Input: renewDetails - An associative array with two keys:</div> <ul> <li class="level2"><div class="li"> patron - array returned by patronLogin method</div> </li> <li class="level2"><div class="li"> details - array of values returned by the getRenewDetails method identifying which items to renew</div> </li> </ul> </li> <li class="level1 node"><div class="li"> Output: An associative array with two keys:</div> <ul> <li class="level2"><div class="li"> blocks - An array of strings specifying why a user is blocked from renewing (false if no blocks)</div> </li> <li class="level2 node"><div class="li"> details - Not set when blocks exist; otherwise, an array of associative arrays (keyed by item ID) with each subarray containing these keys:</div> <ul> <li class="level3"><div class="li"> success – Boolean true or false </div> </li> <li class="level3"><div class="li"> new_date – string – A new due date</div> </li> <li class="level3"><div class="li"> new_time – string – A new due time</div> </li> <li class="level3"><div class="li"> item_id – The item id of the renewed item</div> </li> <li class="level3"><div class="li"> sysMessage – A system supplied renewal message (optional)</div> </li> </ul> </li> </ul> </li> </ul> </div> <h3 class="sectionedit68" id="renewmyitemslink">renewMyItemsLink</h3> <div class="level3"> <p> This method returns a <abbr title="Uniform Resource Locator">URL</abbr> to use as a link to a native OPAC for renewing each item. (optional, and should not be implemented unless your ILS is unable to support implementation of the renewMyItems method). <em> Not supported prior to VuFind® 1.2 </em> </p> <ul> <li class="level1"><div class="li"> Input: checkOutDetails - One of the individual item arrays returned by the getMyTransactions method</div> </li> <li class="level1"><div class="li"> Output: A <abbr title="Uniform Resource Locator">URL</abbr> to a native OPAC for renewing each item</div> </li> </ul> </div> <h3 class="sectionedit69" id="setconfig">setConfig</h3> <div class="level3"> <p> Set the driver&#039;s configuration array. In most circumstances, this will be automatically called by the VuFind\ILS\Connection class and passed a configuration array parsed from an .ini file whose name corresponds with the driver class. This method is implemented by VuFind\ILS\Driver\AbstractBase, so you do not need to add it if you inherit from that class. </p> <ul> <li class="level1"><div class="li"> Input: configuration array</div> </li> <li class="level1"><div class="li"> Output: none</div> </li> </ul> </div> <h3 class="sectionedit70" id="supportsmethod">supportsMethod</h3> <div class="level3"> <p> If your ILS driver implements __call() for dynamic method calls, you must also implement this method to indicate which methods may be legally called dynamically. Note that this is only really relevant for very unusual drivers like the MultiBackend driver; in general, __call() should almost always be avoided. </p> <ul> <li class="level1"><div class="li"> Input: method name, array of parameters</div> </li> <li class="level1"><div class="li"> Output: boolean true (method is supported) or false (method is not supported)</div> </li> </ul> </div> <h3 class="sectionedit71" id="updateholds">updateHolds</h3> <div class="level3"> <p> This method updates a list of holds for a specific patron. (optional) <em> Not supported prior to VuFind® 8.0 </em> </p> <p> Input: </p> <div class="table sectionedit72"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Parameter </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Always Provided </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> holdsDetails </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Array of updateDetails strings to identify the holds to update </td> </tr> <tr class="row2"> <td class="col0 leftalign"> fields </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Associative array of fields to update. The array contains only fields modified by the user. </td> </tr> <tr class="row3"> <td class="col0 leftalign"> patron </td><td class="col1 leftalign"> array </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Patron information from patronLogin </td> </tr> </table></div> <p> Output: An associative array with reqnum as the key, containing arrays with the following fields: </p> <div class="table sectionedit73"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Key </th><th class="col1 leftalign"> Type </th><th class="col2 leftalign"> Required </th><th class="col3 leftalign"> Minimum Version </th><th class="col4"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0 leftalign"> success </td><td class="col1 leftalign"> boolean </td><td class="col2 leftalign"> Yes </td><td class="col3 leftalign"> </td><td class="col4"> Whether the hold was successfully updated </td> </tr> <tr class="row2"> <td class="col0 leftalign"> status </td><td class="col1 leftalign"> string </td><td class="col2"> If success=false </td><td class="col3 leftalign"> </td><td class="col4"> Status string containing information on why the hold was not updated, subject to translation </td> </tr> <tr class="row3"> <td class="col0 leftalign"> sysMessage </td><td class="col1 leftalign"> string </td><td class="col2 leftalign"> No </td><td class="col3 leftalign"> </td><td class="col4"> System message that can be displayed to the user to further explain the reason for the update failure </td> </tr> </table></div> </div> <h2 class="sectionedit74" id="further_reading">Further Reading</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> <a href="http://blog.library.villanova.edu/libtech/2011/06/02/expanded-ils-functionality-in-vufind/" class="urlextern" title="http://blog.library.villanova.edu/libtech/2011/06/02/expanded-ils-functionality-in-vufind/" rel="ugc nofollow">Expanded ILS Functionality in VuFind®</a> – Blog post providing an overview of how the driver&#039;s hold/recall/renewal functionality works.</div> </li> <li class="level1"><div class="li"> <a href="/wiki/configuration:ils:troubleshooting" class="wikilink1" title="configuration:ils:troubleshooting" data-wiki-id="configuration:ils:troubleshooting">ILS Driver Troubleshooting</a></div> </li> </ul> </div> <h2 class="sectionedit75" id="related_video">Related Video</h2> <div class="level2"> <p> See <a href="/wiki/videos:ils_drivers_1" class="wikilink1" title="videos:ils_drivers_1" data-wiki-id="videos:ils_drivers_1">ILS Drivers, Part 1</a> for further discussion of ILS drivers. </p> </div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>development/plugins/ils_drivers.txt</bdi> · Last modified: 2025/02/05 14:35 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/development:plugins:ils_drivers?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/development:plugins:ils_drivers?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/development:plugins:ils_drivers?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=development%3Aplugins%3Ails_drivers&amp;1739910736" 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/development:plugins:ils_drivers"><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/development:plugins:ils_drivers"><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/development:plugins:ils_drivers"><div class="no"><input type="hidden" name="do" value="media" /><input type="hidden" name="ns" value="development:plugins" /><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/development:plugins:ils_drivers"><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/development:plugins:ils_drivers"><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/development:plugins:ils_drivers"><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