function panels_ajax_tab_get_config in Panels Ajax Tabs 7
Get a list of all panels-ajax-tab configs.
This is used to build a list url suffixes to process at boot if so enabled.
1 call to panels_ajax_tab_get_config()
- panels_ajax_tab_config_cache in ./
panels_ajax_tab.module - Rebuild the URL cache.
File
- ./
panels_ajax_tab.module, line 491 - Allows users to create and manage Panels Ajax Tabs.
Code
function panels_ajax_tab_get_config() {
$config = array();
// Mini panels.
if (module_exists('panels_mini')) {
$panels = panels_mini_load_all();
foreach ($panels as $panel) {
if (!empty($panel->display->content)) {
foreach ($panel->display->content as $pid => $pane) {
if (in_array($pane->type, array(
'panels_ajax_tab_tabs',
'highwire_panel_tabs',
))) {
$pane->configuration['plugin_type'] = $pane->type;
$container_id = $pane->configuration['container_id'];
$config[$container_id] = $pane->configuration;
}
}
}
}
}
// Page-manager pages.
if (module_exists('page_manager')) {
// Now check all panel pages and ignore all mini panels.
ctools_include('page', 'page_manager', 'plugins/tasks');
ctools_include('page_manager.admin', 'page_manager', '');
ctools_include('export');
$tasks = page_manager_get_tasks_by_type('page');
$pages = array();
foreach ($tasks as $task) {
if ($task_pages = page_manager_load_task_handlers($task)) {
$pages = array_merge($pages, $task_pages);
}
if ($subtasks = page_manager_get_task_subtasks($task)) {
foreach ($subtasks as $subtask) {
$task_pages = page_manager_load_task_handlers($subtask);
$pages = array_merge($pages, $task_pages);
}
}
}
// Not all display objects are loaded, make sure to load them.
foreach ($pages as $page) {
if (empty($page->conf['display']) && !empty($page->conf['did'])) {
$page->conf['display'] = panels_load_display($page->conf['did']);
}
}
foreach ($pages as $page) {
if (empty($page->disabled) && !empty($page->conf['display']->content)) {
foreach ($page->conf['display']->content as $pid => $pane) {
if (in_array($pane->type, array(
'panels_ajax_tab_tabs',
'highwire_panel_tabs',
))) {
$pane->configuration['plugin_type'] = $pane->type;
$container_id = $pane->configuration['container_id'];
$config[$container_id] = $pane->configuration;
}
}
}
}
}
// Post-process the configurations.
$old_settings = variable_get('panels_ajax_tab', array(
'clean_url' => FALSE,
'clean_url_delim' => '/',
'panes' => array(),
));
// Get the visibility settings, if available.
$visibility_rules = variable_get('panels_ajax_tab_visibility_rules', array());
foreach ($config as &$conf) {
// Remove any unselected mini-panels from the config.
foreach ($conf['mini_panels'] as $panel_id => $panel_conf) {
if (!$panel_conf['selected']) {
unset($conf['mini_panels'][$panel_id]);
}
}
// Sort remaining panels.
uasort($conf['mini_panels'], 'drupal_sort_weight');
// Mix in any missing settings. Some settings could be missing due to
// upgrade path.
if (!isset($conf['clean_url'])) {
$conf['clean_url'] = $old_settings['clean_url'];
}
if (!isset($conf['clean_url_delim'])) {
$conf['clean_url_delim'] = $old_settings['clean_url_delim'];
}
// Add up visibility.
$visibility_settings = !empty($visibility_rules[$conf['container_id']]) ? $visibility_rules[$conf['container_id']] : array();
$conf['visibility_settings'] = !empty($conf['visibility_settings']) ? $conf['visibility_settings'] : $visibility_settings;
}
// This goes in an alter hook.
$old_settings = variable_get('panels_ajax_tab', array(
'clean_url' => FALSE,
'clean_url_delim' => '/',
'panes' => array(),
));
foreach ($config as &$conf) {
if (!isset($conf['highwire_panel_tab']) && !empty($old_settings['highwire_panel_tab'])) {
$conf['highwire_panel_tab'] = $old_settings['highwire_panel_tab'];
}
}
return $config;
}