hw_Modifyobject
(PHP 4)
hw_Modifyobject — Modifie les attributs d'object record
Description
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.