function viewfield_update_6003 in Viewfield 6.2
Same name and namespace in other branches
- 6 viewfield.install \viewfield_update_6003()
Update vname fields to varchar(128).
See also
File
- ./
viewfield.install, line 106 - Installation functions.
Code
function viewfield_update_6003() {
if ($abort = content_check_update('viewfield')) {
return $abort;
}
$ret = array();
$new_length = 128;
$result = db_query("SELECT * FROM {" . content_field_tablename() . "} WHERE type = 'viewfield'");
while ($field = db_fetch_array($result)) {
$field['db_columns'] = unserialize($field['db_columns']);
if ($field['db_columns']['vname']['length'] < $new_length) {
$field['db_columns']['vname']['length'] = $new_length;
$db_columns = serialize($field['db_columns']);
$update = db_query("UPDATE {" . content_field_tablename() . "} SET db_columns = '%s' WHERE field_name = '%s'", $db_columns, $field['field_name']);
$ret[] = array(
'success' => $update !== FALSE,
'query' => "UPDATE {" . content_field_tablename() . "} SET db_columns = '{$db_columns}' WHERE field_name = '{$field['field_name']}'",
);
}
}
foreach (content_fields() as $field) {
if ($field['type'] == 'viewfield') {
$field_database_info = content_database_info($field);
$table_name = $field_database_info['table'];
$vname_info = $field_database_info['columns']['vname'];
// Apply to all fields, not just those with length < 128 because of bug in
// 6001. If that update had been applied already, we want to make sure
// this one gets applied.
db_change_field($ret, $table_name, $vname_info['column'], $vname_info['column'], array(
'type' => 'varchar',
'length' => $new_length,
'not null' => FALSE,
'default' => NULL,
));
}
}
return $ret;
}