diff --git a/lib/api/ktcmis/util/CMISUtil.inc.php b/lib/api/ktcmis/util/CMISUtil.inc.php
index 5e26a41..c1df243 100644
--- a/lib/api/ktcmis/util/CMISUtil.inc.php
+++ b/lib/api/ktcmis/util/CMISUtil.inc.php
@@ -261,36 +261,45 @@ class CMISUtil {
// TODO additional properties to be returned
$object['properties']['BaseType'] = array('type' => $properties->getFieldType('BaseType'),
'value' => $properties->getValue('BaseType'));
- $object['properties']['ObjectId'] = array('type' => $properties->getFieldType('ObjectId'),
- 'value' => $properties->getValue('ObjectId'));
- $object['properties']['ObjectTypeId'] = array('type' => $properties->getFieldType('ObjectTypeId'),
- 'value' => $properties->getValue('ObjectTypeId'));
- $object['properties']['Name'] = array('type' => $properties->getFieldType('Name'),
+
+ $object['properties']['Name'] = array('type' => $properties->getFieldType('Name'),
'value' => $properties->getValue('Name'));
- // TODO ensure format of date is always correct
- $object['properties']['LastModificationDate'] = array('type' => $properties->getFieldType('LastModificationDate'),
- 'value' => $properties->getValue('LastModificationDate'));
- $object['properties']['Uri'] = array('type' => $properties->getFieldType('Uri'),
- 'value' => $properties->getValue('Uri'));
-
- $object['properties']['ParentId'] = array('type' => $properties->getFieldType('ParentId'),
+
+ $object['properties']['ParentId'] = array('type' => $properties->getFieldType('ParentId'),
'value' => CMISUtil::encodeObjectId('Folder',
$properties->getValue('ParentId')));
-
- $object['properties']['AllowedChildObjectTypeIds'] = array('type' => $properties->getFieldType('AllowedChildObjectTypeIds'),
- 'value' => $properties->getValue('AllowedChildObjectTypeIds'));
-
-// $object['properties']['AllowedChildObjectTypeIds'] = array('type' => $properties->getFieldType('AllowedChildObjectTypeIds'),
-// 'value' => $properties->getValue('AllowedChildObjectTypeIds'));
+
+ $object['properties']['Uri'] = array('type' => $properties->getFieldType('Uri'),
+ 'value' => $properties->getValue('Uri'));
+
+ // TODO ensure format of date is always correct
+ $object['properties']['LastModificationDate'] = array('type' => $properties->getFieldType('LastModificationDate'),
+ 'value' => $properties->getValue('LastModificationDate'));
$object['properties']['CreatedBy'] = array('type' => $properties->getFieldType('CreatedBy'),
'value' => $properties->getValue('CreatedBy'));
+
+ $object['properties']['AllowedChildObjectTypeIds'] = array('type' => $properties->getFieldType('AllowedChildObjectTypeIds'),
+ 'value' => $properties->getValue('AllowedChildObjectTypeIds'));
$object['properties']['CreationDate'] = array('type' => $properties->getFieldType('CreationDate'),
'value' => $properties->getValue('CreationDate'));
+ $object['properties']['LastModifiedBy'] = array('type' => $properties->getFieldType('LastModifiedBy'),
+ 'value' => $properties->getValue('LastModifiedBy'));
+
$object['properties']['ChangeToken'] = array('type' => $properties->getFieldType('ChangeToken'),
'value' => $properties->getValue('ChangeToken'));
+
+ $object['properties']['ObjectTypeId'] = array('type' => $properties->getFieldType('ObjectTypeId'),
+ 'value' => $properties->getValue('ObjectTypeId'));
+
+ $object['properties']['ObjectId'] = array('type' => $properties->getFieldType('ObjectId'),
+ 'value' => $properties->getValue('ObjectId'));
+
+
+
+
if (strtolower($properties->getValue('ObjectTypeId')) == 'document')
{
diff --git a/webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php b/webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
index 8349ff0..dfe65c7 100644
--- a/webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
+++ b/webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
@@ -268,13 +268,16 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
}
// $baseURI=NULL,$title=NULL,$link=NULL,$updated=NULL,$author=NULL,$id=NULL
- $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $folderName . ' ' . ucwords($feedType), null, null, null,
- 'urn:uuid:' . $folderId . '-' . $feedType);
+ $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $folderName . ' ' . ucwords($feedType), null, null, null, null);
+// 'urn:uuid:' . $folderId . '-' . $feedType);
// TODO dynamic?
$feedElement = $feed->newField('author');
$element = $feed->newField('name', 'System', $feedElement);
$feed->appendChild($feedElement);
+
+ // id
+ $feed->appendChild($feed->newElement('id', 'urn:uuid:' . $folderId . '-' . $feedType));
// TODO get actual most recent update time, only use current if no other available
$feed->appendChild($feed->newElement('updated', KT_cmis_atom_service_helper::formatDatestamp()));
@@ -287,6 +290,9 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
foreach($entries as $cmisEntry)
{
KT_cmis_atom_service_helper::createObjectEntry($feed, $cmisEntry, $folderName);
+
+ // after each entry, add app:edited tag
+ $feed->appendChild($feed->newElement('app:edited', KT_cmis_atom_service_helper::formatDatestamp()));
}
// false
@@ -494,8 +500,19 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
$checkedout = $NavigationService->getCheckedoutDocs($repositoryId);
//Create a new response feed
- $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, 'Checked out Documents', null, null, null, 'urn:uuid:checkedout');
+ $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, 'Checked out Documents');
+
+ // TODO dynamic?
+ $feedElement = $feed->newField('author');
+ $element = $feed->newField('name', 'admin', $feedElement);
+ $feed->appendChild($feedElement);
+
+ $feed->appendChild($feed->newElement('id', 'urn:uuid:checkedout'));
+ // TODO get actual most recent update time, only use current if no other available
+ $feed->appendChild($feed->newElement('updated', KT_cmis_atom_service_helper::formatDatestamp()));
+
+//'urn:uuid:checkedout'
foreach($checkedout as $document)
{
$entry = $feed->newEntry();
@@ -515,7 +532,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
}
$entry = null;
- $feed->newField('hasMoreItems', 'false', $entry, true);
+ $feed->newField('cmis:hasMoreItems', 'false', $entry, true);
//Expose the responseFeed
$this->responseFeed = $feed;
diff --git a/webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php b/webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
index cd4b6a8..d11fc6d 100644
--- a/webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
+++ b/webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
@@ -13,33 +13,18 @@ class KT_cmis_atom_service_helper {
*/
static public function createObjectEntry(&$feed, $cmisEntry, $parent, $path)
{
- // TODO next two lots of code (1 commented 1 not) must be replaced with something better
-// $feed->newId('urn:uuid:' . $cmisEntry['properties']['Name']['value'] . '-'
-// . strtolower($cmisEntry['properties']['ObjectTypeId']['value']), $entry);
-
-// echo $_SERVER['QUERY_STRING']."
\n";
-// preg_match('/^\/?[^\/]*\/folder\/(.*)\/[^\/]*\/?$/', trim($_SERVER['QUERY_STRING'], '/'), $matches);
-// $path = $matches[1];
-// $parent = preg_replace('/\/[^\/]*$/', '', $path);
-// // TODO fix path to work on old method, after fixing drupal module to not require extended path
-//
-// $path = '';
-
- $id = $cmisEntry['properties']['ObjectId']['value'];
+ // create entry
$entry = $feed->newEntry();
- $feed->newField('id', 'urn:uuid:' . $id, $entry);
-
+
// TODO dynamic actual creator name
$feedElement = $feed->newField('author');
$element = $feed->newField('name', 'admin', $feedElement);
$entry->appendChild($feedElement);
-
+
+ // content & id tags
+ $id = $cmisEntry['properties']['ObjectId']['value'];
$entry->appendChild($feed->newField('content', $id));
- // TODO proper date
- $entry->appendChild($feed->newField('published', self::formatDatestamp()));
- $entry->appendChild($feed->newField('updated', self::formatDatestamp()));
-
-// $entry->appendChild($feed->newField('summary', $cmisEntry['properties']['Name']['value']));
+ $feed->newField('id', 'urn:uuid:' . $id, $entry);
// links
/*
@@ -73,14 +58,6 @@ class KT_cmis_atom_service_helper {
$link->appendChild($feed->newAttr('rel','edit'));
$link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ObjectId']['value']));
$entry->appendChild($link);
-
- // TODO check parent link is correct, fix if needed
- // TODO leave out if at root folder
- $link = $feed->newElement('link');
- $link->appendChild($feed->newAttr('rel', 'parents'));
- $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/folder/'
- . $cmisEntry['properties']['ObjectId']['value'] . '/parent'));
- $entry->appendChild($link);
// according to spec this MUST be present, but spec says that links for function which are not supported
// do not need to be present, so unsure for the moment
@@ -90,6 +67,22 @@ class KT_cmis_atom_service_helper {
. $cmisEntry['properties']['ObjectId']['value'] . '/permissions'));
$entry->appendChild($link);
+ // according to spec this MUST be present, but spec says that links for function which are not supported
+ // do not need to be present, so unsure for the moment
+ $link = $feed->newElement('link');
+ $link->appendChild($feed->newAttr('rel', 'relationships'));
+ $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/'
+ . $cmisEntry['properties']['ObjectId']['value'] . '/rels'));
+ $entry->appendChild($link);
+
+ // TODO check parent link is correct, fix if needed
+ // TODO leave out if at root folder
+ $link = $feed->newElement('link');
+ $link->appendChild($feed->newAttr('rel', 'parents'));
+ $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/folder/'
+ . $cmisEntry['properties']['ObjectId']['value'] . '/parent'));
+ $entry->appendChild($link);
+
// Folder/Document specific links
if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'folder')
{
@@ -150,17 +143,7 @@ class KT_cmis_atom_service_helper {
// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
// $entry->appendChild($link);
// }
- }
-
-
- // according to spec this MUST be present, but spec says that links for function which are not supported
- // do not need to be present, so unsure for the moment
- $link = $feed->newElement('link');
- $link->appendChild($feed->newAttr('rel', 'relationships'));
- $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/'
- . $cmisEntry['properties']['ObjectId']['value'] . '/rels'));
- $entry->appendChild($link);
-
+ }
$link = $feed->newElement('link');
$link->appendChild($feed->newAttr('rel','type'));
@@ -180,8 +163,11 @@ class KT_cmis_atom_service_helper {
// $entry->appendChild($link);
// end links
+ // TODO proper date
+ $entry->appendChild($feed->newField('published', self::formatDatestamp()));
$entry->appendChild($feed->newElement('summary', $cmisEntry['properties']['Name']['value']));
$entry->appendChild($feed->newElement('title', $cmisEntry['properties']['Name']['value']));
+ $entry->appendChild($feed->newField('updated', self::formatDatestamp()));
// main CMIS entry
$objectElement = $feed->newElement('cmis:object');
diff --git a/webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php b/webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php
index e8006c4..2650a02 100644
--- a/webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php
+++ b/webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php
@@ -21,9 +21,8 @@ class KT_cmis_atom_responseFeed extends KT_atom_responseFeed {
protected function constructHeader()
{
$feed = $this->newElement('feed');
-// $feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2007/app'));
-// $feed->appendChild($this->newAttr('xmlns:atom','http://www.w3.org/2005/Atom'));
$feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2005/Atom'));
+ $feed->appendChild($this->newAttr('xmlns:app','http://www.w3.org/2007/app'));
$feed->appendChild($this->newAttr('xmlns:cmis','http://docs.oasis-open.org/ns/cmis/core/200901'));
$this->feed = &$feed;