/** * Process data submitted through the form generator. * * @param array * @param array * @param array */ public function processFormData(&$arrPost, &$arrForm, &$arrFiles) { if ($arrForm['leadEnabled']) { $time = time(); $intLead = \Database::getInstance()->prepare("INSERT INTO tl_lead (tstamp,created,language,form_id,master_id,member_id,post_data) VALUES (?, UNIX_TIMESTAMP(), ?,?,?,?,?)")->execute($time, $GLOBALS['TL_LANGUAGE'], $arrForm['id'], $arrForm['leadMaster'] ? $arrForm['leadMaster'] : $arrForm['id'], FE_USER_LOGGED_IN === true ? \FrontendUser::getInstance()->id : 0, serialize($arrPost))->insertId; // Fetch master form fields if ($arrForm['leadMaster'] > 0) { $objFields = \Database::getInstance()->prepare("SELECT f2.*, f1.id AS master_id, f1.name AS postName FROM tl_form_field f1 LEFT JOIN tl_form_field f2 ON f1.leadStore=f2.id WHERE f1.pid=? AND f1.leadStore>0 AND f2.leadStore='1' ORDER BY f2.sorting")->execute($arrForm['id']); } else { $objFields = \Database::getInstance()->prepare("SELECT *, id AS master_id, name AS postName FROM tl_form_field WHERE pid=? AND leadStore='1' ORDER BY sorting")->execute($arrForm['id']); } while ($objFields->next()) { $arrSet = array(); // Regular data if (isset($arrPost[$objFields->postName])) { $varValue = Leads::prepareValue($arrPost[$objFields->postName], $objFields); $varLabel = Leads::prepareLabel($varValue, $objFields); $arrSet = array('pid' => $intLead, 'sorting' => $objFields->sorting, 'tstamp' => $time, 'master_id' => $objFields->master_id, 'field_id' => $objFields->id, 'name' => $objFields->name, 'value' => $varValue, 'label' => $varLabel); } // Files if (isset($arrFiles[$objFields->postName]) && $arrFiles[$objFields->postName]['uploaded']) { $varValue = Leads::prepareValue($arrFiles[$objFields->postName], $objFields); $varLabel = Leads::prepareLabel($varValue, $objFields); $arrSet = array('pid' => $intLead, 'sorting' => $objFields->sorting, 'tstamp' => $time, 'master_id' => $objFields->master_id, 'field_id' => $objFields->id, 'name' => $objFields->name, 'value' => $varValue, 'label' => $varLabel); } if (!empty($arrSet)) { // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['modifyLeadsDataOnStore']) && is_array($GLOBALS['TL_HOOKS']['modifyLeadsDataOnStore'])) { foreach ($GLOBALS['TL_HOOKS']['modifyLeadsDataOnStore'] as $callback) { $this->import($callback[0]); $this->{$callback[0]}->{$callback[1]}($arrPost, $arrForm, $arrFiles, $intLead, $objFields, $arrSet); } } \Database::getInstance()->prepare("INSERT INTO tl_lead_data %s")->set($arrSet)->executeUncached(); } } // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['storeLeadsData']) && is_array($GLOBALS['TL_HOOKS']['storeLeadsData'])) { foreach ($GLOBALS['TL_HOOKS']['storeLeadsData'] as $callback) { $this->import($callback[0]); $this->{$callback[0]}->{$callback[1]}($arrPost, $arrForm, $arrFiles, $intLead, $objFields); } } } }