Clone Appears to revert changes on save

joegml - January 30, 2009 - 19:20
Project:Node clone
Version:6.x-1.0
Component:Code
Category:support request
Priority:normal
Assigned:Unassigned
Status:active
Description

Hi Folks. Any help here greatly appreciated. Not sure if this is a bug or not.
I'm trying to clone a node, then modify and save the modified node. On node_save it appears that the modifications I made to the node get wiped out. See code and debug output below. The magic reversion seems to happen as node_save is called. Sorry it's so long ... wanted to give good detail ;-)

Thank You.

<?php
        $path
= drupal_get_path('module', 'clone');
                if(
$dbg){ print ">> passed get_path.<br>";}
        require_once(
$path .'/clone.pages.inc');
                if(
$dbg){ print ">> passed require.<br>";}

       
# Get series master.
       
$series_node = node_load( $series_nid );
       
$master_nid = $series_node->field_master_program[0]["nid"];
        if(
$dbg){
                print
"dbg>> master_nid is $master_nid<br>";
        }

       
# Clone from series master.
       
$clone_nid = clone_node_save( $master_nid ); # node_save happens in here.
       
$new_node = node_load( $clone_nid );

       
# Assign new info: title, length, file.
       
$new_node->title = $title;
       
$new_node->field_series[0]["nid"] = $series_nid; # May be empty.
       
$new_node->field_media_filename[0]["value"] = $file_name;
       
$new_node->field_approximate_length[0]["value"] = $length_string;
       
$new_node = node_submit( $new_node );
        if(
$dbg ){
                print
"dbg>> New Node post clone pre save >><pre>";
               
print_r( $new_node );
                print
"</pre>";
        }
       
node_save( $new_node );

        if(
$dbg ){
               
$new_node = node_load( $new_node->nid );# without this, below reports node is good.
               
print "dbg>> New Node post clone post save and reload >><pre>";
               
print_r( $new_node );
                print
"</pre>";
        }
?>

Debug output
dbg in pegevent_build_program_from_master receving title, length_string, series_nid, file_name, channel
Colchester Selectboard, 01:06:40, 1363, CSEL011309.mpg, 16
>> passed get_path.
>> passed require.
dbg>> master_nid is 3128
dbg>> New Node post clone pre save >>

stdClass Object
(
    [nid] => 6076
    [type] => content_pegevent_program
    [language] =>
    [uid] => 3
    [status] => 1
    [created] => 1233341693
    [changed] => 1233341693
    [comment] => 0
    [promote] => 0
    [moderate] => 0
    [sticky] => 0
    [tnid] => 0
    [translate] => 0
    [vid] => 6079
    [revision_uid] => 3
    [title] => Colchester Selectboard
    [body] =>
    [teaser] =>
    [log] =>
    [revision_timestamp] => 1233341693
    [format] => 0
    [name] => joe
    [picture] =>
    [data] => a:2:{s:13:"form_build_id";s:37:"form-53bdfde05ed2b9fe5e65bda54a065682";s:7:"contact";i:1;}
    [path] => program/clone-colchester-selectboard-6
    [field_series] => Array
        (
            [0] => Array
                (
                    [nid] => 1363
                )

        )

    [field_approximate_length] => Array
        (
            [0] => Array
                (
                    [value] => 01:06:40
                )

        )

    [field_pdate] => Array
        (
            [0] => Array
                (
                    [value] => 2008-12-09T00:00:00
                    [timezone] => America/New_York
                    [timezone_db] => America/New_York
                    [date_type] => date
                )

        )

    [field_description] => Array
        (
            [0] => Array
                (
                    [value] =>
                    [format] =>
                )

        )

    [field_runs] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_ptime] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_location] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_worker] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_is_series_master] => Array
        (
            [0] => Array
                (
                    [value] => Yes
                )

        )

    [field_media_filename] => Array
        (
            [0] => Array
                (
                    [value] => CSEL011309.mpg
                )

        )

    [field_thumbnail_poster_frame] => Array
        (
            [0] => Array
                (
                    [value] => 1
                )

        )

    [field_stream] => Array
        (
            [0] => Array
                (
                    [value] => 1
                )

        )

    [field_email] => Array
        (
            [0] => Array
                (
                    [email] =>
                )

        )

    [field_channel] => Array
        (
            [0] => Array
                (
                    [value] => 16
                )

        )

    [last_comment_timestamp] => 1233341693
    [last_comment_name] =>
    [comment_count] => 0
    [taxonomy] => Array
        (
            [1] => stdClass Object
                (
                    [tid] => 1
                    [vid] => 1
                    [name] => Public
                    [description] =>
                    [weight] => 0
                )

            [10] => stdClass Object
                (
                    [tid] => 10
                    [vid] => 3
                    [name] => Meeting
                    [description] =>
                    [weight] => 0
                )

            [18] => stdClass Object
                (
                    [tid] => 18
                    [vid] => 4
                    [name] => Selectboard
                    [description] =>
                    [weight] => 0
                )

            [4] => stdClass Object
                (
                    [tid] => 4
                    [vid] => 2
                    [name] => Colchester
                    [description] =>
                    [weight] => 0
                )

        )

    [files] => Array
        (
        )

    [validated] => 1
)

