multnomah-county-it/libilsws
Composer 安装命令:
composer require multnomah-county-it/libilsws
包简介
SirsiDynix ILSWS API Wrapper
README 文档
README
PHP package to support use of the SirsiDynix Symphony Web Services API (ILSWS) for patron functions
John Houser john.houser@multco.us
Design Goals
- Validate all inputs to public functions
- Produce clean, clear error messages
- Prevent or replace SirsiDynix error messages (which are sometimes obscure) as much as possible
- Provide easy, high-level functions for creating, modifying, searching for, and authenticating patrons
- Provide code examples for all functions
- Support easy reconfiguration without code changes to mirror changes to the Symphony configuration
- Support patron registrations or updates of any valid Symphony patron field without code changes
- Allow easy adaptation by other libraries
Public Functions
Low-level
These functions can be used with any valid ILSWS access point. They will throw exceptions on error.
connect()sendGet($url, $token, $params)sendQuery($url, $token, $queryJson, $queryType)validate($parameter, $value, $rule)
Convenience Functions
These functions correspond with ILSWS access points, but they validate all inputs and will throw exceptions if presented with inappropriate inputs.
authenticatePatron($token, $patronId, $password)changeBarcode($token, $patronKey, $patronId, $options)
Options array may include:role,clientIdchangeItemLibrary($token, $itemKey, $library)changePatronPassword($token, $json, $options)
Options array may include:role,clientIddeletePatron($token, $patronKey)describeBib($token)describeItem($token)describePatron($token)getExpiration($days)getPolicy($token, $policyKey)searchPatron($token, $index, $search, $params)searchPatronAltId($token, $altId, $count)searchPatronId($token, $patronId, $count)transitItem($token, $itemKey, $newLibrary, $workingLibrary)untransitItem($token, $itemId)updatePatronActivity($token, $patronId)
High-level
These functions offer functionality not directly supported by ILSWS by performing multiple queries or by combining, manipulating or evaluating data from the Symphony system.
addPatronCustomInfo($token, $patronKey, $key, $data)authenticatePatronId($token, $patronId, $password)checkDuplicate($token, $index1, $search1, $index2, $search2)delPatronCustomInfo($token, $patronKey, $key)emailTemplate($patron, $to, $from, $subject, $template)getBib($token, $bibKey, $fieldList)getBibCircInfo($token, $bibKey)getBibMarc($token, $bibKey)getCallNumber($token, $callKey, $fieldList)getCatalogIndexes($token)getHold($token, $holdKey)getItem($token, $itemKey, $fieldList)getItemCircInfo($token, $itemKey)getLibraryPagingList($token, $libraryKey)getPatronAttributes($token, $patronKey)getPatronCheckouts($token, $patronKey, $includeFields)getPatronCustomInfo($token, $patronKey, $key, $data)getPatronIndexes($token)modPatronCustomInfo($token, $patronKey, $key, $data)prepareSearch($terms)registerPatron($patron, $token, $addrNum, $options)
Options array may include:role,clientId,template,subjectresetPatronPassword($token, $patronId, $url, $email)
Optional:emailsearchAuthenticate($token, $index, $search, $password)searchBib($token, $index, $value, $params)
Params array may include:q,ct,rw,j,includeFieldsupdatePatron($patron, $token, $patronKey, $addrNum)updatePatronActiveId($token, $patronKey, $patronId, $option)
Option may be:a,i,dupdatePhoneList($phoneList, $token, $patronKey, $options)
Options array may include:role,clientId
Date and Telephone Number Formats
For the convenience of developers, the code library accepts dates in the following formats, wherever a date is accepted as a parameter: YYYYMMDD, YYYY-MM-DD, YYYY/MM/DD, MM-DD-YYYY, or MM/DD/YYYY.
The validation rules for telephone numbers are currently set to expect a string of digits with no punctuation. However, it would be easy to modify the validation rules at the top of any public function to accept punctuation in telephone numbers.
Examples
Initialize and Connect to ILSWS
require_once 'vendor/autoload.php';
// Initialize and load configuration from YAML configuration file
$ilsws = new Libilsws\Libilsws('./libilsws.yaml');
// Connect to ILSWS with configuration loaded from YAML file
$token = $ilsws->connect();
Search for a Patron
/**
* Valid incoming params are:
* ct = number of results to return,
* rw = row to start on (so you can page through results),
* j = boolean AND or OR to use with multiple search terms, and
* includeFields = fields to return in result.
*/
$index = 'EMAIL';
$search = 'john.houser@multco.us';
// Prepare search parameters, including fields to return
$options = [
'rw' => 1,
'ct' => 10,
'j' => 'AND',
'includeFields' => 'key,barcode']
];
// Run search
$response = $ilsws->searchPatron($token, $index, $search, $options);
Get Patron Attributes
$response = $ilsws->getPatronAttributes($token, $patronKey);
Register New Patron
/**
* The order of the fields doesn't matter. Not all of these are actually required.
* See the YAML configuration file to determine which fields are required. If an
* email template name is included in the options array, an email will be sent to the
* patron. Actual template files must include a language extension (for example .en for
* English. The system will look for template that matches the patrons language
* preference. If one is found, it will use that, otherwise it will attempt to
* find and use an English template.
*/
$patron = [
'birth_date' => '1962-03-07',
'city_state' => 'Portland, OR',
'county' => '0_MULT',
'email' => 'johnchouser@gmail.com',
'first_name' => 'Bogus',
'friends_notices' => 'YES',
'home_library' => 'CEN',
'language' => 'ENGLISH',
'last_name' => 'Bogart',
'library_news' => 'YES',
'middle_name' => 'T',
'notice_type' => 'PHONE',
'patron_id' => '21168045918653',
'postal_code' => '97209',
'street' => '925 NW Hoyt St Apt 406',
'telephone' => '215-534-6821',
'sms_phone' => [
'number' => '215-534-6821',
'countryCode' => 'US',
'bills' => true,
'general' => true,
'holds' => true,
'manual' => true,
'overdues' => true,
],
];
$addr_num = 1;
$options = [];
$options['role'] = 'STAFF';
$options['clientId'] = 'StaffClient';
$options['template'] = 'template.html.twig';
$options['subject'] = 'Welcome to the library!';
$response = $ilsws->register_patron($patron, $token, $addr_num, $options);
Update Patron Record
// Define patron array
$patron = [
'first_name' => 'John',
'middle_name' => 'Rad',
'last_name' => 'Houser',
'birth_date' => '1972-03-10',
'home_library' => 'CEN',
'county' => '0_MULT',
'notice_type' => 'PHONE',
'library_news' => 'YES',
'friends_notices' => 'YES',
'online_update' => 'YES',
'street' => '925 NW Hoyt St Apt 606',
'city_state' => 'Portland, OR',
'patron_id' => '21168045918653',
'postal_code' => '97208',
'email' => 'john.houser@multco.us',
'telephone' => '215-544-6941',
'sms_phone' => [
'number' => '215-544-6941',
'countryCode => 'US',
'bills' => true,
'general' => true,
'holds' => true,
'manual' => true,
'overdues' => true,
],
];
$addrNum = 1;
$patronKey = '782339';
// Update the patron record
$response = $ilsws->updatePatron($patron, $token, $patronKey, $addrNum);
Search for bibliographic records
/**
* Convert UTF-8 characters with accents to ASCII and strip unwanted characters and
* boolean operators from search terms
*/
$search = $ilsws->prepare_search($search);
// Prepare search parameters and choose fields to return
$params = [
'ct' => '50',
'rw' => '1',
'j' => 'AND',
'includeFields' => 'author,title,bib{650_a,856_u},callList{callNumber,itemList{barcode,currentLocation}}'
];
// Run search
$response = $ilsws->searchBib($token, $index, $search, $params);
Notes on the includeFields parameter:
- To include MARC data by tag, add a bib item. For example, to get the 650 tag, subfield a, add:
bib{650_a} - To get a call number or any item from the item record, you must include a callList item. For example, add
callList{callNumber} - To get any field from the item record, you must include an itemList entry within the callList item. For example, to get a barcode, add
callList{itemList{barcode}}
More Information
See the libilsws.yaml.sample file for field definitions and documentation of the YAML configuration options.
For a complete set of code examples see the example scripts in the test directory.
Warning: the test scripts may make real changes to the configured Symphony system. Do not use on a production system without carefully reviewing what they do!
multnomah-county-it/libilsws 适用场景与选型建议
multnomah-county-it/libilsws 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 667 次下载、GitHub Stars 达 4, 最近一次更新时间为 2022 年 09 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 multnomah-county-it/libilsws 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 multnomah-county-it/libilsws 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 667
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0-or-later
- 更新时间: 2022-09-12