function system_update_6022 in Drupal 6
Update files tables to associate files to a uid by default instead of a nid. Rename file_revisions to upload since it should only be used by the upload module used by upload to link files to nodes.
Related topics
File
- modules/
system/ system.install, line 2017
Code
function system_update_6022() {
$ret = array();
// Rename the nid field to vid, add status and timestamp fields, and indexes.
db_drop_index($ret, 'files', 'nid');
db_change_field($ret, 'files', 'nid', 'uid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
));
db_add_field($ret, 'files', 'status', array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
));
db_add_field($ret, 'files', 'timestamp', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
));
db_add_index($ret, 'files', 'uid', array(
'uid',
));
db_add_index($ret, 'files', 'status', array(
'status',
));
db_add_index($ret, 'files', 'timestamp', array(
'timestamp',
));
// Rename the file_revisions table to upload then add nid column. Since we're
// changing the table name we need to drop and re-add the indexes and
// the primary key so both mysql and pgsql end up with the correct index
// names.
db_drop_primary_key($ret, 'file_revisions');
db_drop_index($ret, 'file_revisions', 'vid');
db_rename_table($ret, 'file_revisions', 'upload');
db_add_field($ret, 'upload', 'nid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
));
db_add_index($ret, 'upload', 'nid', array(
'nid',
));
db_add_primary_key($ret, 'upload', array(
'vid',
'fid',
));
db_add_index($ret, 'upload', 'fid', array(
'fid',
));
// The nid column was renamed to uid. Use the old nid to find the node's uid.
update_sql('UPDATE {files} SET uid = (SELECT n.uid FROM {node} n WHERE {files}.uid = n.nid)');
update_sql('UPDATE {upload} SET nid = (SELECT r.nid FROM {node_revisions} r WHERE {upload}.vid = r.vid)');
// Mark all existing files as FILE_STATUS_PERMANENT.
$ret[] = update_sql('UPDATE {files} SET status = 1');
return $ret;
}