function webform_steps_update_7201 in Webform steps 7.2
Same name and namespace in other branches
- 7.3 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);
}
}