dbg>> New Node post clone post save and reload >>

stdClass Object
(
    [nid] => 6076
    [type] => content_pegevent_program
    [language] =>
    [uid] => 3
    [status] => 1
    [created] => 1233341693
    [changed] => 1233341693
    [comment] => 0
    [promote] => 0
    [moderate] => 0
    [sticky] => 0
    [tnid] => 0
    [translate] => 0
    [vid] => 6079
    [revision_uid] => 3
    [title] => Clone of Colchester Selectboard
    [body] =>
    [teaser] =>
    [log] =>
    [revision_timestamp] => 1233341693
    [format] => 0
    [name] => joe
    [picture] =>
    [data] => a:2:{s:13:"form_build_id";s:37:"form-53bdfde05ed2b9fe5e65bda54a065682";s:7:"contact";i:1;}
    [path] => program/clone-colchester-selectboard-6
    [field_series] => Array
        (
            [0] => Array
                (
                    [nid] => 1363
                )

        )

    [field_approximate_length] => Array
        (
            [0] => Array
                (
                    [value] => 01:36:15
                )

        )

    [field_pdate] => Array
        (
            [0] => Array
                (
                    [value] => 2008-12-09T00:00:00
                    [timezone] => America/New_York
                    [timezone_db] => America/New_York
                    [date_type] => date
                )

        )

    [field_description] => Array
        (
            [0] => Array
                (
                    [value] =>
                    [format] =>
                )

        )

    [field_runs] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_ptime] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_location] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_worker] => Array
        (
            [0] => Array
                (
                    [value] =>
                )

        )

    [field_is_series_master] => Array
        (
            [0] => Array
                (
                    [value] => Yes
                )

        )

    [field_media_filename] => Array
        (
            [0] => Array
                (
                    [value] => CSEL120908.mpg
                )

        )

    [field_thumbnail_poster_frame] => Array
        (
            [0] => Array
                (
                    [value] => 1
                )

        )

    [field_stream] => Array
        (
            [0] => Array
                (
                    [value] => 1
                )

        )

    [field_email] => Array
        (
            [0] => Array
                (
                    [email] =>
                )

        )

    [field_channel] => Array
        (
            [0] => Array
                (
                    [value] => 16
                )

        )

    [last_comment_timestamp] => 1233341693
    [last_comment_name] =>
    [comment_count] => 0
    [taxonomy] => Array
        (
            [1] => stdClass Object
                (
                    [tid] => 1
                    [vid] => 1
                    [name] => Public
                    [description] =>
                    [weight] => 0
                )

            [10] => stdClass Object
                (
                    [tid] => 10
                    [vid] => 3
                    [name] => Meeting
                    [description] =>
                    [weight] => 0
                )

            [18] => stdClass Object
                (
                    [tid] => 18
                    [vid] => 4
                    [name] => Selectboard
                    [description] =>
                    [weight] => 0
                )

            [4] => stdClass Object
                (
                    [tid] => 4
                    [vid] => 2
                    [name] => Colchester
                    [description] =>
                    [weight] => 0
                )

        )

    [files] => Array
        (
        )

)

#1

pwolanin - February 4, 2009 - 15:32

node_load caches the loaded node. Try passing the reset parameter in.

 
 

Drupal is a registered trademark of Dries Buytaert.