CMIS PHP: propiedades y versiones

cancel
Showing results for 
Search instead for 
Did you mean: 
madelarra
Member II

CMIS PHP: propiedades y versiones

Hola,

<strong>TL;DR</strong>

¿Cómo añado propiedades personalizadas a un documento creado a través de CMIS con PHP?
¿Cómo hago para que cuando suba documentos que ya existan en Alfresco no me de error sino que tome el documento como una nueva versión del archivo que ya se encuentra en Alfresco?

<strong>Versión extendida</strong>

Estoy utilizando el cliente Apache Chemistry CMIS PHP para subir una serie de archivos y metadatos asociados desde WordPress hasta Alfresco. Ese es el objetivo final, pero por lo pronto estoy tratando de subir archivos que tengo en mi disco local a Alfresco para comprobar que todo funciona antes de hacer la integración con WordPress.

Los archivos a subir han de pertenecer a un modelo de contenido propio, con sus propiedades propias. Este es el modelo:


<types>
    <type name="ej:documento">
        <title>Documento de CV</title>
        <parent>cm:content</parent>
       
        <properties>
            <property name="ej:nombre">
                <title>Nombre</title>
                <type>d:text</type>
            </property>
            <property name="ej:apellidos">
               <title>Apellidos</title>
                <type>d:text</type>
            </property>
            <property name="ej:direccion">
               <title>Dirección</title>
                <type>d:text</type>
            </property>
        </properties>
    </type>
</types>


El problema que tengo es que cuando intento crear un documento, no soy capaz de discernir cómo incrustarle las propiedades personalizadas (
ej:nombre
,
ej:apellidos
, etc.) y tampoco sé cómo hacer para que cuando intento subir un documento que ya existe lo tome como una nueva versión del documento ya existente.

Este es el código que estoy utilizando:

<php>
require_once ('cmis_repository_wrapper.php');
require_once ('cmis_service.php');

$repo_url = "http://127.0.0.1:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom";
$repo_username = "usuario";
$repo_password = "contraseña";

$client = new CMISService($repo_url, $repo_username, $repo_password);

$repo_folder = "/DirectorioEnAlfresco";
$source_folder = "DirectorioLocal/";
$source_files = array_diff(scandir("$source_folder", 1), array('..', '.'));
$myfolder = $client->getObjectByPath($repo_folder);

foreach($source_files as $file)
{
    try
    {
        $upload = $client->createDocumentFromSource($myfolder->id, $file, "$source_folder/$file", array('cmisSmiley SurprisedbjectTypeId'=>'D:ej:documento'));
    }
    catch(Exception $e)
    {
        echo "El archivo " . $file . " ya existe.<br>";
    }
}
</php>

Con el código anterior, los archivos que no estén en Alfresco se crean sin problemas, y con el
objectTypeId
con el tipo personalizado, es decir,
ej:documento
. Si trato de subir archivos que ya estén creados en Alfresco, me da error. Lo que quiero es que en vez de darme error, simplemente tome el documento como una nueva versión del ya existente.

Por otra parte, también quiero poder indicar los valores de las propiedades personalizadas (
ej:nombre
,
ej:apellidos
, etc.), y no logro hacerlo.

Gracias.
1 Reply
madelarra
Member II

Re: CMIS PHP: propiedades y versiones

Ya logré que me cogiera las propiedades al crear el documento con CMIS PHP. Este es el código que utilicé (por si alguien quiere hacer lo mismo y no sabe cómo):

<php>
foreach($source_files as $file)
{
    try
    {
        $upload = $client->createDocumentFromSource($myfolder->id, $file, "$source_folder/$file", array('cmisSmiley SurprisedbjectTypeId'=>'D:ej:documento'));
        // Esto es lo nuevo
        $client->updateProperties($upload->id,array(
            'ej:nombre' => 'María',
            'ej:apellidos' => 'Quintana Pérez',
            'ej:direccion' => 'Calle…'
            ));
    }
    catch(Exception $e)
    {
        echo "El archivo " . $file . " ya existe.<br>";
    }
}
</php>

Ahora solo me queda solucionar el tema de las versiones. ¿Alguien sabe cómo hacerlo con CMIS PHP a través de ATOM?

Gracias y saludos.