function panels_update_7306 in Panels 7.3
Set the storage type and id on existing page manager panels displays.
File
- ./
panels.install, line 623
Code
function panels_update_7306() {
if (!db_table_exists('page_manager_handlers')) {
return t('Skipping update - page_manager is not installed.');
}
// Get all page_manager_handlers that have a panels context.
$result = db_query("SELECT pm.name, pm.conf FROM {page_manager_handlers} pm WHERE pm.handler = 'panel_context'");
$page_manager_panels = array();
foreach ($result as $row) {
$conf = unserialize($row->conf);
if (isset($conf['did'])) {
$page_manager_panels[$conf['did']] = $row->name;
}
}
if (!empty($page_manager_panels)) {
// Check panels displays that only have empty storage types.
$result = db_query("SELECT pd.did FROM {panels_display} pd WHERE pd.did IN (:dids) AND storage_type = ''", array(
':dids' => array_keys($page_manager_panels),
));
foreach ($result as $row) {
db_update('panels_display')
->fields(array(
'storage_type' => 'page_manager',
'storage_id' => $page_manager_panels[$row->did],
))
->condition('did', $row->did)
->execute();
}
}
}