Records and columns
The extension adds three tables. One profile record, and two child tables whose records belong to exactly one profile and are edited inline in it.
The three tables
| Table | Holds |
|---|---|
tx_ | One profile: names, an optional birthday, a biography, an optional image, the owning website user, and the relations to the two child tables. |
tx_ | The postal addresses of one profile. Manually sorted, not shown as a table of its own in the backend. |
tx_ | The e-mail addresses of one profile. Manually sorted, not shown as a table of its own in the backend. |
Control columns
All three tables are configured the same way for the columns TYPO3 manages itself:
| Capability | Columns |
|---|---|
| Timestamps | tstamp, crdate |
| Soft delete | deleted — deleting a record marks the row rather than
removing it. |
| Publishing controls | hidden, starttime, endtime |
| Language | sys_, l10n_, l10n_,
l10n_ |
| Workspaces | versioning is enabled, so the t3ver_* columns exist
and backend editing is workspace aware. |
Note
There is no fe_ column on any of the three tables. Access
group restrictions are therefore not part of the visibility of a profile,
an address or an e-mail address — only hiding, start time and end time are.
The two child tables additionally carry sorting as their manual sort
column and are marked hide, so they are reached through the profile
record and not through a list module view of their own.
Profile
| Column | Type | Notes |
|---|---|---|
shortname | input, trimmed, required | The record label. lastname and firstname are appended
to it in the backend record title. |
firstname | input, trimmed | Optional. |
lastname | input, trimmed | Optional. Records are listed sorted by last name, then first name. |
birthday | datetime with format => date and
db, nullable, default null | A date without a time of day. The column cannot store one. |
bio | text | Optional free text. |
image | file, relationship => many,
allowed => common- | At most one image per profile, stored as a
sys_. What the frontend upload accepts is
narrower than the TCA — see Image upload. |
addresses | inline to
tx_ | foreign_,
foreign_,
foreign_, at most 99 records, language
synchronization allowed. |
emails | inline to
tx_ | The same configuration, for the e-mail addresses. |
fe_ | select, render, on
fe_, maxitems => 1, default 0 | The website user owning the record. A single value select is stored
as a plain integer column. 0 is the item labelled as "no
owner" and means the record belongs to nobody. |
Ownership is read through
SBUERKModern,
so an installation that keeps it somewhere other than this column replaces that
one service and leaves the rest untouched.
Postal address
| Column | Type | Notes |
|---|---|---|
profile | passthrough | The uid of the owning profile, written by the inline relation. Not an editable field, and not a property of the domain model. |
tablenames | passthrough | The foreign_ of the relation. |
type | select, render,
db, default others | One of home, work, others. |
line1 | input, trimmed | The record label. |
line2 | input, trimmed | Optional. |
The three accepted values of type, with the label ids they are rendered
through:
| Value | Backend and read plugins | Editing surface |
|---|---|---|
home | tx_ | choice. |
work | tx_ | choice. |
others | tx_ | choice. |
The first column of ids lives in
EXT:,
the second in locallang. next to it. Both describe the same stored
value, so overriding one without the other makes the read view and the editing
surface disagree.
E-mail address
| Column | Type | Notes |
|---|---|---|
profile | passthrough | The uid of the owning profile. |
tablenames | passthrough | The foreign_ of the relation. |
type | select, render,
db, default others | One of private, business, others. |
email | email, required | The address itself, and the record label. |
Important
The accepted values of type are not the same set as on the
address table. An address is home, work or others;
an e-mail address is private, business or others.
| Value | Backend and read plugins | Editing surface |
|---|---|---|
private | tx_ | choice. |
business | tx_ | choice. |
others | tx_ | choice. |
Schema definition
The database schema is generated from the TCA. ext_ of this
extension defines exactly two columns, the type column of each child
table:
type varchar(150) DEFAULT 'others' NOT NULL
They are pinned because the definition TYPO3 generates for a
type => select column differs between v13 and v14 — v13 uses an empty
default, v14 the default from the TCA. Everything else, including every
business column above, the inline parent pointers and the control columns, is
created from the TCA and must not be repeated in ext_.