1 common.inc | backdrop_render_collect_attached($elements, $return = FALSE) |
Collects #attached for an element and its children into a single array.
When caching elements, it is necessary to collect all libraries, JavaScript and CSS into a single array, from both the element itself and all child elements. This allows backdrop_render() to add these back to the page when the element is returned from cache.
Parameters
$elements: The element to collect #attached from.
$return: Whether to return the attached elements and reset the internal static.
Return value
array|NULL: If $return is TRUE, the #attached array for this element and its descendants. If $return is FALSE, the collected attachments are stored internally so they do not have to be collected again.
File
- core/
includes/ common.inc, line 7109 - Common functions that many Backdrop modules will need to reference.
Code
function backdrop_render_collect_attached($elements, $return = FALSE) {
$attached = &backdrop_static(__FUNCTION__, array());
// Collect all #attached for this element.
if (isset($elements['#attached'])) {
foreach ($elements['#attached'] as $key => $value) {
if (!isset($attached[$key])) {
$attached[$key] = array();
}
$attached[$key] = array_merge($attached[$key], $value);
}
}
if ($children = element_children($elements)) {
foreach ($children as $child) {
backdrop_render_collect_attached($elements[$child]);
}
}
// If this was the first call to the function, return all attached elements
// and reset the static cache.
if ($return) {
$return = $attached;
$attached = array();
return $return;
}
else {
return NULL;
}
}