Saving Values to Third Party Table
Introduction
Powermail is able to save the values from a submitted form into a third-party-table (like news, tt_news, tt_address, tt_content, fe_users, pages, or something else...).
Note: If you want to use _ifUnique functionality (see below for a description), your table must have a field "uid"
Example for table tt_address:
plugin.tx_powermail.settings.setup {
# Save values to any table (see following example)
dbEntry {
#####################################################
### EXAMPLE for adding values to table tt_address ###
#####################################################
1 {
# Enable or disable db entry for table tt_address
# _enable = TEXT
# _enable.value = 1
# Set tableName to "tt_address"
# _table = TEXT
# _table.value = tt_address
# Write only if any field is not yet filled with current value (e.g. test if an email is already in database)
# default: always add new records (don't care about existing values)
# update: update record if there is an existing entry (e.g. if email is already there)
# none: no entry if field is filled (do nothing if record already exists)
# _ifUnique.email = update
# optional: add additional where clause (only in mode "update") for search if a record still exists. You could use a plain string (see example below) or a cObject if needed
# _ifUniqueWhereClause = AND pid = 123
# Fill tt_address.email with a static value => mail@mail.com
# email = TEXT
# email.value = mail@mail.com
# Fill tt_address.pid with the current pid (e.g. 12)
# pid = TEXT
# pid.data = TSFE:id
# Fill tt_address.tstamp with the current time as timestamp (like 123456789)
# tstamp = TEXT
# tstamp.data = date:U
# Fill tt_address.address with the current formatted time (like "Date: 20.01.2013")
# address = TEXT
# address.data = date:U
# address.strftime = Date: %d.%m.%Y
# Fill tt_address.name with the value from powermail {firstname}
# name = TEXT
# name.field = firstname
# Fill tt_address.last_name with the value from powermail {lastname}
# last_name = TEXT
# last_name.field = lastname
# Fill tt_address.company with the value from powermail {company}
# company = TEXT
# company.field = company
# Fill tt_address.position with the uid of the mail record
# position = TEXT
# position.field = uid
}
##############################################################
### EXAMPLE for building a relation to tt_address_group ###
### over the MM table tt_address_group_mm ###
### Add relation to an existing address group with uid 123 ###
##############################################################
2 {
# Enable or disable db entry for table tt_address_group_mm
# _enable = TEXT
# _enable.value = 1
# Set tableName to "tt_address_group_mm"
# _table = TEXT
# _table.value = tt_address_group_mm
# Fill tt_address_group_mm.uid_local with uid of tt_address record from above configuration 1. (usage .field=uid_[key])
# uid_local = TEXT
# uid_local.field = uid_1
# Fill new record of table "tt_address_group_mm" with field "uid_foreign" with uid 123
# uid_foreign = TEXT
# uid_foreign.value = 123
}
}
}
Best practice
If you want to enable the function not for every form but for some special cases, the whole world of TypoScript is open to you
# Enable function only if a special marker is given
plugin.tx_powermail.settings.setup.dbEntry.1._enable = TEXT
plugin.tx_powermail.settings.setup.dbEntry.1._enable.value = 1
plugin.tx_powermail.settings.setup.dbEntry.1._enable.if.isTrue.data = GP:tx_powermail_pi1|field|anymarkername
# Enable function only if the form is located on a defined PID (e.g. 123 in this case)
plugin.tx_powermail.settings.setup.dbEntry.1._enable = TEXT
plugin.tx_powermail.settings.setup.dbEntry.1._enable.value = 1
plugin.tx_powermail.settings.setup.dbEntry.1._enable.if.value = 123
plugin.tx_powermail.settings.setup.dbEntry.1._enable.if.equals.data = TSFE:id
Another possibility would be to use a TypoScript condition to enable some lines of TypoScript only if a condition is true (e.g. on a defined page or if a GET/POST param is set, etc...). Please look at the original TYPO3 TypoScript reference from some condition examples.