contrib modules security updates
This commit is contained in:
@@ -125,7 +125,7 @@ class panels_cache_object {
|
||||
/**
|
||||
* When constructed, take a snapshot of our existing out of band data.
|
||||
*/
|
||||
function panels_cache_object() {
|
||||
function __construct() {
|
||||
$this->head = drupal_add_html_head();
|
||||
$this->css = drupal_add_css();
|
||||
$this->tokens = ctools_set_page_token();
|
||||
@@ -173,15 +173,36 @@ class panels_cache_object {
|
||||
$start = $this->js;
|
||||
$this->js = array();
|
||||
|
||||
// Use the advanced mapping function from Drupal >= 7.23 if available.
|
||||
$array_mapping_func = function_exists('drupal_array_diff_assoc_recursive') ? 'drupal_array_diff_assoc_recursive' : 'array_diff_assoc';
|
||||
|
||||
// If there are any differences between the old and the new javascript then
|
||||
// store them to be added later.
|
||||
if ($diff = array_diff_assoc($js, $start)) {
|
||||
$this->js = $diff;
|
||||
}
|
||||
|
||||
// Special case the settings key and get the difference of the data.
|
||||
if ($settings_diff = array_diff_assoc($js['settings']['data'], $start['settings']['data'])) {
|
||||
$this->js['settings'] = $settings_diff;
|
||||
if ($diff = $array_mapping_func($js, $start)) {
|
||||
// Iterate over the diff to ensure we keep the keys on merge and don't add
|
||||
// unnecessary items.
|
||||
foreach ($diff as $key => $diff_data) {
|
||||
// Special case the settings key and get the difference of the data.
|
||||
if ($key === 'settings') {
|
||||
// Iterate over the diff to ensure we keep the keys on merge and don't
|
||||
// add unnecessary items.
|
||||
if (isset($diff[$key]['data'])) {
|
||||
foreach ($diff[$key]['data'] as $settings_key => $settings_data) {
|
||||
// Merge the changes with the base to get a complete settings
|
||||
// array.
|
||||
$this->js[$key]['data'][] = drupal_array_merge_deep($settings_data, $diff[$key]['data'][$settings_key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->js[$key] = $diff_data;
|
||||
// Check if the key was present already and if so merge the changes
|
||||
// with the original data to get the full settings array.
|
||||
if (isset($start[$key])) {
|
||||
$this->js[$key] = drupal_array_merge_deep($start[$key], $this->js[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// And for tokens:
|
||||
@@ -213,7 +234,7 @@ class panels_cache_object {
|
||||
drupal_add_js($args['data'], $args);
|
||||
}
|
||||
else {
|
||||
foreach ($args as $setting) {
|
||||
foreach ($args['data'] as $setting) {
|
||||
drupal_add_js($setting, 'setting');
|
||||
}
|
||||
}
|
||||
@@ -457,6 +478,31 @@ function panels_get_renderer_pipelines($sort = TRUE) {
|
||||
return $pipelines;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch metadata on a specific panels_storage plugin.
|
||||
*
|
||||
* @param $storage
|
||||
* Name of a panel_storage plugin.
|
||||
*
|
||||
* @return
|
||||
* An array with information about the requested panels_storage plugin
|
||||
*/
|
||||
function panels_get_panels_storage_plugin($storage) {
|
||||
ctools_include('plugins');
|
||||
return ctools_get_plugins('panels', 'panels_storage', $storage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch metadata for all panels_storage plugins.
|
||||
*
|
||||
* @return
|
||||
* An array of arrays with information about all available panels_storage plugins.
|
||||
*/
|
||||
function panels_get_panels_storage_plugins() {
|
||||
ctools_include('plugins');
|
||||
return ctools_get_plugins('panels', 'panels_storage');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a function from a plugin, if it exists.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user