Descripción
int
hw_modifyobject
( int conexión, int objeto_a_cambiar, array eliminar, array
añadir, int modo)
Este
comando
permite
eliminar
,
añadir
,
o
modificar
atributos
individuales
de
un
registro
de
objeto
.
El
objeto
está
especificado
por
el
ID
de
objeto
objeto_a_cambiar
.
La
primera
tabla
,
eliminar
,
es
la
lista
de
atributos
a
eliminar
.
La
segunda
tabla
,
añadir
,
es
la
lista
de
atributos
a
añadir
.
Para
modificar
un
atributo
,
hay
que
borrar
el
antiguo
y
añadir
uno
nuevo
.
hw_modifyobject(
)
siempre
eliminará
los
atributos
antes
de
añadir
los
nuevos
excepto
si
el
valor
del
atributo
a
eliminar
no
es
una
cadena
o
una
tabla
.
El
último
parámetro
determina
si
la
modificación
se
realiza
de
manera
recursiva
.
1
quiere
decir
que
sea
recursiva
.
Si
alguno
de
los
objetos
no
se
puede
modificar
,
será
ignorado
sin
avisar
.
Incluso
hw_error(
)
podría
no
indicar
un
error
aunque
alguno
de
los
objetos
no
pueda
ser
modificado
.
Las
claves
de
ambas
tablas
son
los
nombres
de
los
atributos
.
El
valor
de
cada
elemento
de
la
tabla
puede
ser
una
tabla
,
una
cadena
o
cualquier
otra
cosa
.
Si
es
una
tabla
,
cada
valor
de
atributo
se
construye
como
la
clave
de
cada
elemento
más
dos
puntos
y
el
valor
de
cada
elemento
.
Si
es
una
cadena
se
toma
como
valor
del
atributo
.
Una
cadena
vacía
producirá
la
supresión
completa
del
atributo
.
Si
el
valor
no
es
ni
cadena
ni
tabla
,
sino
otra
cosa
,
p
.
ej
.
un
entero
,
no
se
realizará
operación
alguna
en
el
atributo
.
Esto
es
necesario
se
desea
añadir
un
atributo
completamente
nuevo
,
no
solamente
un
nuevo
valor
para
un
atributo
existente
.
Si
la
tabla
eliminar
contuviera
una
cadena
vacía
para
dicho
atributo
,
este
se
intentaría
suprimir
,
lo
que
fallaría
porque
este
no
existe
.
La
siguiente
adición
de
un
nuevo
valor
para
dicho
atributo
también
fallará
.
Fijando
el
valor
para
dicho
atributo
p
.
ej
.
a
0
hará
que
ni
siquiera
se
intente
eliminar
,
pero
funcionará
la
adición
del
mismo
.
Si
desea
cambiar
el
atributo
'
Nombre
'
con
el
valor
actual
'libros
'
por
el
de
'artículos
'
deberá
crear
dos
tablas
y
llamar
a
hw_modifyobject(
)
.
Ejemplo
1
.
modificando
un
atributo
/
/
$conexion
es
una
conexión
con
el
servidor
Hyperwave
/
/
$idobj
es
la
ID
del
objeto
a
modificar
$tablasupr
=
array(
"Nombre
"
=
"libros")
;
$tablaanad
=
array("Nombre
"
=
"artículos")
;
$hw_modifyobject($conexion
,
$idobj
,
$tablasupr
,
$tablaanad)
;
|
|
Para borrar/añadir un par nombre=valor de/a el registro de
objeto, simplemente pase la tabla eliminar/añadir y fije el
último/tercer parámetro a tabla vacía. Si el atributo es el
primero con dicho nombre que se añade, fije el valor del atributo
en la tabla eliminar a un valor entero.
Ejemplo
2
.
añadiendo
un
atributo
completamente
nuevo
/
/
$conexion
es
una
conexión
con
el
servidor
Hyperwave
/
/
$idobj
es
la
ID
del
objeto
a
modificar
$tablasupr
=
array(
"Nombre
"
=
0)
;
$tablaanad
=
array("Nombre
"
=
"artículos")
;
$hw_modifyobject($conexion
,
$idobj
,
$tablasupr
,
$tablaanad)
;
|
|
Nota
:
Los
atributos
plurilingües
,
p
.
ej
.
'
Título
'
,
se
pueden
modificar
de
dos
maneras
.
O
bien
proporcionando
los
valores
de
los
atributos
en
su
forma
nativa
'
lenguaje'
:'título
'
,
bien
proporcionando
una
tabla
con
los
elementos
para
cada
lenguaje
según
se
describe
más
arriba
.
El
ejemplo
anterior
podría
quedar
entonces
:
Ejemplo
3
.
modificando
el
atributo
Título
$tablasupr
=
array(
"Título
"
=
"es:Libros")
;
$tablaanad
=
array("Título
"
=
"es:Artículos")
;
$hw_modifyobject($conexion
,
$idobj
,
$tablasupr
,
$tablaanad)
;
|
|
o
Ejemplo
4
.
modificando
el
atributo
Título
$tablasupr
=
array(
"Título
"
=
array("es
"
=
"Libros"))
;
$tablaanad
=
array("Título
"
=
array("es
"
=
"Artículos"
,
"ge"=
"Artikel"))
;
$hw_modifyobject($conexion
,
$idobj
,
$tablasupr
,
$tablaanad)
;
|
|
Esto elimina el título español 'Libros' y añade el título español
'Artículos' y el título alemán 'Artikel'.
Ejemplo
5
.
eliminando
atributos
$tablasupr
=
array(
"Título
"
=
"")
;
$tablaanad
=
array("Tñitulo
"
=
"es:Artículos")
;
$hw_modifyobject($conexion
,
$idobj
,
$tablasupr
,
$tablaanad)
;
|
|
Nota
:
Esto
eliminará
todos
los
atributos
con
el
nombre
'
Título
'
y
añadirá
un
nuevo
atributo
'Título
'
.
Esto
es
útil
cuando
se
desea
eliminar
atributos
de
forma
recursiva
.
Nota
:
Si
necesita
eliminar
todos
los
atributos
con
un
cierto
nombre
tendrá
que
pasar
una
cadena
vacía
como
el
valor
del
atributo
.
Nota
:
Sólo
los
atributos
'
Title'
,
'Description
'
y
'Keyword
'
(así
,
en
inglés
)
manejarán
de
forma
apropiada
el
prefijo
de
idioma
.
Si
estos
atributos
no
llevaran
prefijo
de
idioma
,
se
les
asignariá
el
prefijo
'
xx
'
.
Nota
:
El
atributo
'
Name
'
es
bastante
especial
.
En
algunos
casos
no
puede
ser
completamente
eliminado
.
Obtendrá
un
mensaje
de
error
'
Change
of
base
attribute
'
('Cambio
de
atributo
base'
,
no
está
muy
claro
cuando
ocurre
)
.
Por
tanto
,
tendrá
siempre
que
añadir
un
nuevo
atributo
Name
primero
y
luego
eliminar
el
anterior
.
Devuelve
TRUE
si
no
hay
error
o
FALSE
en
caso
contrario
.