Commit eb28074a authored by Steven Wittens's avatar Steven Wittens

#108320: Form API optimization, don't call element_sort unless needed.

parent 193f359c
......@@ -2113,7 +2113,11 @@ function drupal_render(&$elements) {
}
$content = '';
uasort($elements, "_element_sort");
// Either the elements did not go through form_builder or one of the children
// has a #weight.
if (!isset($elements['#sorted'])) {
uasort($elements, "_element_sort");
}
if (!isset($elements['#children'])) {
$children = element_children($elements);
/* Render all the children that use a theme function */
......
......@@ -755,8 +755,11 @@ function form_builder($form_id, $form) {
form_set_value($form, $form['#value']);
}
// We start off assuming all form elements are in the correct order.
$form['#sorted'] = TRUE;
// Recurse through all child elements.
$count = 0;
$count = 0;
foreach (element_children($form) as $key) {
$form[$key]['#post'] = $form['#post'];
$form[$key]['#programmed'] = $form['#programmed'];
......@@ -780,6 +783,10 @@ function form_builder($form_id, $form) {
if (!isset($form[$key]['#weight'])) {
$form[$key]['#weight'] = $count/1000;
}
else {
// If one the child elements has a weight then we will need to sort later.
unset($form['#sorted']);
}
$form[$key] = form_builder($form_id, $form[$key]);
$count++;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment