hw_Modifyobject

(PHP 4)

hw_ModifyobjectModifie les attributs d'object record

Description

bool hw_modifyobject ( int $connection , int $object_to_change , array $remove , array $add [, int $mode ] )

Permet d'effacer, d'ajouter ou de modifier les attributs d'un objet. L'objet est rep�r� par son identifiant object_to_change . Le premier tableau, remove , est la liste des attributs � effacer. Le deuxi�me tableau, add , est celle des attributs � ajouter. Afin de modifier un attribut, il vous faudra dont l'effacer, puis l'ajouter � nouveau. hw_modifyobject() effacera toujours les attributs avant de les ajouter, � moins que la valeur de l'attribut � effacer ne soit pas une cha�ne, ou un tableau.

Les cl�s des deux tableaux sont les noms des attributs. La valeur de chaque �l�ment peut �tre un tableau, une cha�ne ou n'importe quoi d'autre. Dans le cas du tableau, la valeur de l'attribut est construite en s�parant chaque �l�ment par un point virgule. Dans le cas de la cha�ne, elle sert directement de valeur. Une cha�ne vide provoquera un effacement de l'attribut. Si la valeur n'est ni un tableau, ni une cha�ne, aucune op�ration ne sera effectu�e. Cela est n�cessaire si vous voulez ajouter un attribut compl�tement nouveau, pas seulement une nouvelle valeur pour un attribut existant. Si le tableau d'effacement contenait une cha�ne vide comme attribut, le serveur tenterait d'effacer l'attribut, ce qui �chouerait de toute mani�re, car cet attribut n'existe pas. L'ajout de cet attribut �chouerait aussi. Affecter la valeur de 0 � cet attribut ne l'effacerait pas, et l'ajout fonctionnerait.

Si vous voulez changer l'attribut "Nom" de valeur courante "livres" en "articles" vous devrez faire deux tableaux, et appeler hw_modifyobject().

Exemple #1 Modification d'un attribut

<?php
// $connect est une connexion valide
// $objid est l'identifiant de l'objet
$remarr = array("Name" => "books");
$addarr = array("Name" => "articles");
$hw_modifyobject($connect$objid$remarr$addarr);
?>

Afin d'effacer/ajouter une paire nom=valeur aux attributs d'un objet, utilisez simplement les tableaux d'effacement et d'ajout, et laissez le dernier/troisi�me param�tre vide. Si l'attribut est le premier de ce nom � ajouter, donnez une valeur enti�re � cet �l�ment.

Exemple #2 Ajouter un nouvel attribut

<?php
// $connect est une connexion Hyperwave valide
// $objid est l'identifiant de l'objet � modifier
$remarr = array("Name" => 0);
$addarr = array("Name" => "articles");
$hw_modifyobject($connect$objid$remarr$addarr);
?>

Note: Les attributs multilingues, tels que "Title", peuvent �tre modifi�s de deux fa�ons : soit en fournissant la valeur de ces attributs de mani�re native (langue :valeur), soit en fournissant un tableau avec les �l�ments de chaque langue, comme d�crit ci-dessus. L'exemple deviendrait alors :

Exemple #3 Modifier l'attribut de Titre

<?php
$remarr 
= array("Title" => "en:Books");
$addarr = array("Title" => "en:Articles");
$hw_modifyobject($connect$objid$remarr$addarr);
?>

ou

Exemple #4 Modifier l'attribut Title

<?php
$remarr 
= array("Title" => array("en" => "Books"));
$addarr = array("Title" => array("en" => "Articles""ge"=>"Artikel"));
$hw_modifyobject($connect$objid$remarr$addarr);
?>

Ceci supprime l'entr�e anglaise "Books" et ajoute l'entr�e "Articles" et l'entr�e allemande "Artikel".

Exemple #5 Suppression d'un attribut

<?php
$remarr 
= array("Title" => "");
$addarr = array("Title" => "en:Articles");
$hw_modifyobject($connect$objid$remarr$addarr);
?>

Note: Cet exemple va effacer tous les attributs avec le nom "Title" et ajouter un nouvel attribut "Title". Cela peut �tre pratique pour effacer des attributs r�cursivement.

Note: Si vous devez effacer tous les attributs avec un certain nom, vous devez passer une cha�ne vide comme valeur.

Note: Seuls les attributs "Title", "Description" et "Keyword" g�rent correctement le pr�fixe de langue. Pour les autres attributs qui ne portent pas de pr�fixe de langage, le pr�fixe "xx" sera assign�.

Note: L'attribut "Name" est un peu particulier. Dans certains cas, il ne peut pas �tre compl�tement effac�. Vous aurez alors le message "Change of base attribute" (l'apparition de cette erreur n'est pas tr�s claire). Ainsi, vous aurez � ajouter une nouvelle entr�e pour "Name" puis, effacer l'ancien.

Note: Il ne faut pas encadrer cette fonction par des appels � hw_getandlock() et hw_unlock(). hw_modifyobject() le fait de mani�re interne.

Liste de param�tres

connection

L'identifiant de connexion.

object_to_change

L'objet � changer.

remove

Un tableau d'attributs � effacer.

add

Un tableau d'attributs � ajouter.

mode

Le dernier param�tre d�termine si la modification est r�cursive ou pas. 1 signifie que la modification est r�cursive. Si un objet ne peut pas �tre modifi�, il sera ignor�. hw_error() n'indiquera alors pas toujours d'erreur, m�me si certains objets n'ont pas pu �tre modifi�s.

Valeurs de retour

Cette fonction retourne TRUE en cas de succ�s, FALSE en cas d'�chec.