diff --git a/module/VuFind/src/VuFind/ILS/Driver/Symphony.php b/module/VuFind/src/VuFind/ILS/Driver/Symphony.php index 70cb94502e37440d31122e4c39048d8df8d130e0..2417aa4b217eff301820613f16a649a3dfa63bcc 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/Symphony.php +++ b/module/VuFind/src/VuFind/ILS/Driver/Symphony.php @@ -1121,7 +1121,32 @@ class Symphony extends AbstractBase $patron['lastname'] = $matches[1]; } - // @TODO: email, major, college + // There may be an email address in any of three numbered addresses, + // so we search each one until we find an email address, + // starting with the one marked primary. + $addrinfo_check_order = array('1','2','3'); + if (isset($resp->patronAddressInfo->primaryAddress)) { + $primary_addr_n = $resp->patronAddressInfo->primaryAddress; + array_unshift($addrinfo_check_order, $primary_addr_n); + } + foreach ($addrinfo_check_order as $n) { + $AddressNInfo = "Address{$n}Info"; + if (isset($resp->patronAddressInfo->$AddressNInfo)) { + $addrinfos = is_array($resp->patronAddressInfo->$AddressNInfo) + ? $resp->patronAddressInfo->$AddressNInfo + : array($resp->patronAddressInfo->$AddressNInfo); + foreach ($addrinfos as $addrinfo) { + if ($addrinfo->addressPolicyID == 'EMAIL' + && !empty($addrinfo->addressValue)) { + $patron['email'] = $addrinfo->addressValue; + break; + } + } + + } + } + + // @TODO: major, college return $patron; }