| 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