You are here

function webform_steps_update_7201 in Webform steps 7.3

Same name and namespace in other branches
  1. 7.2 webform_steps.install \webform_steps_update_7201()

Migrate fieldset titles to pagebreaks and first-page variable.

File

./webform_steps.install, line 30

Code

function webform_steps_update_7201() {

  // Enable the progressbar on all webforms.
  if (module_exists('webform_steps_w3')) {
    $sql = <<<SQL
INSERT INTO {webform_steps_w3_progressbar}
  (nid, progressbar_bar, progressbar_pagebreak_labels, progressbar_label_first)
SELECT nid, 1, 1, 'Start' FROM {webform}
SQL;
    db_query($sql);
  }
  elseif (function_exists('template_preprocess_webform_progressbar')) {
    $sql = <<<SQL
UPDATE {webform}
SET progressbar_bar=1, progressbar_pagebreak_labels=1, progressbar_label_first='Start'
SQL;
    db_query($sql);
  }

  // webform_steps-7.x-1.x uses the name of the first fieldset on the page as
  // label. If the page doesn't have a fieldset the name of it's preceding
  // pagebreak is used. webform_steps-7.x-2.x doesn't use fieldsets so we have
  // to migrate all labels.
  $sql = "SELECT DISTINCT nid FROM {webform_component} WHERE type='pagebreak'";
  $nids = db_query($sql)
    ->fetchCol();
  foreach ($nids as $nid) {
    $node = node_load($nid);

    // Set defaults.
    $node->webform['progressbar_bar'] = 1;
    $node->webform['progressbar_pagebreak_labels'] = 1;
    $node->webform['progressbar_label_first'] = 'Start';
    $components =& $node->webform['components'];
    $breaks = array();
    $first_fieldset = array(
      1 => NULL,
    );

    // Go through all components and find the first fieldset on each page.
    foreach ($components as $cid => &$component) {
      $p = $component['page_num'];
      if ($component['type'] == 'pagebreak') {
        $breaks[$p] =& $component;
        $first_fieldset[$p] = NULL;
      }
      if ($component['type'] == 'fieldset' && !$first_fieldset[$p]) {
        $first_fieldset[$p] = $component;
        if ($p == 1) {
          $node->webform['progressbar_label_first'] = $component['name'];
        }
        else {
          $breaks[$p]['name'] = $component['name'];
        }
      }
    }
    node_save($node);
  }
}