AnsweredAssumed Answered

CMIS PHP: propiedades y versiones

Question asked by madelarra on Apr 15, 2016
Latest reply on Apr 18, 2016 by madelarra
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('cmis:objectTypeId'=>'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.

Outcomes