Forums / Developer / Help: PHP code to create a folder

Help: PHP code to create a folder

Author Message

Thiago Campos Viana

Wednesday 27 February 2008 6:31:01 am

hi everybody

I'm trying to write a php code that creates a folder, here's the code:

<?

$user_id=12;
include_once("kernel/classes/datatypes/ezuser/ezuser.php");
include_once('lib/ezutils/classes/ezoperationhandler.php');
include_once("kernel/classes/ezcontentclass.php");
include_once("kernel/classes/ezcontentobjecttreenode.php");
include_once("kernel/classes/datatypes/ezuser/eznodeassignment.php");

$parentNodeID=2;

$class = eZContentClass::fetchByIdentifier('folder');

$parentContentObjectTreeNode = eZContentObjectTreeNode::fetch($parentNodeID);
$parentContentObject = $parentContentObjectTreeNode->attribute("object");
$sectionID = $parentContentObject->attribute('section_id');
$contentObject = & $class->instantiate($user_id, $sectionID);

$nodeAssignment =& eZNodeAssignment::create(array('contentobject_id'=>$contentObject->attribute('id'),'content_version'=>$contentObject->attribute('current_version'), 'parent_node'=>$parentContentObjectTreeNode->attribute('node_id'),'is_main'=>1));

$nodeAssignment->store();

$contentObject->setAttribute('name','Teste1');

$contentObject->store();

$contentObject->setAttribute('status',EZ_VERSION_STATUS_DRAFT);
$contentObject->store();

$operationResult = eZOperationHandler::execute('content', 'publish',array('object_id'=>$contentObject->attribute('id'),'version'=>1));
?>

When I run the code I got the following error:

Parse error: parse error, unexpected T_CLONE, expecting T_STRING in /var/www/somesite/kernel/classes/ezcontentclass.php on line 175

I'm using eZ publish 3.9.4 - PHP Version 4.4.2-1build1 - Apache 2.0

Could anyone please help me?

eZ Publish Certified Developer: http://auth.ez.no/certification/verify/376924

Twitter: http://twitter.com/tcv_br

Kristof Coomans

Wednesday 27 February 2008 7:45:55 am

You are executing your code with PHP 5, not PHP 4.

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

Thiago Campos Viana

Friday 29 February 2008 1:50:30 am

Thx Kristof

I fixed the includes:

include_once("kernel/classes/datatypes/ezuser/ezuser.php");
include_once('lib/ezutils/classes/ezoperationhandler.php');
include_once("kernel/classes/ezcontentclass.php");
include_once("kernel/classes/ezcontentobjecttreenode.php");
include_once("kernel/classes/eznodeassignment.php");

And executed the code with php4, but I got a new error:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /var/www/somesite/lib/ezdb/classes/ezmysqldb.php on line 131

This line is:

if ( $this->UsePersistentConnection == true )
{
$connection = mysql_pconnect( $server, $user, $password );
}
else
{
$connection = mysql_connect( $server, $user, $password, true );
}

I think the code is not getting the right ini settings for db connections because I am not executing it as an ez extensio, I am trying to execute it alone, but I will think a litle more about this problem.

Edited: I tested the code as a view on an extension and it worked!

eZ Publish Certified Developer: http://auth.ez.no/certification/verify/376924

Twitter: http://twitter.com/tcv_br

David Suela

Friday 29 February 2008 4:54:42 am

xsto.info <el acceso a la información>
http://xsto.info
http://dominios.coop

Thiago Campos Viana

Monday 03 March 2008 8:23:05 am

Hi, thx David

I have a new problem with this code when setting attributes values. The name of the created folder was supposed to be "test", but, instead, it was "Folder", how can I fix it?

<?

include_once("kernel/common/template.php");
include_once("kernel/classes/datatypes/ezuser/ezuser.php");
include_once('lib/ezutils/classes/ezoperationhandler.php');
include_once("kernel/classes/ezcontentclass.php");
include_once("kernel/classes/ezcontentobjecttreenode.php");
include_once("kernel/classes/eznodeassignment.php");

$user_id=12;
$parentNodeID=2;

$class = eZContentClass::fetchByIdentifier('folder');

$parentContentObjectTreeNode = eZContentObjectTreeNode::fetch($parentNodeID);
$parentContentObject = $parentContentObjectTreeNode->attribute("object");
$sectionID = $parentContentObject->attribute('section_id');
$contentObject = & $class->instantiate($user_id, $sectionID);

$nodeAssignment =& eZNodeAssignment::create(array('contentobject_id' => $contentObject->attribute('id'),'contentobject_version' => $contentObject->attribute('current_version'), 'parent_node' => $parentContentObjectTreeNode->attribute('node_id'),'is_main'=>1));

$nodeAssignment->store();
$contentObject->setAttribute('name','test');
$contentObject->store();

$attribs =& $contentObject->contentObjectAttributes();
$loopLength = count($attribs);
for($i=0;$i<$loopLength;$i++){

switch($attribs[$i]->attribute("contentclass_attribute_identifier")){
case 'short_name':
echo 'nome <br /><br />'.$title;
$attribs[$i]->setAttribute('short_name','test');
$attribs[$i]->store();
break;
}

}

$contentObject->setAttribute('status',EZ_VERSION_STATUS_DRAFT);
$contentObject->store();

$operationResult = eZOperationHandler::execute('content', 'publish',array('object_id'=>$contentObject->attribute('id'),'version'=>1));

}

}

}

?>

eZ Publish Certified Developer: http://auth.ez.no/certification/verify/376924

Twitter: http://twitter.com/tcv_br

André R.

Tuesday 04 March 2008 4:33:12 am

try:

$attribs[$i]->setAttribute('data_text','test');

(replace 'short_name' with 'data_text', this is the attribute 'data_text' of the class attribute 'short_name')

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom