Forums / Setup & design / nodeassignment and treenode

nodeassignment and treenode

Author Message

andre müller

Monday 20 March 2006 8:32:31 am

i'm trying to assign a new node to my contentobjects with a script. whenever i use the following code:

$nodeAssignment =& eZNodeAssignment::create( array(
        		              'contentobject_id' => $cobj->attribute( 'id' ),
        		              'contentobject_version' => $cobj->attribute( 'current_version' ),
                                   'parent_node' => $parentNodeID,
        		              'sort_field' => 2,
        		              'sort_order' => 0,
        		              'is_main' => 0
        		              )
        		              );
$nodeAssignment->store();

now my node assignment is created in the table eznode_assignment table.
but no new treenode is created and therefore the the new node isn't really added.
can anybody tell me what i'm missing?
thanks!

Betsy Gamrat

Monday 20 March 2006 9:45:51 am

'is_main' => 0

Try changing this to 'is_main'=>1.

Kristof Coomans

Monday 20 March 2006 11:53:11 am

You'll have to call the publish operation of the content module. See http://ez.no/community/forum/developer/insert_objects_from_module_clear_cache_problem/.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

andre müller

Tuesday 21 March 2006 1:03:49 am

thanks for the replies. i did publish the object - without success. it may be a problem that i do not create a new version when i edit my objects. i just get the current version and the contentobjectattributes of that version. then i set new values for some attributes and try to add a node assignment before i call the publish operation..

Kristof Coomans

Tuesday 21 March 2006 3:28:09 am

If I remember well, the operation result is stored for each content object version. If you try to publish a specific version for a second time then the operation won't do anything.

Try to create a new version, add a node assignment for the new version and run the publish operation on that version.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

andre müller

Tuesday 21 March 2006 7:48:53 am

that sounds like a good advice. i'll give it a try. thanks!

andre müller

Wednesday 22 March 2006 9:44:02 am

well - still doesn't work..version is created fine. attributes of that version are created fine. but the version status is still 0 even after publishing.

could it be a permission problem? i used the code:

$user =& eZUser::instance(14);
$user->loginCurrent();

which i'm sure is wrong..but worked for the version creation..
hm..

Betsy Gamrat

Wednesday 22 March 2006 10:26:49 am

I have had good luck with this approach.

                //Where to place the object
	// inital values
	$user_id = 14;
	$GroupID = 13;
	$parentNodeID=2; 

                //Get the user node and node_id
	include_once( 'kernel/classes/datatypes/ezuser/ezuser.php' );
	$user =& eZUser::fetch($user_id);
	$user_id = $user->attribute( 'contentobject_id' );
	$userObject =& eZContentObject::fetch($user_id);
	$user_node =& $userObject->attribute('main_node');

<b>Code adapted from:
// Copyright (C) 1999-2004 Björn Dieding, xrow GbR Germany. All rights reserved.
/*
run this script from the shell

php -C create.php

*/
</b>

andre müller

Thursday 23 March 2006 6:48:00 am

ok, my problem was that i used:

$script =& eZScript::instance( array( 'description' => ( "pieps" ),
                                      'use-session' => false,
                                      'use-modules' => true,
                                      'use-extensions' => true ) );

without 'use-modules' => true,
so the publish operation for rhe content module wasn't able to run properly.

Betsy Gamrat

Thursday 23 March 2006 1:48:35 pm

Good job!