Beispiel #1
0
 /**
  * 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);
             }
         }
     }
 }