summaryrefslogtreecommitdiff
path: root/includes
AgeCommit message (Collapse)AuthorFilesLines
10 daysMap contact persons to registered users via contact.role_idLester Caine1-6/+11
contact.role_id stores the user_id of the linked registered user (NULL = no account). load() joins users_users on role_id to expose linked_user_login and linked_user_name. verify() accepts user_id from the edit form and writes it to contact_store['role_id']. getList() now filters by user_id key (was role_id). Edit form shows the user_id field to admins with current login shown inline; display template shows the linked user when set. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 daysFix P01 name xref being wiped when saving type checkboxesLester Caine1-9/+19
The bulk DELETE of P*/B* xrefs was removing P01 (which carries the pipe-encoded name) whenever contact_types were saved. P01 is implied for all persons and never submitted as a checkbox, so it was never re-inserted. Fix handles P01 separately — always delete/rewrite it from pParamHash['name'] — and excludes it from the checkbox cycle. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11Introduce ContactPerson and ContactBusiness subclassesLester Caine7-46/+166
Splits the Contact class into ContactPerson (content_type_guid='contactperson') and ContactBusiness (content_type_guid='contactbusiness'), each using 'contact' as the shared package-level xref schema. Replaces the $isPerson/$00 xref hack with proper class identity via instanceof. - ContactPerson.php, ContactBusiness.php: new subclasses - Contact.php: loadXrefTypeList() reads type tags directly from liberty_xref; getAvailableTypeItems() for edit form (schema-driven with pre-upgrade fallback); getDisplayUrl() now points to display_contact.php - Type item codes: P01/P02 (person), B01-B04 (business, B01=Service new) - list_people.php, list_businesses.php: separate list pages per type - list_contacts.php: combined display-layer merge of both types - 5.0.3.php: upgrade script migrating existing data to new content types and codes - Templates: isPerson flag from instanceof; horizontal type checkboxes; list.tpl accepts $listTitle; menu adds People/Businesses entries Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06contact: fix null mUserId producing invalid SQL for anonymous usersLester Caine2-2/+2
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>
2026-06-06contact: docblock tidy and remove dead Xref scaffoldingLester Caine5-137/+69
Add/update docblocks across Contact, ContactType, ImportContactCSV. Fix @package articles typo in ContactType. Delete ContactXref, ContactXrefType, and lookup_contact_xref_type_inc — all three were unwired scaffolding with no callers. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06import: cull legacy importers; move data to storage/contact/Lester Caine1-0/+1
Remove one-off importers: Phx, Sage, Wande, old Contact/ContactOld classes, load_contacts/phx/sage/wande scripts, schema_import_inc, phx SQL, xmail files, mbox/mime email pipeline stubs. Add CONTACT_IMPORT_PATH = STORAGE_PKG_PATH.'contact/' to bit_setup_inc. Update load_contacts_csv.php to use CONTACT_IMPORT_PATH. Email-to-contact pipeline (Mbox/mime/phail) retained as pending todo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06Contact::load(): replace loadXrefList() with loadXrefInfo()Lester Caine1-5/+1
loadXrefList() was removed from LibertyContent as part of the xref migration to the LibertyXrefGroup path. Contact::load() already called loadXrefInfo() but the stale loadXrefList() call remained, causing a fatal error on load. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04contact: fix SCREF lookup to use xkey not dataLester Caine1-2/+2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03contact: add lookup_contact.php JSON autocomplete endpointLester Caine1-0/+45
Searches contacts by title or SCREF short name. Used by stock edit_movement.tpl From field datalist. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31Add add_person/add_business flows; tidy contact view/edit for typeLester Caine1-1/+3
- add_person.php + add_person.tpl: minimal form, auto-injects $00 - add_business.php + add_business.tpl: org name + $02+ type checkboxes - menu_contact.tpl: replace generic edit link with Add Person / Add Business - Contact.php: fix title overwrite (org no longer clobbers person name); fix null trim on organisation; fix $00 type xref stored correctly - edit.php: isPerson flag; xref groups loaded; type list filtered $02+ for businesses - edit.tpl: person/business field visibility; tabbed xref block at bottom of Details tab - edit_type_header.tpl: value fixed to {$type.item}; $00/$01 filtered out - display_contact.tpl: person/business field selection; note above addresses; no-addresses fallback removed; allow_edit=false on xref tabs - display_type_header.tpl: heading Personal/Business Contact; $02+ types only - contact_date_bar.tpl: remove Add crossref shortcut (now in edit tabs) - view_xref_*_item.tpl: dates and edit actions gated on $xrefAllowEdit Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31Fix contact type checkboxes storing wrong value; fix null trimLester Caine1-1/+1
edit_type_header.tpl: value was {$type.source} (unquoted, wrong field) — changed to "{$type.item}" so $04 etc are submitted correctly. Label corrected from "Content Types" to "Contact Types". Contact.php: organisation trim() now handles null from DB. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30Fix mRoles null guard to prevent Firebird empty IN() error for anonymous usersLester Caine1-1/+1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27Fix Firebird/PDO compatibility and strip Cotswold Security remnantsLester Caine2-39/+7
- Fix LOCALTIMESTAMP default in contact_address (CURRENT_TIMESTAMP caused timezone error with Firebird 4+ / PDO session having no timezone set) - Add xref_id sequence call to all liberty_xref INSERTs in Contact::store() - Add CONTACT_PKG_CLASS_PATH so getLibertyObject resolves Contact class - Fix LibertyXref date fields: format Unix timestamps as Y-m-d H:i:s before INSERT; use null instead of empty string for nullable TIMESTAMP columns - Remove Contract/Key Number column from list and edit templates - Remove find_key search box and getContractList() method - Remove alarm and council xref groups and items from schema seed - Add SCREF (Stock Source Reference) to links xref group seed - Archive and git-remove Cotswold-specific templates and list_contracts.php - Clean up contact_header: remove xkey prefix, restore plain title display - Browser title now shows contact name instead of generic "Contact Information" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26Migrate contact xref to liberty_xref tables; add address_postcode to schemaLester Caine3-30/+31
5.0.1 upgrade migrates contact_xref_type/source/xref data into liberty_xref_group/item/xref with content_type_guid='contact'. 5.0.2 upgrade drops the old contact_xref* tables. schema_inc.php updated for fresh installs: - Removes contact_xref, contact_xref_source, contact_xref_type tables - Adds address_postcode table (UK postcode lookup, LEFT JOIN'd in queries) - Defaults now INSERT into liberty_xref_group and liberty_xref_item directly - dependencies => 'liberty' ensures correct install ordering PHP and templates: source→item, xref_type→group rename throughout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22Remove xref methods now in LibertyContent; update callersLester Caine1-232/+4
Nine methods deleted from Contact (getContactGroupList, getContactSourceList, getXrefTypeList, getXrefFormatList, loadContentTypeList, loadXrefList, loadXref, storeXref, stepXref) — all now inherited from LibertyContent. Contact sets $mXrefTypeKey = 'contact_types' so loadXrefTypeList() continues to store under the key templates expect. load() updated to call loadXrefTypeList(). Page files updated: getContactGroupList → getXrefGroupList, getContactSourceList → getXrefSourceList. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22Fix xref group display: alias xref_type AS source, use sort_order for group ↵Lester Caine1-1/+1
filter getContactGroupList() now adds xref_type AS source so templates can key into mInfo by the text group name (e.g. 'contact', 'links'). display_contact.tpl passes sort_order (integer) to add_xref.php instead of the text xref_type key so getXrefTypeList() group filter works correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22Rewire Contact/ContactType queries to use liberty_xref tablesLester Caine2-50/+61
All references to dropped contact_xref, contact_xref_type and contact_xref_source tables replaced with liberty_xref equivalents. Content_type_guid='contact' scoping added throughout. Integer xref_type comparisons replaced with sort_order via JOIN to liberty_xref_type. Naked SQL subquery in getList() now uses BIT_DB_PREFIX and content_type_guid filter. t.source → t.xref_type in loadXrefList() and loadAddressList(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22Migrate contact xref to liberty_xref tables; add package-owned gallery viewLester Caine2-256/+17
ContactXref and ContactXrefType become thin subclasses of their liberty counterparts, scoped to content_type_guid='contact'. load_emails.php updated to query liberty_xref. Gallery view template moved into contact package as fisheye_fixed_grid_contact.tpl (keeps fisheye clean; same pattern for future assembly/component packages). contact/admin/upgrades/5.0.1.php migrates existing contact_xref_* data into liberty_xref_* tables. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14php-cs-fixer tidies to php8.5 standardsLester Caine7-87/+91
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2025-08-24Just a crude merging of the PHP7 code base with the PHP8.4 versionlsces7-0/+1264