2016-08-23 2 views
0

У меня есть одна объектная информация, и я хочу изменить его имя (например) с помощью библиотеки PHP Apache Chemistry PHP.Обновление cmis: имя объекта (документа) с Apache Chemistry Php Library

Я пытаюсь использовать метод updateProperties, который предоставляет библиотека химии ... но я не вижу изменений. Что происходит?

$test = new CMISService($repo_url, $repo_username, $repo_password); 
$id = 'ddb6eabd-a862-4e6b-9251-32b6e73300d7'; //existing objectId of the document that his name now is PRUEBAS. 

$obj = $test->updateProperties($id, array('cmis:name' => 'PRUEBAS_MODIFIED')); 

var_dump($cmis_repo->getObject($obj->id)); // I see that cmis:name continue PRUEBAS instead of PRUEBAS_MODIFIED ¿why? 

Могу ли я изменить название документа?

Однако я могу изменить описание cmis: description совершенно ... Почему cmis: имя я не могу?

+0

Никто не поможет мне? – aivdev

ответ

1

Я сравнил запрос, посланный cmislib (питон) и клиент вилы Apache Chemistry PHP на GitHub и обнаружил, что тот посылает следующий запрос атома:

<atom:title>PRUEBAS</atom:title> 
    <atom:summary>PRUEBAS</atom:summary> 
    <cmisra:object> 
    <cmis:properties> 
     <cmis:propertyString propertyDefinitionId="cmis:name"> 
     <cmis:value>PRUEBAS_MODIFIED</cmis:value> 
    </cmis:propertyString> 
    </cmis:properties> 
    </cmisra:object> 

клиент питона отправляет новое имя в <atom:title> бирка. Я попытался удалить теги <atom:title> и <atom:summary> и отправить текст через curl --upload-file в Alfresco, и это сработало правильно.

Так что я думаю, что Alfresco считает первое значение <atom:title> тега (при попытке обновить cmis:name свойства) и возвращается к значению <cmis:value> тега.

IMHO, это можно считать ошибкой библиотеки клиентов php, которую не должно быть очень сложно исправить.

+0

Спасибо ерни. Я пытаюсь работать с этой другой библиотекой https://github.com/dkd/php-cmis-client, которая отлично работает. – aivdev

1

erny был на правильном пути.

public function renameObject($objectId, $name) 
{ 
    $properties = array(
     'cmis:name' => $name 
    ); 
    $options = array(
     'title' => $name, 
     'summary' => $name, 
    ); 
    return $this->repository->updateProperties($objectId, $properties, $options); 
} 

Это работает для меня, на самом деле вам нужно только заголовок в в массиве параметров, чтобы изменить имена

Смежные вопросы