У меня есть один идентификатор объекта, и я хочу изменить его имя (например) с помощью библиотеки Apache Chemistry PHP.
Я пытаюсь использовать метод updateProperties, который предоставляет библиотека Chemistry … но я не вижу изменений. Что происходит?
$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: name я не могу?
Я сравнил запрос, отправленный cmislib (python) и клиентской вилкой PHP Apache Chemistry на 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>
Клиент Python отправляет новое имя в <atom:title>
тег. Я пытался удалить <atom:title>
а также <atom:summary>
теги и отправить текст через curl --upload-file
на свежем воздухе, и это работало правильно.
Так что я предполагаю, что Alfresco в первую очередь учитывает ценность <atom:title>
тег (при попытке обновить cmis:name
свойство) и возвращается к значению <cmis:value>
тег.
ИМХО, это можно считать ошибкой клиентской библиотеки php, которую не очень сложно исправить.
Эрни был на правильном пути.
public function renameObject($objectId, $name)
{
$properties = array(
'cmis:name' => $name
);
$options = array(
'title' => $name,
'summary' => $name,
);
return $this->repository->updateProperties($objectId, $properties, $options);
}
Это сработало для меня, на самом деле вам нужен только заголовок в массиве параметров, чтобы изменить имена