function subform_buffer_errors in Subform 7
Buffers errors seperating them per (sub)form.
2 calls to subform_buffer_errors()
- subform_buffer in ./
subform.module - Buffers errors and uploads seperating them per (sub)form.
- theme_subform in ./
subform.module - Returns HTML for a subform.
File
- ./
subform.module, line 825 - Defines a subform element type.
Code
function subform_buffer_errors($op, &$subform_element, $propagate = FALSE) {
static $errors_stack = array();
static $sections_stack = array();
static $messages_stack = array();
$errors =& drupal_static('form_set_error', array());
$sections =& drupal_static('form_set_error:limit_validation_errors');
switch ($op) {
case 'start':
$errors_stack[] = $errors;
$sections_stack[] = $sections;
$messages_stack[] = isset($_SESSION['messages']['error']) ? $_SESSION['messages']['error'] : array();
$errors = $subform_element['#subform_errors'];
$sections = NULL;
if (isset($_SESSION['messages']['error'])) {
unset($_SESSION['messages']['error']);
}
break;
case 'end':
$subform_element['#subform_errors'] += $errors;
if (isset($_SESSION['messages']['error'])) {
$subform_element['#subform_error_messages'] += $_SESSION['messages']['error'];
}
$errors = array_pop($errors_stack);
$sections = array_pop($sections_stack);
$_SESSION['messages']['error'] = array_pop($messages_stack);
if (empty($_SESSION['messages']['error'])) {
unset($_SESSION['messages']['error']);
}
// If the subform contains errors inform the parent form, but only if
// the subform is required.
if ($propagate && !empty($subform_element['#subform_errors'])) {
$prior_errors = $errors;
form_error($subform_element);
// If the error was added (not skipped by #limit_validation_errors) to
// the parent form also display subform's error messages.
if ($errors != $prior_errors && !empty($subform_element['#subform_error_messages'])) {
$subform_element['#subform_has_errors'] = TRUE;
if (!isset($_SESSION['messages']['error'])) {
$_SESSION['messages']['error'] = array();
}
$_SESSION['messages']['error'] += $subform_element['#subform_error_messages'];
$subform_element['#subform_error_messages'] = array();
}
}
break;
}
}