function makeActions() { global $parametersMod; global $site; $site->requireTemplate('standard/content_management/widgets/misc/contact_form/template.php'); $sql = "select * from `" . DB_PREF . "mc_misc_contact_form_field` where `contact_form` = '" . mysql_real_escape_string($_REQUEST['spec_id']) . "' order by id"; $rs = mysql_query($sql); $fields = array(); if (!$rs) { trigger_error("Can't get form fields " . $sql); } else { while ($lock = mysql_fetch_assoc($rs)) { switch ($lock['type']) { case 'text': $field = new \Library\Php\Form\FieldText(); break; case 'text_multiline': $field = new \Library\Php\Form\FieldTextarea(); break; case 'file': $field = new \Library\Php\Form\FieldFile(); break; case 'email': $field = new \Library\Php\Form\FieldEmail(); break; case 'select': $field = new \Library\Php\Form\FieldSelect(); $field->values = $this->prepare_for_select($this->db_values_to_array($lock['values'])); break; case 'checkbox': $field = new \Library\Php\Form\FieldCheckbox(); break; case 'radio': $field = new \Library\Php\Form\FieldRadio(); $field->values = $this->prepare_for_select($this->db_values_to_array($lock['values'])); break; } $field->caption = $lock['name']; $field->name = 'field_' . (sizeof($fields) + 1); $field->required = $lock['required']; $fields[] = $field; } } $htmlForm = new \Library\Php\Form\Standard($fields); $errors = $htmlForm->getErrors(); $answer = ''; if (sizeof($errors) > 0 || $htmlForm->detectSpam()) { $answer = $htmlForm->generateErrorAnswer($errors); } else { $sql = "select * from `" . DB_PREF . "mc_misc_contact_form` where `id` = '" . mysql_real_escape_string($_REQUEST['spec_id']) . "' limit 1"; $rs = mysql_query($sql); if (!$rs) { trigger_error("Can't get contact form " . $sql); } elseif ($lock = mysql_fetch_assoc($rs)) { $email = Template::generateEmail($fields); $files = array(); $from = $parametersMod->getValue('standard', 'configuration', 'main_parameters', 'email'); foreach ($fields as $field) { if (get_class($field) == 'Library\\Php\\Form\\FieldFile') { if (!empty($_FILES[$field->name]) && $_FILES[$field->name]['error'] == 0) { $file = array(); $file['real_name'] = $_FILES[$field->name]['tmp_name']; $file['required_name'] = $_FILES[$field->name]['name']; $files[] = $file; } } if (get_class($field) == 'Library\\Php\\Form\\FieldEmail' && $field->postedValue() != '') { $from = $field->postedValue(); } } $email_queue = new \Modules\administrator\email_queue\Module(); $email_queue->addEmail($from, '', $lock['email_to'], '', $lock['email_subject'], $email, false, true, $files); } else { trigger_error("Unknown contact form id " . $sql); } $email_queue->send(); $answer = ' <html><head><meta http-equiv="Content-Type" content="text/html; charset=' . CHARSET . '" /></head><body> <script type="text/javascript"> var form = parent.window.document.getElementById(\'' . $_REQUEST['spec_rand_name'] . '\'); form.style.display = \'none\'; //var txtNode = document.createTextNode("' . htmlspecialchars($lock['thank_you']) . '"); var note = parent.window.document.createElement(\'p\'); //note.appendChild(txtNode); //ie7 bug sometimes dont allow to add a textnode. note.innerHTML = "' . htmlspecialchars($lock['thank_you']) . '"; form.parentNode.appendChild(note); </script> </body></html> '; } echo $answer; }