You are here

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();
    }
  }
}