Example #1
0
 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;
 }