[development] Clone Node with File Attachments

Ron Parker sysop at scbbs.com
Thu Dec 13 19:07:32 UTC 2007

OK, I got it figured out, mostly.

First, I use hook_insert to execute my file handling code (see below).  
However, I've still got one problem: I only want to execute this code if 
the node being inserted has been "cloned".   You see I've used  "if 
$node->agenda == 'clone'", but this obviously doesn't work since there 
is no $node->agenda item.

I need a way to tell the system that this node being inserted is a 
cloned node.  Any suggestions on how to do this?  I was thinking about 
using a SESSION variable, but am not sure if that's the most efficient 
way to do it.

Also, if I add files to the cloned node which already contains files, I 
need a way to determine which files in $node->files have actually been 
uploaded, and which have only been copied from the original node.  Any 
suggestions for that?

  // Continue processing if this is a cloned agenda item;
  if ($node->agenda == 'clone') {
    if (!is_array($node->files)) {
    foreach ($node->files as $fid => $file) {
      // Convert file to object for compatibility
      $file = (object)$file;

      // New file upload
      if ($file = file_save_upload($file, $file->filename)) {
        $file->fid = db_next_id('{files}_fid');
        db_query("INSERT INTO {files} (fid, nid, filename, filepath, 
filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, 
$node->nid, $file->filename, $file->filepath, $file->filemime, 
        db_query("INSERT INTO {file_revisions} (fid, vid, list, 
description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, 
$file->list, $file->description);
        // Tell other modules where the file was stored.
        $node->files[$fid] = $file;

Ron Parker
Software Creations               http://www.scbbs.com
Self-Administration Web Site     http://saw.scbbs.com
SDSS Subscription Mgmt Service   http://sdss.scbbs.com
Central Ave Dance Ensemble       http://www.centralavedance.com
R & B Salsa                      http://www.randbsalsa.com

More information about the development mailing list