44 |
44 |
|
45 |
45 |
// Function for generating an optionsfor a select field
|
46 |
46 |
if (!function_exists('make_option')) {
|
47 |
|
function make_option(&$n) {
|
|
47 |
function make_option(&$n, $k, $values) {
|
48 |
48 |
// start option group if it exists
|
49 |
49 |
if (substr($n,0,2) == '[=') {
|
50 |
50 |
$n = '<optgroup label="'.substr($n,2,strlen($n)).'">';
|
51 |
51 |
} elseif ($n == ']') {
|
52 |
52 |
$n = '</optgroup>';
|
53 |
53 |
} else {
|
54 |
|
$n = '<option value="'.$n.'">'.$n.'</option>';
|
|
54 |
if(in_array($n, $values))
|
|
55 |
$n = '<option selected="selected" value="'.$n.'">'.$n.'</option>';
|
|
56 |
else
|
|
57 |
$n = '<option value="'.$n.'">'.$n.'</option>';
|
55 |
58 |
}
|
56 |
59 |
}
|
57 |
60 |
}
|
58 |
61 |
// Function for generating a checkbox
|
59 |
62 |
if (!function_exists('make_checkbox')) {
|
60 |
63 |
function make_checkbox(&$n, $idx, $params) {
|
61 |
|
$field_id = $params[0];
|
62 |
|
$seperator = $params[1];
|
|
64 |
$field_id = $params[0][0];
|
|
65 |
$seperator = $params[0][1];
|
63 |
66 |
//$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
|
64 |
|
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
|
|
67 |
if(in_array($n, $params[1]))
|
|
68 |
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'" checked="checked">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
|
|
69 |
else
|
|
70 |
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator;
|
65 |
71 |
}
|
66 |
72 |
}
|
67 |
73 |
// Function for generating a radio button
|
... | ... | |
70 |
76 |
$field_id = $params[0];
|
71 |
77 |
$group = $params[1];
|
72 |
78 |
$seperator = $params[2];
|
73 |
|
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator;
|
|
79 |
if($n == $params[3])
|
|
80 |
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'" checked="checked">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator;
|
|
81 |
else
|
|
82 |
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator;
|
74 |
83 |
}
|
75 |
84 |
}
|
76 |
85 |
// Generate temp submission id
|
... | ... | |
161 |
170 |
}
|
162 |
171 |
if($field['type'] == 'textfield') {
|
163 |
172 |
$vars[] = '{FIELD}';
|
164 |
|
$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.$value.'" class="textfield" />';
|
|
173 |
$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" class="textfield" />';
|
165 |
174 |
} elseif($field['type'] == 'textarea') {
|
166 |
175 |
$vars[] = '{FIELD}';
|
167 |
|
$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.$value.'</textarea>';
|
|
176 |
$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>';
|
168 |
177 |
} elseif($field['type'] == 'select') {
|
169 |
178 |
$vars[] = '{FIELD}';
|
170 |
179 |
$options = explode(',', $value);
|
171 |
|
array_walk($options, 'make_option');
|
|
180 |
array_walk($options, 'make_option', (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array()));
|
172 |
181 |
$field['extra'] = explode(',',$field['extra']);
|
173 |
182 |
$values[] = '<select name="field'.$field_id.'[]" id="field'.$field_id.'" size="'.$field['extra'][0].'" '.$field['extra'][1].' class="select">'.implode($options).'</select>';
|
174 |
183 |
} elseif($field['type'] == 'heading') {
|
... | ... | |
179 |
188 |
} elseif($field['type'] == 'checkbox') {
|
180 |
189 |
$vars[] = '{FIELD}';
|
181 |
190 |
$options = explode(',', $value);
|
182 |
|
array_walk($options, 'make_checkbox',array($field_id,$field['extra']));
|
|
191 |
array_walk($options, 'make_checkbox', array(array($field_id,$field['extra']),(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array())));
|
183 |
192 |
$options[count($options)-1]=substr($options[count($options)-1],0,strlen($options[count($options)-1])-strlen($field['extra']));
|
184 |
193 |
$values[] = implode($options);
|
185 |
194 |
} elseif($field['type'] == 'radio') {
|
186 |
195 |
$vars[] = '{FIELD}';
|
187 |
196 |
$options = explode(',', $value);
|
188 |
|
array_walk($options, 'make_radio',array($field_id,$field['title'],$field['extra']));
|
|
197 |
array_walk($options, 'make_radio', array($field_id,$field['title'],$field['extra'], (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'')));
|
189 |
198 |
$options[count($options)-1]=substr($options[count($options)-1],0,strlen($options[count($options)-1])-strlen($field['extra']));
|
190 |
199 |
$values[] = implode($options);
|
191 |
200 |
} elseif($field['type'] == 'email') {
|
192 |
201 |
$vars[] = '{FIELD}';
|
193 |
|
$values[] = '<input type="text" name="field'.$field_id.'" onChange="return checkmail(this.form.field'.$field_id.')" id="field'.$field_id.'" maxlength="'.$field['extra'].'" class="email" />';
|
|
202 |
$values[] = '<input type="text" name="field'.$field_id.'" onChange="return checkmail(this.form.field'.$field_id.')" id="field'.$field_id.'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'').'" maxlength="'.$field['extra'].'" class="email" />';
|
194 |
203 |
$java_mailcheck .= 'onChange="return checkmail(this.form'.$field_id.'" ';
|
195 |
204 |
}
|
|
205 |
if(isset($_SESSION['field'.$field_id])) unset($_SESSION['field'.$field_id]);
|
196 |
206 |
if($field['type'] != '') {
|
197 |
207 |
echo str_replace($vars, $values, $field_loop);
|
198 |
208 |
}
|
... | ... | |
351 |
361 |
// Create blank "required" array
|
352 |
362 |
$required = array();
|
353 |
363 |
|
|
364 |
// Captcha
|
|
365 |
if($use_captcha) {
|
|
366 |
if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){
|
|
367 |
// Check for a mismatch
|
|
368 |
if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) {
|
|
369 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
|
|
370 |
}
|
|
371 |
} else {
|
|
372 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
|
|
373 |
}
|
|
374 |
}
|
|
375 |
if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); }
|
|
376 |
|
354 |
377 |
// Loop through fields and add to message body
|
355 |
378 |
// Get list of fields
|
356 |
379 |
$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC");
|
... | ... | |
359 |
382 |
// Add to message body
|
360 |
383 |
if($field['type'] != '') {
|
361 |
384 |
if(!empty($_POST['field'.$field['field_id']])) {
|
|
385 |
if(isset($captcha_error)) $_SESSION['field'.$field['field_id']] = $_POST['field'.$field['field_id']];
|
362 |
386 |
if($field['type'] == 'email' AND $admin->validate_email($_POST['field'.$field['field_id']]) == false) {
|
363 |
387 |
$email_error = $MESSAGE['USERS']['INVALID_EMAIL'];
|
364 |
388 |
}
|
... | ... | |
379 |
403 |
}
|
380 |
404 |
}
|
381 |
405 |
}
|
382 |
|
|
383 |
|
// Captcha
|
384 |
|
if($use_captcha) {
|
385 |
|
if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){
|
386 |
|
// Check for a mismatch
|
387 |
|
if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) {
|
388 |
|
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
|
389 |
|
}
|
390 |
|
} else {
|
391 |
|
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
|
392 |
|
}
|
393 |
|
}
|
394 |
|
if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); }
|
395 |
|
|
|
406 |
|
396 |
407 |
// Addslashes to email body - proposed by Icheb in topic=1170.0
|
397 |
408 |
// $email_body = $wb->add_slashes($email_body);
|
398 |
409 |
|
Module form: user supplied input isn't lost on captcha-failure anymore