Funciones de Hyperwave
PHP Manual

hw_Modifyobject

(PHP 4)

hw_ModifyobjectModifica un registro de objetos

Descripción

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

Este comando permite eliminar, añadir o modificar atributos individuales de un registro de objetos. El objeto es especificado por el ID de Objeto object_to_change. Para modificar un atributo se tendrá que eliminar el antigua y añadir el nuevo. hw_modifyobject() siempre eliminará los atributos antes de añadir atributos a menos que el valor del atributo a eliminar no sea una cadena o un array.

Las claves de ambos array son los nombres de los atributos. El valor de cada elemento del array puede ser un array, una cadena o cualquier otra cosa. Si es un array cada valor del atributo está construido mediante la clave de cada elemento más dos puntos y el valor de cada elemento. Si es una cadena se toma como el valor del atributo. Una cadena vacía resultará en la eliminación completa de ese atributo. Si el valor no es una cadena o un array pero es algo como, p.ej., un valor integer, no se realizará ninguna operación en absoluto sobre el atributo. Esto es necesario se se quiere añadir un atributo completamente nuevo, y no sólo un nuevo valor de un atributo existente. Si el array remove contiene una cadena vacía para ese atributo, se intentará eliminar el atributo, lo que fallará ya que no existe. La siguiente adición de un nuevo valor para ese atributo también fallará. Establecer el valor de un atributo a, p.ej., 0 no intentará eliminarlo y la adición funcionará.

Si le gustaría cambiar el atributo 'Name' con el valor actual 'books' dentro de 'articles' tendrá que crear dos array y llamar a hw_modifyobject().

Ejemplo #1 modificar un atributo

<?php
       
// $connect es una conexión existente al servirdor Hyperwave
       // $objid es el ID del objeto a modificar
       
$remarr = array("Name" => "books");
       
$addarr = array("Name" => "articles");
       
$hw_modifyobject($connect$objid$remarr$addarr);
?>
Para borrar/añadir un par nombre=valor al registro de objetos pase el array remove/add y establezca el parámetro last/third a un array vacío. Si el atributo es el primero con ese nombre a añadir, establezca el valor del atributo en el array remove a un valor integer.

Ejemplo #2 añadir un atributo completamente nuevo

<?php
       
// $connect es una conexión existente al servirdor Hyperwave
       // $objid es el ID del objeto a modificar
       
$remarr = array("Name" => 0);
       
$addarr = array("Name" => "articles");
       
$hw_modifyobject($connect$objid$remarr$addarr);
?>

Nota: Los atributos multilenguaje, p.ej., 'Title', pueden ser modificados de dos maneras. Proporcionando los valores de los atributos en su forma nativa 'lenguaje':'título' o proporcionando un array con elementos para cada lenguaje como se describió arriba. El ejemplo de arriba debería ser:

Ejemplo #3 modificar el atributo Title

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

Ejemplo #4 modificar el atributo Title

<?php
       $remarr 
= array("Title" => array("en" => "Books"));
       
$addarr = array("Title" => array("en" => "Articles""ge"=>"Artikel"));
       
$hw_modifyobject($connect$objid$remarr$addarr);
?>
Esto elimina el título inglés 'Books' y añade el título inglés 'Articles' y el título alemán 'Artikel'.

Ejemplo #5 removing attribute

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

Nota: Esto eliminará todos los atributos con el nombre 'Title' y añadirá un nuevo atributo 'Title'. Esto es útil si se quieren eliminar atributos recursivamente.

Nota: Si necesita borrar todos los atributos con un cierto nombre tendrá que pasar una cadena vacía al valor del atributo.

Nota: Sólo los atributos 'Title', 'Description' y 'Keyword' tratarán adecuadamente el prefijo de lenguaje. Si estos atributos no portan un prefijo de lenguaje, se asignará el prefijo 'xx'.

Nota: El atributo 'Name' es algo especial. En algunos casos no se puede eliminar completamente. Obtendrá un mensaje de error 'Change of base attribute' - 'Cambio de atributo base' (no está claro cuando sucede). Por lo tanto, siempre tendrá que añadir un nuevo Name primero y después eliminar el antiguo.

Nota: No se puede rodear esta función mediante llamadas a hw_getandlock() y hw_unlock(). hw_modifyobject() hace esto internamente.

Parámetros

connection

El identificador de conexión.

object_to_change

El objeto a cambiar.

remove

Un array de atributos a eliminar.

add

Un array de atributos a añadir.

mode

El último parámetro determina si la modificación se lleva a cabo recursivamente. 1 significa modificaión recursiva. Si alguno de los objetos no puede ser modificado lo saltará si avisar. hw_error() puede no indicar un error aunque algunos de los objetos no puedan ser modificados.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.


Funciones de Hyperwave
PHP Manual