Publication d'objets créés par un script

Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.

Auteur Message

Patrice DUCLAUD

Jeudi 13 Mars 2008 2:20:29 pm

Publication d'objets créés par un script

Bonjour,

eZpublish 3.6.12
A partir d'un script php, je peux créer des objets (user, folder) mais je ne suis pas en mesure de les publier. Il semble que certaines variables globales ne sont pas renseignées, $GLOBAL['eZModuleGlobalePathList'] par exemple et par conséquent, la publication ne se fait pas. j'ai les messages d'erreur suivants :

Warning: (PHP) Invalid argument supplied for foreach() in Monsite/lib/ezutils/classes/ezmoduleoperationinfo.php on line 74
Warning: (PHP) Undefined variable: definitionFile in Monsite/lib/ezutils/classes/ezmoduleoperationinfo.php on line 81
Error: (eZModuleOperationInfo::loadDefinition) Missing operation definition file for module: content
Error: (eZOperationHandler::execute) Cannot execute operation 'publish' in module 'content', no valid data

le script est le suivant.
<?php
/*----------------------------------------------------------------------------------
Création d'un Folder
----------------------------------------------------------------------------------*/
include_once( 'lib/ezutils/classes/ezcli.php' );
include_once( 'kernel/classes/ezscript.php' );
$cli =& eZCLI::instance();
$script =& eZScript::instance(array( 'debug-message' => '',
'debug-output' => true,
'use-session' => true,
'use-module' => true,
'use-extention' => true));
$script->startup();
$options = $script->getOptions();
$script->initialize();
include_once( 'kernel/common/template.php' );
include_once( 'kernel/classes/datatypes/ezuser/ezuser.php');
include_once( 'kernel/classes/ezcontentclass.php');
include_once( 'kernel/classes/ezcontentobjecttreenode.php' );
include_once( 'kernel/classes/eznodeassignment.php');
$userID=14; // admin user
$parentNodeID=110; //Folder
$class=eZContentClass::fetchByIdentifier('folder');
$parentContentObjectTreeNode = eZContentObjectTreeNode::fetch($parentNodeID);
$parentContentObject = $parentContentObjectTreeNode->attribute('object');
$sectionID = $parentContentObject->attribute('section_id');
$contentObject =& $class->instantiate($userID,$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' :
$attribs[$i]->setAttribute('data_text','test');
$attribs[$i]->store();
break;
}
}
$contentObject->setAttribute('status',EZ_VERSION_STATUS_DRAFT);
$contentObject->store();
include_once( 'lib/ezutils/classes/ezoperationhandler.php');
$operationResult = eZOperationHandler::execute('content','publish',
array('object_id'=>$contentObject->attribute('id'),
'version'=>1));
$script->shutdown();
?>

En fait, comment s'assurer que l'environnement d'exécution d'un script ( comme celui ci-dessus), à partir de la ligne de commande et à la racine du site est conforme à ce qu'il doit être,


Toute suggestion, aide salvatrice est la bienvenue.

Patrice

Patrice DUCLAUD

Mardi 15 Avril 2008 5:16:46 pm

Re: Publication d'objets créés par un script


Pour ceux que cela intéresse, une partie de la réponse doit se trouver ici http://ezpedia.org/wiki/en/ez/cronjob.

Patrice

Philippe VINCENT-ROYOL

Mardi 15 Avril 2008 5:38:52 pm

Re: Publication d'objets créés par un script

Bonjour,

ca rejoint mon problème.. via php je créer des objets selon une classe précise en utilisant eZContentFunctions::createAndPublishObject()
Par contre je suis avec ezpublish 3.9.2.. il y a eu des patchs donc à voir ..
j'essayerais de me pencher sur ton code

Philippe

Philippe VINCENT-ROYOL

Lundi 21 Avril 2008 10:20:11 am

Re: Publication d'objets créés par un script

Salut Patrice,

j'ai peut être trouvé... inverse les 2 lignes suivantes

include_once( 'lib/ezutils/classes/ezcli.php' );
include_once( 'kernel/classes/ezscript.php' );

les erreurs devraient disparaitres en théorie

@+
Philippe

Patrice DUCLAUD

Lundi 21 Avril 2008 10:46:01 am

Re: Publication d'objets créés par un script

Bonjour Philippe,

J'ai inversé les deux lignes, mais pour moi cela ne résoud pas le problème, mais crée un autre message d'erreur.
merci quand même.

Patrice

eZ publish™ copyright © 1999-2008 eZ systems as