<feed xmlns='http://www.w3.org/2005/Atom'>
<title>contact/admin, branch master</title>
<subtitle>Bitweaver contact package repository
</subtitle>
<id>https://git.rdm1.uk/contact/.git/atom?h=master</id>
<link rel='self' href='https://git.rdm1.uk/contact/.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/'/>
<updated>2026-06-11T18:26:25Z</updated>
<entry>
<title>Introduce ContactPerson and ContactBusiness subclasses</title>
<updated>2026-06-11T18:26:25Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-11T18:26:25Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=64aae1e41d9288a6d9709781af29b06fe6adb5ca'/>
<id>urn:sha1:64aae1e41d9288a6d9709781af29b06fe6adb5ca</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>schema: tighten account group role_id to 3; add SAGEID; add export_contacts.php</title>
<updated>2026-06-06T14:56:04Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T14:56:04Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=0c9654cefb83ec95c76d849e477854c6b734cd98'/>
<id>urn:sha1:0c9654cefb83ec95c76d849e477854c6b734cd98</id>
<content type='text'>
account xref_group and items: role_id 4 → 3 (Registered, not Editors).
ACC_TO, VAT_NO: same role_id correction.
ACCNO replaced with SAGEID (SAGE Account Reference).
export_contacts.php: new CSV export (one row per contact, phones/emails/address).

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rationalise contact permissions</title>
<updated>2026-06-05T16:34:39Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-05T16:34:39Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=f81d962b373dd701ddb91b965c49857519501061'/>
<id>urn:sha1:f81d962b373dd701ddb91b965c49857519501061</id>
<content type='text'>
p_contact_view: registered; p_contact_create/update: editors;
p_contact_expunge/admin: admin — expunge gates all delete buttons.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Tidy contact type xref_item defaults: $05 = MERG Kit Elf, drop $06-$10</title>
<updated>2026-06-02T13:24:04Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-02T13:24:04Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=3e8fc0c354098cdc615401d7d0d04cf5225035d3'/>
<id>urn:sha1:3e8fc0c354098cdc615401d7d0d04cf5225035d3</id>
<content type='text'>
$06 through $10 (Record Artist, Cartographer, PHX Client etc.) removed
from schema defaults — already removed from live database.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Use DEFTIMESTAMP for contact_address.last_update_date</title>
<updated>2026-06-02T11:40:56Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-02T11:40:56Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=a22f284399206b1faf3e75ba8b9aa1dd343fd476'/>
<id>urn:sha1:a22f284399206b1faf3e75ba8b9aa1dd343fd476</id>
<content type='text'>
DEFTIMESTAMP uses sysTimeStamp (now LOCALTIMESTAMP for Firebird 4+) rather
than DEFAULT LOCALTIMESTAMP which adodb-datadict was mangling into a literal
time value via DBTimeStamp(), causing Firebird SQLSTATE 22009 on INSERT.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix Firebird/PDO compatibility and strip Cotswold Security remnants</title>
<updated>2026-05-27T15:27:59Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-05-27T15:27:59Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=6f5e5e15c078bd0f61e224da08eadf1da9bbf992'/>
<id>urn:sha1:6f5e5e15c078bd0f61e224da08eadf1da9bbf992</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Migrate contact xref to liberty_xref tables; add address_postcode to schema</title>
<updated>2026-05-26T13:51:23Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-05-26T13:51:23Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=620f081325c4e181a011781b5e72d251079b4271'/>
<id>urn:sha1:620f081325c4e181a011781b5e72d251079b4271</id>
<content type='text'>
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 =&gt; 'liberty' ensures correct install ordering

PHP and templates: source→item, xref_type→group rename throughout.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Redirect contact xref admin pages to liberty equivalents</title>
<updated>2026-05-22T14:47:25Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-05-22T14:47:25Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=9946fdce798431f1915783c376056a2fe83d37b0'/>
<id>urn:sha1:9946fdce798431f1915783c376056a2fe83d37b0</id>
<content type='text'>
admin_contact_type.php and admin_xref_types.php now redirect to
liberty/admin/admin_xref_groups.php and admin_xref_sources.php
respectively, with content_type_guid=contact pre-set.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix 5.0.2 DROPTABLE/DROPSEQUENCE array nesting</title>
<updated>2026-05-22T13:37:35Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-05-22T13:37:35Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=a2a57c81cc4a4a6a47c160c359a4271d9aaa6c53'/>
<id>urn:sha1:a2a57c81cc4a4a6a47c160c359a4271d9aaa6c53</id>
<content type='text'>
Extra level of nesting caused PHP to pass an array as the table name,
producing 'DROP TABLE ARRAY'. applyUpgrade iterates two levels itself.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Drop old contact_xref tables; seed liberty_xref_type/source on fresh install</title>
<updated>2026-05-22T13:35:02Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-05-22T13:35:02Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=3c1475fcf91f525ea3b1bc6ff3f19b142b489e62'/>
<id>urn:sha1:3c1475fcf91f525ea3b1bc6ff3f19b142b489e62</id>
<content type='text'>
5.0.2 upgrade drops contact_xref, contact_xref_source, contact_xref_type
and contact_xref_seq now that data lives in liberty_xref tables.

schema_inc.php updated: old xref table registrations removed, registerSchemaDefault
rewritten to INSERT into liberty_xref_type/source with content_type_guid='contact'
and text xref_type keys ('type','contact','links','alarm','council','account').

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
