hw_Modifyobject

hw_Modifyobject -- Modifie les attributs d'objet record.

Description

int hw_modifyobject ( resource connection, int object_to_change, array remove, array add, int mode)

hw_modifyobject( ) permet d'effacer , d'ajouter ou de modifier les attributs d 'un objet . L ' objet est reperé par son identifiant object_to_change . Le premier tableau , remove , est la liste des attributs à effacer . Le deuxième tableau add est la liste 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 .

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é .

Les clés des deux tableaux sont les noms des attributs . La valeur de chaque élément peut être un tableau , ou 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 . Dans le cas 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 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 échouerai de toute manière , car cet attribut n 'existe pas . L ' ajout de cet attribut échouerai 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

 
st

 
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)

 
;

 
?





Les attributs multilingues , ( tels que 'Title') , peuvent être modifiés de deux manières : 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 deviendrai alors :

Exemple 3 . Modifier l' attribut de Titre (Title )

 
?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)

 
;

 
?



Pour supprimer l'entrée française 'Livres' et ajouter 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)

 
;

 
?



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 .

Si vous devez effacer tous les attributs avec un certains nom , vous devez passer une chaîne vide comme valeur .

Seuls les attributs ' Title' , 'Description ' et 'Keyword ' gère correctement le préfixe de langue . Pour les autres attributs qui ne portent pas de préfixe de language , le préfixe ' xx ' sera assigné .

L' attribut 'Name ' est un peu particuluer . 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 .

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



Retourne TRUE si aucune erreur ne survient , et FALSE sinon .