DEPRECATION WARNING

This documentation is not using the current rendering mechanism and will be deleted by December 31st, 2020. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

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.