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.