function webform_update_13 in Webform 6.2
Same name and namespace in other branches
- 5.2 webform.install \webform_update_13()
Update to the 2.x version of webform.
File
- ./
webform.install, line 578 - Webform module install/schema hooks.
Code
function webform_update_13() {
$ret = array();
// Set the webform weight to -1. This is needed to have webform's hook_menu()
// take precedence over node_menu().
$ret[] = update_sql("UPDATE {system} SET weight = -1 WHERE type = 'module' and name = 'webform'");
// Ensure crufty submission data that was not removed when webform nodes
// were deleted is cleared out before doing key changes.
$ret[] = update_sql("DELETE FROM {webform} WHERE nid NOT IN (SELECT nid FROM {node} WHERE type = 'webform')");
$ret[] = update_sql("DELETE FROM {webform_component} WHERE nid NOT IN (SELECT nid FROM {node} WHERE type = 'webform')");
$ret[] = update_sql("DELETE FROM {webform_submissions} WHERE nid NOT IN (SELECT nid FROM {node} WHERE type = 'webform')");
$ret[] = update_sql("DELETE FROM {webform_submitted_data} WHERE nid NOT IN (SELECT nid FROM {node} WHERE type = 'webform')");
$result = db_query('SELECT nid FROM {webform}');
while ($row = db_fetch_object($result)) {
db_query("DELETE FROM {webform_submitted_data} WHERE nid = %d AND cid NOT IN (SELECT cid FROM {webform_component} c WHERE c.nid = %d)", $row->nid, $row->nid);
}
// Convert timestamp-based cids to small integers starting at 1 for each node.
$result = db_query('SELECT nid, cid FROM {webform_component} ORDER BY nid ASC, cid ASC');
$nid = 0;
while ($component = db_fetch_array($result)) {
if ($component['nid'] != $nid) {
$nid = $component['nid'];
$cid = 1;
}
$ret[] = update_sql('UPDATE {webform_component} SET cid = ' . $cid . ' WHERE nid = ' . $nid . ' AND cid = ' . $component['cid']);
$ret[] = update_sql('UPDATE {webform_component} SET pid = ' . $cid . ' WHERE nid = ' . $nid . ' AND pid = ' . $component['cid']);
$ret[] = update_sql('UPDATE {webform_submitted_data} SET cid = ' . $cid . ' WHERE nid = ' . $nid . ' AND cid = ' . $component['cid']);
$cid++;
}
// Convert the cid and pid columns to smallints for efficiency.
switch ($GLOBALS['db_type']) {
case 'mysqli':
case 'mysql':
$ret[] = update_sql("ALTER TABLE {webform_component} CHANGE cid cid smallint unsigned NOT NULL default '0'");
$ret[] = update_sql("ALTER TABLE {webform_component} CHANGE pid pid smallint unsigned NOT NULL default '0'");
$ret[] = update_sql("ALTER TABLE {webform_submitted_data} CHANGE cid cid smallint unsigned NOT NULL default '0'");
break;
case 'pgsql':
db_change_column($ret, 'webform_component', 'cid', 'cid', 'smallint', array(
'not null' => TRUE,
'default' => '0',
));
db_change_column($ret, 'webform_component', 'pid', 'pid', 'smallint', array(
'not null' => TRUE,
'default' => '0',
));
db_change_column($ret, 'webform_submitted_data', 'cid', 'cid', 'smallint', array(
'not null' => TRUE,
'default' => '0',
));
break;
}
return $ret;
}