Créer des objets de contenu avec php
Table of contents:
Exemple de code
Le code suivant crée nouvel objet de contenu et une version brouillon initiale. Il se base sur une partie de la vue "action" du module "content" (kernel/content/action.php).
Les variables connues
- $contentClassIdentifier: identifiant de la classe de contenu correspondant à l'objet que l'on souhaite créer.
- $node: le noeud parent, dans l'arbre de contenu, sous lequel sera placé le noeud principal de l'objet créé.
$class = eZContentClass::fetchByIdentifier( $contentClassIdentifier ); if ( is_object( $class ) ) { $contentClassID = $class->attribute( 'id' ); $parentContentObject =& $node->attribute( 'object' ); $accessResult = $parentContentObject->checkAccess( 'create', $contentClassID, $parentContentObject->attribute( 'contentclass_id' ) ); if ( $accessResult == '1' ) { include_once( 'kernel/classes/datatypes/ezuser/ezuser.php' ); $user =& eZUser::currentUser(); $userID =& $user->attribute( 'contentobject_id' ); $sectionID = $parentContentObject->attribute( 'section_id' ); include_once( 'lib/ezdb/classes/ezdb.php' ); $db =& eZDB::instance(); $db->begin(); $contentObject =& $class->instantiate( $userID, $sectionID ); $nodeAssignment = eZNodeAssignment::create( array( 'contentobject_id' => $contentObject->attribute( 'id' ), 'contentobject_version' => $contentObject->attribute( 'current_version' ), 'parent_node' => $node->attribute( 'node_id' ), 'is_main' => 1 ) ); $nodeAssignment->store(); $db->commit(); } }
Maintenant que vous avez créé un nouvel objet de contenu, vous pourriez avoir envie de renseigner les attributs et de le publier.
This feature is available since eZ publish 3.9.
Depuis eZ Publish 3.9, il exite aussi une méthode statique : eZContentFunctions::createAndPublishObject() qui prend en charge la création d'un objet, complète ses attributs et le publie à un emplacement. Le renseignement des attributs est pris en charge par les fonctions "fromString" implémentées par les datatypes. Pour plus d'informations à ce sujet, voir : fromString and toString feature doc.
Vérification des permissions
Si vous voulez outrepasser le système de gestion des droits, alors supprimez le test conditionnel sur $accessResult