#52484 by chx: filter_form needs validation
parent
d797819821
commit
4b663a62af
|
@ -170,34 +170,36 @@ function drupal_submit_form($form_id, $form, $callback = NULL) {
|
||||||
|
|
||||||
function _form_validate($elements, $form_id = NULL) {
|
function _form_validate($elements, $form_id = NULL) {
|
||||||
/* Validate the current input */
|
/* Validate the current input */
|
||||||
if (!$elements['#validated'] && ($elements['#input'] || isset($form_id))) {
|
if (!$elements['#validated']) {
|
||||||
// An empty textfield returns '' so we use empty(). An empty checkbox
|
if ($elements['#input'] || isset($form_id)) {
|
||||||
// and a textfield could return '0' and empty('0') returns TRUE so we
|
// An empty textfield returns '' so we use empty(). An empty checkbox
|
||||||
// need a special check for the '0' string.
|
// and a textfield could return '0' and empty('0') returns TRUE so we
|
||||||
if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') {
|
// need a special check for the '0' string.
|
||||||
form_error($elements, t('%name field is required.', array('%name' => $elements['#title'])));
|
if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') {
|
||||||
}
|
form_error($elements, t('%name field is required.', array('%name' => $elements['#title'])));
|
||||||
|
}
|
||||||
|
|
||||||
// Add legal choice check if element has #options. Can be skipped, but then you must validate your own element.
|
// Add legal choice check if element has #options. Can be skipped, but then you must validate your own element.
|
||||||
if (isset($elements['#options']) && isset($elements['#value']) && !isset($elements['#DANGEROUS_SKIP_CHECK'])) {
|
if (isset($elements['#options']) && isset($elements['#value']) && !isset($elements['#DANGEROUS_SKIP_CHECK'])) {
|
||||||
if ($elements['#type'] == 'select') {
|
if ($elements['#type'] == 'select') {
|
||||||
$options = form_options_flatten($elements['#options']);
|
$options = form_options_flatten($elements['#options']);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$options = $elements['#options'];
|
$options = $elements['#options'];
|
||||||
}
|
}
|
||||||
if (is_array($elements['#value'])) {
|
if (is_array($elements['#value'])) {
|
||||||
$value = $elements['#type'] == 'checkboxes' ? array_keys(array_filter($elements['#value'])) : $elements['#value'];
|
$value = $elements['#type'] == 'checkboxes' ? array_keys(array_filter($elements['#value'])) : $elements['#value'];
|
||||||
foreach ($value as $v) {
|
foreach ($value as $v) {
|
||||||
if (!isset($options[$v])) {
|
if (!isset($options[$v])) {
|
||||||
form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.'));
|
form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.'));
|
||||||
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme('placeholder', check_plain($v)), '%name' => theme_placeholder(empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title'])), WATCHDOG_ERROR));
|
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme('placeholder', check_plain($v)), '%name' => theme_placeholder(empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title'])), WATCHDOG_ERROR));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
elseif (!isset($options[$elements['#value']])) {
|
||||||
elseif (!isset($options[$elements['#value']])) {
|
form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.'));
|
||||||
form_error($elements, t('An illegal choice has been detected. Please contact the site administrator.'));
|
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme_placeholder(check_plain($v)), '%name' => theme('placeholder', empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title'])), WATCHDOG_ERROR));
|
||||||
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme_placeholder(check_plain($v)), '%name' => theme('placeholder', empty($elements['#title']) ? $elements['#parents'][0] : $elements['#title'])), WATCHDOG_ERROR));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -802,6 +802,7 @@ function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents =
|
||||||
'#collapsible' => TRUE,
|
'#collapsible' => TRUE,
|
||||||
'#collapsed' => TRUE,
|
'#collapsed' => TRUE,
|
||||||
'#weight' => $weight,
|
'#weight' => $weight,
|
||||||
|
'#validate' => array('filter_form_validate' => array()),
|
||||||
);
|
);
|
||||||
// Multiple formats available: display radio buttons with tips.
|
// Multiple formats available: display radio buttons with tips.
|
||||||
foreach ($formats as $format) {
|
foreach ($formats as $format) {
|
||||||
|
@ -829,6 +830,16 @@ function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents =
|
||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function filter_form_validate($form) {
|
||||||
|
foreach (element_children($form) as $key) {
|
||||||
|
if ($form[$key]['#value'] == $form[$key]['#return_value']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
form_error($form, t('An illegal choice has been detected. Please contact the site administrator.'));
|
||||||
|
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme('placeholder', check_plain($v)), '%name' => theme_placeholder(empty($form['#title']) ? $form['#parents'][0] : $form['#title'])), WATCHDOG_ERROR));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the user is allowed to access this format.
|
* Returns true if the user is allowed to access this format.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -802,6 +802,7 @@ function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents =
|
||||||
'#collapsible' => TRUE,
|
'#collapsible' => TRUE,
|
||||||
'#collapsed' => TRUE,
|
'#collapsed' => TRUE,
|
||||||
'#weight' => $weight,
|
'#weight' => $weight,
|
||||||
|
'#validate' => array('filter_form_validate' => array()),
|
||||||
);
|
);
|
||||||
// Multiple formats available: display radio buttons with tips.
|
// Multiple formats available: display radio buttons with tips.
|
||||||
foreach ($formats as $format) {
|
foreach ($formats as $format) {
|
||||||
|
@ -829,6 +830,16 @@ function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents =
|
||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function filter_form_validate($form) {
|
||||||
|
foreach (element_children($form) as $key) {
|
||||||
|
if ($form[$key]['#value'] == $form[$key]['#return_value']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
form_error($form, t('An illegal choice has been detected. Please contact the site administrator.'));
|
||||||
|
watchdog('form', t('Illegal choice %choice in %name element.', array('%choice' => theme('placeholder', check_plain($v)), '%name' => theme_placeholder(empty($form['#title']) ? $form['#parents'][0] : $form['#title'])), WATCHDOG_ERROR));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the user is allowed to access this format.
|
* Returns true if the user is allowed to access this format.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue