Calling all Drupal developers!
Help us get this on the first page of Digg. DIGG NOW!
Help us get this on the first page of Digg. DIGG NOW!
content_associate_fields($module)
contributions/cck/content.module, line 520
Allows a module to update the database for fields and columns it controls.
string $module The name of the module to update on.
<?php
function content_associate_fields($module) {
// When CCK modules are enabled before content module's update is run,
// to add module and active columns, we can't do this.
if (!variable_get('content_schema_version', -1) >= 6007) {
return FALSE;
}
$module_fields = module_invoke($module, 'field_info');
if ($module_fields) {
foreach ($module_fields as $name => $field_info) {
watchdog('content', 'Updating field type %type with module %module.', array('%type' => $name, '%module' => $module));
db_query("UPDATE {". content_field_tablename() ."} SET module = '%s', active = %d WHERE type = '%s'", $module, 1, $name);
}
}
$module_widgets = module_invoke($module, 'widget_info');
if ($module_widgets) {
foreach ($module_widgets as $name => $widget_info) {
watchdog('content', 'Updating widget type %type with module %module.', array('%type' => $name, '%module' => $module));
db_query("UPDATE {". content_instance_tablename() ."} SET widget_module = '%s', widget_active = %d WHERE widget_type = '%s'", $module, 1, $name);
}
}
// This is called from updates and installs, so get the install-safe
// version of a fields array.
$fields_set = array();
module_load_include('install', 'content');
$types = content_types_install();
foreach ($types as $type_name => $fields) {
foreach ($fields as $field) {
if ($field['module'] == $module && !in_array($field['field_name'], $fields_set)) {
$columns = module_invoke($field['module'], 'field_settings', 'database columns', $field);
db_query("UPDATE {". content_field_tablename() ."} SET db_columns = '%s' WHERE field_name = '%s'", serialize($columns), $field['field_name']);
$fields_set[] = $field['field_name'];
}
}
}
}
?>