From fa31eb01f523e1c1e9eb7e4492ba8c308a98447b Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Sat, 6 Jun 2026 09:41:03 +0100 Subject: xref item templates: drop dead Link/nbsp column; move generics to liberty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - view_xref_address_item.tpl, view_xref_phone_item.tpl: remove   second column - view_xref_contact_group.tpl: add 30/30/40% widths to Type/Value/Note - view_xref_text_item.tpl, list_xref_generic.tpl: deleted — fall through to liberty equivalents - ImportContactCSV.php: set xorder explicitly (#P/#F → 1, others → 0) Co-Authored-By: Claude Sonnet 4.6 --- import/ImportContactCSV.php | 123 ++++++++++++++++++++++++++++++++++ templates/list_xref_generic.tpl | 50 -------------- templates/view_xref_address_item.tpl | 23 +++---- templates/view_xref_contact_group.tpl | 35 ++++++++++ templates/view_xref_phone_item.tpl | 19 +++--- templates/view_xref_text_item.tpl | 52 -------------- 6 files changed, 176 insertions(+), 126 deletions(-) create mode 100644 import/ImportContactCSV.php delete mode 100755 templates/list_xref_generic.tpl create mode 100644 templates/view_xref_contact_group.tpl delete mode 100755 templates/view_xref_text_item.tpl diff --git a/import/ImportContactCSV.php b/import/ImportContactCSV.php new file mode 100644 index 0000000..b12fff9 --- /dev/null +++ b/import/ImportContactCSV.php @@ -0,0 +1,123 @@ +query( + "DELETE FROM `" . BIT_DB_PREFIX . "liberty_xref` WHERE `content_id` = ? AND `item` = ?", + [ $contentId, $item ] + ); + if( $xkey !== '' || $xkeyExt !== '' ) { + $gBitDb->associateInsert( BIT_DB_PREFIX . 'liberty_xref', [ + 'xref_id' => $gBitDb->GenID( 'liberty_xref_seq' ), + 'content_id' => $contentId, + 'item' => $item, + 'xorder' => $xorder, + 'xkey' => $xkey !== '' ? substr( $xkey, 0, 32 ) : null, + 'xkey_ext' => $xkeyExt !== '' ? substr( $xkeyExt, 0, 250 ) : null, + 'last_update_date' => $gBitDb->NOW(), + ] ); + } +} + +function contactCsvImportRow( array $row, int $rowNum ): array { + global $gBitDb; + + $result = [ 'loaded' => 0, 'updated' => 0, 'skipped' => 0, 'errors' => [] ]; + + $title = trim( $row[0] ?? '' ); + $type = trim( $row[1] ?? '' ); + $personName = trim( $row[2] ?? '' ); + $scref = trim( $row[3] ?? '' ); + $phone = trim( $row[4] ?? '' ); + // Restore leading zero stripped by Excel on 10-digit UK numbers + if( strlen( $phone ) === 10 && ctype_digit( $phone ) ) { + $phone = '0' . $phone; + } + $address = trim( $row[5] ?? '' ); + $postcode = trim( $row[6] ?? '' ); + $fax = trim( $row[7] ?? '' ); + if( strlen( $fax ) === 10 && ctype_digit( $fax ) ) { + $fax = '0' . $fax; + } + $website = trim( $row[8] ?? '' ); + $email = trim( $row[9] ?? '' ); + $accno = trim( $row[10] ?? '' ); + + if( empty( $title ) ) { + $result['skipped']++; + return $result; + } + + // --- Find existing or create new via Contact class --- + $contentId = $gBitDb->getOne( + "SELECT `content_id` FROM `" . BIT_DB_PREFIX . "liberty_content` + WHERE `content_type_guid` = 'contact' AND `title` = ?", + [ $title ] + ); + + $contact = new Contact( null, $contentId ?: null ); + if( $contentId ) { + $contact->load(); + } + + $pHash = [ + 'title' => $title, + 'edit' => '', + 'format_guid' => 'bithtml', + ]; + if( $contentId ) { + $pHash['content_id'] = $contentId; + } + + if( !empty( $type ) && $type[0] === '$' ) { + $pHash['contact_types'] = [ $type ]; + if( $type === '$00' ) { + $pHash['name'] = $personName; + } + } + + if( !$contact->store( $pHash ) ) { + $result['skipped']++; + $result['errors'][] = "Row $rowNum: failed to store '$title': " . implode( ', ', $contact->mErrors ?? [] ); + return $result; + } + + $contentId ? $result['updated']++ : $result['loaded']++; + $contentId = $contact->mContentId; + + // --- Remaining xref items --- + contactCsvUpsertXref( $contentId, 'SCREF', $scref ); + contactCsvUpsertXref( $contentId, '#P', $phone, '', 1 ); + contactCsvUpsertXref( $contentId, '#C', $postcode, $address ); + contactCsvUpsertXref( $contentId, '#F', $fax, '', 1 ); + contactCsvUpsertXref( $contentId, '#W', '', $website ); + contactCsvUpsertXref( $contentId, '#E', '', $email ); + contactCsvUpsertXref( $contentId, 'ACCNO', $accno ); + + return $result; +} diff --git a/templates/list_xref_generic.tpl b/templates/list_xref_generic.tpl deleted file mode 100755 index aeeff7c..0000000 --- a/templates/list_xref_generic.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{* if isset( $gContent->mInfo.$source ) *} - {assign var=xrefcnt value=$gContent->mInfo.$source|default:[]|@count} - {jstab title="$source_title ($xrefcnt)"} - {legend legend=$source_title} -
- - - - - - - - {if $source ne 'history' } - - {else} - - {/if} - - {if $gBitSystem->isFeatureActive( 'contact_list_last_modified' )} - - {/if} - - - - - {section name=xref loop=$gContent->mInfo.$source} - {assign var=_rowTpl value=$gContent->mInfo.$source[xref].template} - - {include file=$gContent->getXrefRecordTemplate($_rowTpl)} - - {sectionelse} - - - - {/section} - -
IDLinkDataNoteStartedEndedUpdatedEdit
- {tr}No {$source} records found{/tr} -
-
- {if $gBitUser->hasPermission('p_contact_update')} -
- {if $source ne 'history' } - {smartlink ititle="Add additional detail record" ifile="add_xref.php" biticon="list-add" content_id=$gContent->mInfo.content_id group=$group} - {/if} -
- {/if} - {/legend} - {/jstab} -{* /if *} diff --git a/templates/view_xref_address_item.tpl b/templates/view_xref_address_item.tpl index 0695731..368aef6 100755 --- a/templates/view_xref_address_item.tpl +++ b/templates/view_xref_address_item.tpl @@ -1,22 +1,19 @@ {strip} - {$gContent->mInfo.$source[xref].source_title|escape} + {$xrefInfo.xref_title|escape} -  + {$xrefInfo.xkey_ext|escape}{if $xrefInfo.address}, {$xrefInfo.address|escape}{/if}{if $xrefInfo.xkey}, {$xrefInfo.xkey|escape}{/if} - {$gContent->mInfo.$source[xref].xkey_ext|escape}, {$gContent->mInfo.$source[xref].address|escape}, {$gContent->mInfo.$source[xref].xkey|escape} - - - {$gContent->mInfo.$source[xref].data|escape} + {$xrefInfo.data|escape} {if $xrefAllowEdit} {if $source ne 'history' } - {$gContent->mInfo.$source[xref].start_date|bit_short_date} + {$xrefInfo.start_date|bit_short_date} {else} - {$gContent->mInfo.$source[xref].end_date|bit_short_date} + {$xrefInfo.end_date|bit_short_date} {/if} {if $gBitSystem->isFeatureActive( 'contact_list_last_modified' )} @@ -27,16 +24,16 @@ {if $gBitUser->hasPermission( 'p_contact_view_detail' )} - {smartlink ititle="View" ifile="view_xref.php" biticon="view-fullscreen" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} + {smartlink ititle="View" ifile="view_xref.php" biticon="view-fullscreen" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id} {/if} {if $gBitUser->hasPermission( 'p_contact_update' ) && $source ne 'history' } - {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} + {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id} {/if} - {if $gBitUser->hasPermission( 'p_contact_expunge' ) && $gContent->mInfo.$source[xref].item ne 'KEY_B' } + {if $gBitUser->hasPermission( 'p_contact_expunge' ) && $xrefInfo.item ne 'KEY_B' } {if $source eq 'history' } - {smartlink ititle="Restore" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=-1} + {smartlink ititle="Restore" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=-1} {else} - {smartlink ititle="Delete" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1} + {smartlink ititle="Delete" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1} {/if} {/if} diff --git a/templates/view_xref_contact_group.tpl b/templates/view_xref_contact_group.tpl new file mode 100644 index 0000000..cada284 --- /dev/null +++ b/templates/view_xref_contact_group.tpl @@ -0,0 +1,35 @@ +{assign var=xrefAllowEdit value=$allow_edit|default:true} +{jstab title="`$xrefGroup->mTitle` ({$xrefGroup->mXrefs|@count})"} +{legend legend=$xrefGroup->mTitle} +
+ + + + + + + {if $xrefAllowEdit}{/if} + + + + {if $xrefGroup->mXrefs} + {foreach $xrefGroup->mXrefs as $xrefInfo} + + {include file=$gContent->getXrefRecordTemplate($xrefInfo.template)} + + {/foreach} + {else} + + + + {/if} + +
{tr}Type{/tr}{tr}Value{/tr}{tr}Note{/tr}{tr}Added{/tr}{tr}Edit{/tr}
{tr}No {$xrefGroup->mTitle} records found{/tr}
+
+{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && $xrefGroup->mXGroup ne 'history'} +
+ {smartlink ititle="Add record" ipackage="liberty" ifile="add_xref.php" biticon="list-add" content_id=$gContent->mInfo.content_id group=$xrefGroup->mSortOrder} +
+{/if} +{/legend} +{/jstab} diff --git a/templates/view_xref_phone_item.tpl b/templates/view_xref_phone_item.tpl index 8e9bc3c..751948f 100755 --- a/templates/view_xref_phone_item.tpl +++ b/templates/view_xref_phone_item.tpl @@ -1,22 +1,19 @@ {strip} - {$gContent->mInfo.$source[xref].source_title|escape} + {$xrefInfo.xref_title|escape} -  + {$xrefInfo.xkey|escape} - {$gContent->mInfo.$source[xref].xkey|escape} - - - {$gContent->mInfo.$source[xref].data|escape} + {$xrefInfo.data|escape} {if $xrefAllowEdit} {if $source ne 'history' } - {$gContent->mInfo.$source[xref].start_date|bit_short_date} + {$xrefInfo.start_date|bit_short_date} {else} - {$gContent->mInfo.$source[xref].end_date|bit_short_date} + {$xrefInfo.end_date|bit_short_date} {/if} {if $gBitSystem->isFeatureActive( 'contact_list_last_modified' )} @@ -27,13 +24,13 @@ {if $gBitUser->hasPermission( 'p_contact_update' ) && $source ne 'history' } - {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} + {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id} {/if} {if $gBitUser->hasPermission( 'p_contact_expunge' ) } {if $source eq 'history' } - {smartlink ititle="Restore" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=-1} + {smartlink ititle="Restore" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=-1} {else} - {smartlink ititle="Delete" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1} + {smartlink ititle="Delete" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1} {/if} {/if} diff --git a/templates/view_xref_text_item.tpl b/templates/view_xref_text_item.tpl deleted file mode 100755 index e24895a..0000000 --- a/templates/view_xref_text_item.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{strip} - - {$gContent->mInfo.$source[xref].source_title|escape} - - - {if isset($gContent->mInfo.$source[xref].xref) && $gContent->mInfo.$source[xref].xref <> '' && $gContent->mInfo.$source[xref].xref > 100 } - {$gContent->mInfo.$source[xref].xref|escape} - {smartlink ititle="Link to" ifile="display_contact.php" biticon="edit" content_id=$gContent->mInfo.$source[xref].xref} - {else} -   - {/if} - - - {$gContent->mInfo.$source[xref].xkey|escape} {$gContent->mInfo.$source[xref].xkey_ext|escape} - - - {$gContent->mInfo.$source[xref].data|escape} - -{if $xrefAllowEdit} - -{if $source ne 'history' } - {$gContent->mInfo.$source[xref].start_date|bit_short_date} -{else} - {$gContent->mInfo.$source[xref].end_date|bit_short_date} -{/if} - -{if $gBitSystem->isFeatureActive( 'contact_list_last_modified' )} - - {$gContent->mInfo.xref[xref].last_update_date|bit_long_date} - -{/if} - - - {if $gBitUser->hasPermission( 'p_contact_update' ) && $source ne 'history' } - {if $gContent->mInfo.$source[xref].item eq 'KEY_B' } - {smartlink ititle="Callout" ifile="edit_key_break.php" biticon="edit-redo" expunge=0 content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} - {smartlink ititle="Reseal" ifile="edit_key_break.php" biticon="edit-undo" expunge=2 content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} - {else} - {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id} - {/if} - {/if} - {if $gBitUser->hasPermission( 'p_contact_expunge' ) && $gContent->mInfo.$source[xref].item ne 'KEY_B' } - {if $source eq 'history' } - {smartlink ititle="Restore" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=-1} - {else} - {smartlink ititle="Delete" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1} - {/if} - {/if} - - -{/if} -{/strip} -- cgit v1.3