Revision 618
Added by thorn almost 18 years ago
| view.php | ||
|---|---|---|
| 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 |
|
Also available in: Unified diff
Module form: user supplied input isn't lost on captcha-failure anymore