diff options
| author | Lester Caine <lester@lsces.co.uk> | 2026-06-06 22:06:57 +0100 |
|---|---|---|
| committer | Lester Caine <lester@lsces.co.uk> | 2026-06-06 22:06:57 +0100 |
| commit | 109dc9aca9308fe2086c4a8d9c8ec2ac28e75848 (patch) | |
| tree | b265e1bc36acbc13003db1e26420ac06beb424de | |
| parent | 86a501258879b68e28636eb680d2320fc24819e6 (diff) | |
| download | contact-109dc9aca9308fe2086c4a8d9c8ec2ac28e75848.tar.gz contact-109dc9aca9308fe2086c4a8d9c8ec2ac28e75848.tar.bz2 contact-109dc9aca9308fe2086c4a8d9c8ec2ac28e75848.zip | |
contact: fix null mUserId producing invalid SQL for anonymous users
Direct string concatenation of mUserId into JOIN conditions produces
'purm.user_id=' (no value) when mUserId is null for anonymous users,
giving Firebird -104 Token unknown. Cast to (int) with ?? 0 fallback.
Affects ContactType::setup() and Contact::loadAddressList().
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| -rwxr-xr-x | includes/classes/Contact.php | 2 | ||||
| -rwxr-xr-x | includes/classes/ContactType.php | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/includes/classes/Contact.php b/includes/classes/Contact.php index a8f365a..f5bc6c4 100755 --- a/includes/classes/Contact.php +++ b/includes/classes/Contact.php @@ -515,7 +515,7 @@ class Contact extends LibertyContent { JOIN `".BIT_DB_PREFIX."liberty_xref_item` s ON s.`item` = x.`item` AND s.`content_type_guid` = 'contact' JOIN `".BIT_DB_PREFIX."liberty_xref_group` t ON t.`x_group` = s.`x_group` AND t.`content_type_guid` = 'contact' LEFT JOIN `".BIT_DB_PREFIX."address_postcode` ap ON ap.`postcode` = x.`xkey` - LEFT OUTER JOIN `".BIT_DB_PREFIX."users_roles_map` purm ON ( purm.`user_id`=".$gBitUser->mUserId." ) AND ( purm.`role_id`=s.`role_id` ) + LEFT OUTER JOIN `".BIT_DB_PREFIX."users_roles_map` purm ON ( purm.`user_id`=".(int)($gBitUser->mUserId ?? 0)." ) AND ( purm.`role_id`=s.`role_id` ) WHERE x.content_id = ? AND s.`template` = 'address' AND (s.`role_id` IN(". implode(',', array_fill(0, count($roles), '?')) ." ) OR purm.`user_id`=?) ORDER BY x.`item`, x.`xorder`"; diff --git a/includes/classes/ContactType.php b/includes/classes/ContactType.php index 1933d49..47b837f 100755 --- a/includes/classes/ContactType.php +++ b/includes/classes/ContactType.php @@ -30,7 +30,7 @@ class ContactType extends BitBase { $sql = "SELECT r.`item`, r.`cross_ref_title` FROM `".BIT_DB_PREFIX."liberty_xref_item` r JOIN `".BIT_DB_PREFIX."liberty_xref_group` t ON t.`x_group` = r.`x_group` AND t.`content_type_guid` = r.`content_type_guid` - LEFT OUTER JOIN `".BIT_DB_PREFIX."users_roles_map` purm ON ( purm.`user_id`=".$gBitUser->mUserId." ) AND ( purm.`role_id`=r.`role_id` ) + LEFT OUTER JOIN `".BIT_DB_PREFIX."users_roles_map` purm ON ( purm.`user_id`=".(int)($gBitUser->mUserId ?? 0)." ) AND ( purm.`role_id`=r.`role_id` ) WHERE r.`content_type_guid` = 'contact' AND t.`sort_order` = 0 AND (r.`role_id` IN(". implode(',', array_fill(0, count($roles), '?')) ." ) OR purm.`user_id`=?) ORDER BY r.`item`"; |
