Forums / Developer / Fetching ID of a created content node

Fetching ID of a created content node

Author Message

Ville Mattila

Thursday 01 March 2007 8:13:25 am

Hi there,

I am building an import script that should create content objects and save them as a hierarchial tree to ez Publish. I have managed to build a script that creates the objects and I can assign them to a parent node that is created with ez Publish itself. Anyway, I can't get the created node ID to refer it to create objects under the imported node.

To make myself clear, an example might be helpful:

function createCompanyFolder($userNodeID, $thisPriority) {
     $folderClassID=19;
     $class =& eZContentClass::fetch( $folderClassID );
     
     $folderContentObject =& $class->instantiate( 14, 11 );
     $nodeAssignment =& eZNodeAssignment::create( array(
                            'contentobject_id' => $folderContentObject->attribute( 'id' ),
                            'contentobject_version' => 1,
                            'parent_node' => $userNodeID,
                            'sort_field' => 8, //Priority
                            'sort_order' => 0, //Descending
			    'priority' => $thisPriority,
                            'is_main' => 1));
     $nodeAssignment->store();

     return $nodeAssignment->ID;
}

When I set $userNodeID statically to any node id, the objects are created successfully. But now, if I need to create a new object UNDER the created object above, I have no idea which ID number should be fed to the function as userNodeID. I have tried to return a nodeAssignment->ID property but the new objects won't appear. I will also get an error "Internal transaction counter mismatch : 57. Should be zero.".

Hope that the explanation was good enough and somebody could give some advice. ;)

Thanks!

Ville

Claudia Kosny

Thursday 01 March 2007 8:26:55 am

Hi

As far as I know the node id does not exist before the folderContentObject is published. After publishing you can get it with

$folderContentObject->attribute('main_node_id');

Claudia

Ville Mattila

Thursday 01 March 2007 8:56:55 am

Thanks Claudia, this solution works fine!

A further question is that if I want to place an object to multiple locations, should I do anything else that just add a nodeAssignment for each location with proper parent_node property?

Ville

Claudia Kosny

Thursday 01 March 2007 10:44:08 am

Hi Ville

As long as you add the node assignments before publishing and set 'is_main' to 0 for them, it should be ok.

Claudia