--- attachment.install-org 2006-09-12 13:06:44.000000000 -0500 +++ attachment.install 2007-04-03 00:48:19.000000000 -0500 @@ -51,3 +51,65 @@ break; } } + +function attachment_update_2() { + $ret = array(); + + // add new fields + $ret[] = update_sql( + "ALTER TABLE {attachment} + ADD COLUMN `vid` INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER `nid`;" + ); + // make sure our output directory exists + $directory = variable_get('file_directory_path','files'); + file_check_directory($directory, TRUE); + + // limit it to records with no vid incase this has to be run multiple times + $result = db_query('SELECT a.nid, n.vid, a.fid, f.directory FROM {attachment} a INNER JOIN {node} n ON a.nid = n.nid INNER JOIN {file} f ON a.fid=f.fid WHERE a.vid = 0 ORDER BY a.nid'); + while ($node = db_fetch_object($result)) { + // load the filemanager file ... + $oldfile = db_fetch_object(db_query('SELECT * FROM {attachment} WHERE fid = %d', $node->fid)); + // ... and build a filepath + $oldfile->path = variable_get('filemanager_private_path', 'files') .'/active/'. $node->directory .'/'. $oldfile->filename; + + $oldfile_more = db_fetch_object(db_query('SELECT * FROM {file} WHERE fid = %d', $node->fid)); + + // convert the filemanager object into a core file object + $newfile = new stdClass(); + $newfile->filename = $oldfile->filename; + $newfile->filepath = $oldfile->path; + $newfile->filemime = $oldfile_more->mimetype; + $newfile->filesize = $oldfile->size; + + $newfile->fid = db_next_id('{files}_fid'); + db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", + $newfile->fid, $node->nid, $newfile->filename, $newfile->filepath, $newfile->filemime, $newfile->filesize); + db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", + $newfile->fid, $node->vid, 1, $oldfile->title); + + // update the attachment records + db_query("UPDATE {attachment} SET vid = %d WHERE nid = %d;", $node->vid, $node->nid); + + // remove the filemanager record and file + //db_query("DELETE FROM {file} WHERE fid = %d", $node->fid); + //file_delete($oldfile->path); +# } + } + // remove the old fields +/* + $ret[] = update_sql( + "ALTER TABLE {attachment} + DROP COLUMN `vid` + ); + $ret[] = update_sql( + "DELETE FROM {file} + WHERE area="attachments");" + ); +*/ + drupal_set_message(t("The attachment module is no longer supported. Your files have been migrated to the core upload module. You should disable the attachment and filemanager modules now.")); + return $ret; +} + + + +