function filefield_update_3 in FileField 6.2
Same name and namespace in other branches
- 5.2 filefield.install \filefield_update_3()
Update to filefield 5.x-2.3: Move the 'show_list' widget setting to the (inverse) 'force_list' field setting.
File
- ./
filefield.install, line 73
Code
function filefield_update_3() {
$ret = array();
include_once drupal_get_path('module', 'content') . '/content.module';
include_once drupal_get_path('module', 'content') . '/content_admin.inc';
$fields = content_fields();
foreach ($fields as $field) {
switch ($field['type']) {
case 'file':
$result = db_query("SELECT * FROM {node_field_instance} WHERE field_name = '%s'", $field['field_name']);
while ($instance = db_fetch_object($result)) {
$widget_settings = unserialize($instance->widget_settings);
if (isset($widget_settings['show_list'])) {
$show_list = $widget_settings['show_list'];
unset($widget_settings['show_list']);
// write the widget settings without 'show_list' to the instance
$ret[] = update_sql("UPDATE {node_field_instance}\n SET widget_settings = '" . serialize($widget_settings) . "'\n WHERE field_name = '" . $field['field_name'] . "'\n AND type_name = '" . $instance->type_name . "'");
// write the field settings with the new $force_list to the global settings
$global = db_result(db_query("SELECT * FROM {node_field} WHERE field_name = '%s'", $field['field_name']));
$field_settings = unserialize($global->global_settings);
$field_settings['force_list'] = $show_list == 0 ? 1 : 0;
$ret[] = update_sql("UPDATE {node_field}\n SET global_settings = '" . serialize($field_settings) . "'\n WHERE field_name = '" . $field['field_name'] . "'");
}
}
break;
}
}
db_query('DELETE FROM {cache}');
db_query('DELETE FROM {cache_content}');
return $ret;
}