Commit d71619f9bad7b8937ebaec51d4d87a1f76d10c52

Authored by Paul Barrett
1 parent be240047

Fix CMIS Spaces access and some of the folder listing problems

Story ID:2295472. Update KT CMIS implementation to 1.0 compliance

Committed by: Paul Barrett

Reviewed: Charl Mert
lib/api/ktcmis/classes/AbstractEnum.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Base class for enumerators
  5 + */
  6 +
  7 +// TODO enable creation of enum instances on the fly - this will most likely be done in an extending class
  8 +
  9 +abstract class AbstractEnum {
  10 +
  11 + static private $values;
  12 + static private $value;
  13 + static private $name;
  14 +
  15 + /**
  16 + * Sets the value of the enumerator
  17 + *
  18 + * @param unknown_type $value
  19 + * @throws invalidArgumentException if the given value does not match one of the allowed values
  20 + */
  21 + static protected function set($value)
  22 + {
  23 + if (!in_array($value, self::$values)) {
  24 + throw new InvalidArgumentException("Unable to set value for $name: Illegal input ($value)");
  25 + }
  26 +
  27 + self::$value = $value;
  28 + }
  29 +
  30 + /**
  31 + * Returns the currently set value, or null if unset
  32 + *
  33 + */
  34 + static protected function get()
  35 + {
  36 + return self::$value;
  37 + }
  38 +
  39 +}
  40 +
  41 +?>
0 \ No newline at end of file 42 \ No newline at end of file
lib/api/ktcmis/classes/CMISDocumentPropertyCollection.inc.php
@@ -51,35 +51,35 @@ require_once(CMIS_DIR . &#39;/classes/CMISPropertyCollection.inc.php&#39;); @@ -51,35 +51,35 @@ require_once(CMIS_DIR . &#39;/classes/CMISPropertyCollection.inc.php&#39;);
51 */ 51 */
52 class CMISDocumentPropertyCollection extends CMISPropertyCollection { 52 class CMISDocumentPropertyCollection extends CMISPropertyCollection {
53 53
54 - static $Name;  
55 - static $IsImmutable;  
56 - static $IsLatestVersion;  
57 - static $IsMajorVersion;  
58 - static $IsLatestMajorVersion;  
59 - static $VersionLabel;  
60 - static $VersionSeriesId;  
61 - static $IsVersionSeriesCheckedOut;  
62 - static $VersionSeriesCheckedOutBy;  
63 - static $VersionSeriesCheckedOutId;  
64 - static $CheckinComment;  
65 - static $ContentStreamLength;  
66 - static $ContentStreamMimeType;  
67 - static $ContentStreamFilename;  
68 - static $ContentStreamUri; 54 + static $name;
  55 + static $isImmutable;
  56 + static $isLatestVersion;
  57 + static $isMajorVersion;
  58 + static $isLatestMajorVersion;
  59 + static $versionLabel;
  60 + static $versionSeriesId;
  61 + static $isVersionSeriesCheckedOut;
  62 + static $versionSeriesCheckedOutBy;
  63 + static $versionSeriesCheckedOutId;
  64 + static $checkinComment;
  65 + static $contentStreamLength;
  66 + static $contentStreamMimeType;
  67 + static $contentStreamFilename;
  68 + static $contentStreamUri;
69 69
70 function __construct() 70 function __construct()
71 { 71 {
72 parent::__construct(); 72 parent::__construct();
73 - self::$propertyTypes = array_merge(self::$propertyTypes, array('ContentStreamAllowed' => 'propertyString',  
74 - 'ContentStreamLength' => 'propertyInteger',  
75 - 'ContentStreamMimeType' => 'propertyString',  
76 - 'ContentStreamFilename' => 'propertyString',  
77 - 'ContentStreamUri' => 'propertyUri',  
78 - 'IsLatestVersion' => 'propertyBoolean',  
79 - 'IsVersionSeriesCheckedOut' => 'propertyBoolean',  
80 - 'VersionSeriesCheckedOutBy' => 'propertyString',  
81 - 'VersionSeriesCheckedOutId' => 'propertyId',  
82 - 'VersionLabel' => 'propertyString')); 73 + self::$propertyTypes = array_merge(self::$propertyTypes, array('contentStreamAllowed' => 'propertyString',
  74 + 'contentStreamLength' => 'propertyInteger',
  75 + 'contentStreamMimeType' => 'propertyString',
  76 + 'contentStreamFilename' => 'propertyString',
  77 + 'contentStreamUri' => 'propertyUri',
  78 + 'isLatestVersion' => 'propertyBoolean',
  79 + 'isVersionSeriesCheckedOut' => 'propertyBoolean',
  80 + 'versionSeriesCheckedOutBy' => 'propertyString',
  81 + 'versionSeriesCheckedOutId' => 'propertyId',
  82 + 'versionLabel' => 'propertyString'));
83 } 83 }
84 84
85 } 85 }
lib/api/ktcmis/classes/CMISFolderPropertyCollection.inc.php
@@ -51,9 +51,9 @@ require_once(CMIS_DIR . &#39;/classes/CMISPropertyCollection.inc.php&#39;); @@ -51,9 +51,9 @@ require_once(CMIS_DIR . &#39;/classes/CMISPropertyCollection.inc.php&#39;);
51 */ 51 */
52 class CMISFolderPropertyCollection extends CMISPropertyCollection { 52 class CMISFolderPropertyCollection extends CMISPropertyCollection {
53 53
54 - static $Name;  
55 - static $ParentId;  
56 - static $AllowedChildObjectTypeIds; 54 + static $name;
  55 + static $parentId;
  56 + static $allowedChildObjectTypeIds;
57 57
58 function __construct() 58 function __construct()
59 { 59 {
lib/api/ktcmis/classes/CMISPropertyCollection.inc.php
@@ -49,35 +49,35 @@ @@ -49,35 +49,35 @@
49 */ 49 */
50 abstract class CMISPropertyCollection { 50 abstract class CMISPropertyCollection {
51 51
52 - static $ObjectId;  
53 - static $BaseType;  
54 - static $Uri;  
55 - static $ObjectTypeId;  
56 - static $CreatedBy;  
57 - static $CreationDate;  
58 - static $LastModifiedBy;  
59 - static $LastModificationDate;  
60 - static $ChangeToken; 52 + static $objectId;
  53 + static $baseTypeId;
  54 + static $uri;
  55 + static $objectTypeId;
  56 + static $createdBy;
  57 + static $creationDate;
  58 + static $lastModifiedBy;
  59 + static $lastModificationDate;
  60 + static $changeToken;
61 // TODO these definitions belong in their own classe definition (see property type definions,) but here will do for now 61 // TODO these definitions belong in their own classe definition (see property type definions,) but here will do for now
62 static public $propertyTypes; 62 static public $propertyTypes;
63 63
64 function __construct() 64 function __construct()
65 { 65 {
66 - self::$propertyTypes = array('ObjectId' => 'propertyId',  
67 - 'Author' => 'propertyString',  
68 - 'BaseType' => 'propertyString',  
69 - 'ObjectTypeId' => 'propertyId',  
70 - 'CreatedBy' => 'propertyString',  
71 - 'CreationDate' => 'propertyDateTime',  
72 - 'LastModifiedBy' => 'propertyString',  
73 - 'LastModificationDate' => 'propertyDateTime',  
74 - 'Name' => 'propertyString',  
75 - 'Uri' => 'propertyUri',  
76 - 'AllowedChildObjectTypeIds' => 'propertyId',  
77 - 'CreatedBy' => 'propertyString',  
78 - 'CreationDate' => 'propertyDateTime',  
79 - 'ChangeToken' => 'propertyString',  
80 - 'ParentId' => 'propertyId'); 66 + self::$propertyTypes = array('objectId' => 'propertyId',
  67 + 'author' => 'propertyString',
  68 + 'baseTypeId' => 'propertyId',
  69 + 'objectTypeId' => 'propertyId',
  70 + 'createdBy' => 'propertyString',
  71 + 'creationDate' => 'propertyDateTime',
  72 + 'lastModifiedBy' => 'propertyString',
  73 + 'lastModificationDate' => 'propertyDateTime',
  74 + 'name' => 'propertyString',
  75 + 'uri' => 'propertyUri',
  76 + 'allowedChildObjectTypeIds' => 'propertyId',
  77 + 'createdBy' => 'propertyString',
  78 + 'creationDate' => 'propertyDateTime',
  79 + 'changeToken' => 'propertyString',
  80 + 'parentId' => 'propertyId');
81 } 81 }
82 82
83 /** 83 /**
lib/api/ktcmis/classes/CMISRepository.inc.php
@@ -84,6 +84,7 @@ class CMISRepository { @@ -84,6 +84,7 @@ class CMISRepository {
84 foreach($xml->repository as $repository) 84 foreach($xml->repository as $repository)
85 { 85 {
86 $currentRepo = $repository->repositoryInfo[0]->repositoryId; 86 $currentRepo = $repository->repositoryInfo[0]->repositoryId;
  87 + // TODO this is no longer correct - is an object of SimpleXMLElement and not a string or int
87 if ((int)$currentRepo == $this->repositoryId) 88 if ((int)$currentRepo == $this->repositoryId)
88 { 89 {
89 $config = $repository; 90 $config = $repository;
lib/api/ktcmis/enums/EnumCapabilityACL.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityACL
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityACL extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'discover', 'manage');
  15 + static private $name = 'capabilityACL';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/enums/EnumCapabilityChanges.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityChanges
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityChanges extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'objectidsonly', 'properties', 'all');
  15 + static private $name = 'capabilityChanges';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/enums/EnumCapabilityContentStreamUpdatability.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityContentStreamUpdatability
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityContentStreamUpdatability extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'anytime', 'pwconly');
  15 + static private $name = 'capabilityContentStreamUpdatability';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/enums/EnumCapabilityJoin.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityJoin
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityJoin extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'inneronly', 'innerandouter');
  15 + static private $name = 'capabilityJoin';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/enums/EnumCapabilityQuery.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityQuery
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityQuery extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'metadataonly', 'fulltextonly', 'bothseparate', 'bothcombined');
  15 + static private $name = 'capabilityQuery';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/enums/EnumCapabilityRenditions.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +/**
  4 + * Enumaerator class for capabilityRenditions
  5 + */
  6 +
  7 +require_once(realpath(dirname(__FILE__) . '/../../../../config/dmsDefaults.php'));
  8 +
  9 +define ('CMIS_DIR', KT_LIB_DIR . '/api/ktcmis');
  10 +require_once(CMIS_DIR . '/classes/AbstractEnum.inc.php');
  11 +
  12 +class EnumCapabilityRenditions extends AbstractEnum {
  13 +
  14 + static private $values = array('none', 'objectidsonly', 'properties', 'all');
  15 + static private $name = 'capabilityRenditions';
  16 +}
  17 +
  18 +?>
0 \ No newline at end of file 19 \ No newline at end of file
lib/api/ktcmis/objecttypes/CMISDocumentObject.inc.php
@@ -74,9 +74,9 @@ class CMISDocumentObject extends CMISObject { @@ -74,9 +74,9 @@ class CMISDocumentObject extends CMISObject {
74 $this->creatable = ''; // <repository-specific> 74 $this->creatable = ''; // <repository-specific>
75 /* 75 /*
76 * fileable SHOULD be set as follows: 76 * fileable SHOULD be set as follows:
77 - * If the repository does NOT support the “un-filing†capability: 77 + * If the repository does NOT support the “un-filing� capability:
78 * TRUE 78 * TRUE
79 - * If the repository does support the “un-filing†capability: 79 + * If the repository does support the “un-filing� capability:
80 * <repository-specific>, but SHOULD be TRUE 80 * <repository-specific>, but SHOULD be TRUE
81 */ 81 */
82 $this->fileable = true; // TODO implement check for whether un-filing is supported 82 $this->fileable = true; // TODO implement check for whether un-filing is supported
@@ -119,7 +119,7 @@ class CMISDocumentObject extends CMISObject { @@ -119,7 +119,7 @@ class CMISDocumentObject extends CMISObject {
119 119
120 $objectProperties = $object->get_detail(); 120 $objectProperties = $object->get_detail();
121 121
122 - $this->_setPropertyInternal('ObjectId', CMISUtil::encodeObjectId($this->typeId, $objectProperties['document_id'])); 122 + $this->_setPropertyInternal('objectId', CMISUtil::encodeObjectId($this->typeId, $objectProperties['document_id']));
123 // prevent doubled '/' chars 123 // prevent doubled '/' chars
124 $uri = preg_replace_callback('/([^:]\/)\//', 124 $uri = preg_replace_callback('/([^:]\/)\//',
125 create_function('$matches', 'return $matches[1];'), 125 create_function('$matches', 'return $matches[1];'),
@@ -128,33 +128,33 @@ class CMISDocumentObject extends CMISObject { @@ -128,33 +128,33 @@ class CMISDocumentObject extends CMISObject {
128 . $objectProperties['document_id']); 128 . $objectProperties['document_id']);
129 // NOTE what about instead creating a downloadable version with appropriate link? see ktapi::download_document 129 // NOTE what about instead creating a downloadable version with appropriate link? see ktapi::download_document
130 // also ktapidocument::get_download_url 130 // also ktapidocument::get_download_url
131 -// $this->_setPropertyInternal('Uri', $uri);  
132 - $this->_setPropertyInternal('Uri', ''); 131 +// $this->_setPropertyInternal('uri', $uri);
  132 + $this->_setPropertyInternal('uri', '');
133 // TODO what is this? Assuming it is the object type id, and not OUR document type? 133 // TODO what is this? Assuming it is the object type id, and not OUR document type?
134 - $this->_setPropertyInternal('ObjectTypeId', $this->getAttribute('typeId')); 134 + $this->_setPropertyInternal('objectTypeId', 'cmis:' . strtolower($this->getAttribute('typeId')));
135 // Needed to distinguish type 135 // Needed to distinguish type
136 - $this->_setPropertyInternal('BaseType', strtolower($this->getAttribute('typeId')));  
137 - $this->_setPropertyInternal('CreatedBy', $objectProperties['created_by']);  
138 - $this->_setPropertyInternal('CreationDate', $objectProperties['created_date']);  
139 - $this->_setPropertyInternal('LastModifiedBy', $objectProperties['modified_by']);  
140 - $this->_setPropertyInternal('LastModificationDate', $objectProperties['modified_date']);  
141 - $this->_setPropertyInternal('ChangeToken', null);  
142 - $this->_setPropertyInternal('Name', $objectProperties['title']);  
143 - $this->_setPropertyInternal('ParentId', $objectProperties['folder_id']);  
144 - $this->_setPropertyInternal('IsImmutable', $objectProperties['is_immutable']); 136 + $this->_setPropertyInternal('baseTypeId', 'cmis:' . strtolower($this->getAttribute('typeId')));
  137 + $this->_setPropertyInternal('createdBy', $objectProperties['created_by']);
  138 + $this->_setPropertyInternal('creationDate', $objectProperties['created_date']);
  139 + $this->_setPropertyInternal('lastModifiedBy', $objectProperties['modified_by']);
  140 + $this->_setPropertyInternal('lastModificationDate', $objectProperties['modified_date']);
  141 + $this->_setPropertyInternal('changeToken', null);
  142 + $this->_setPropertyInternal('name', $objectProperties['title']);
  143 + $this->_setPropertyInternal('parentId', CMISUtil::encodeObjectId(FOLDER, $objectProperties['folder_id']));
  144 + $this->_setPropertyInternal('isImmutable', $objectProperties['is_immutable']);
145 // NOTE if access to older versions is allowed, this will need to be checked, else just set to yes 145 // NOTE if access to older versions is allowed, this will need to be checked, else just set to yes
146 // see ktapi::get_document_version_history 146 // see ktapi::get_document_version_history
147 // NOTE see ktapi::is_latest_version 147 // NOTE see ktapi::is_latest_version
148 - $this->_setPropertyInternal('IsLatestVersion', true);  
149 - $this->_setPropertyInternal('IsMajorVersion', (strstr($objectProperties['version'], '.') ? false : true)); 148 + $this->_setPropertyInternal('isLatestVersion', true);
  149 + $this->_setPropertyInternal('isMajorVersion', (strstr($objectProperties['version'], '.') ? false : true));
150 // NOTE if access to older versions is allowed, this will need to be checked, else just set to yes 150 // NOTE if access to older versions is allowed, this will need to be checked, else just set to yes
151 // see ktapi::get_document_version_history 151 // see ktapi::get_document_version_history
152 // NOTE see ktapi::is_latest_version 152 // NOTE see ktapi::is_latest_version
153 - $this->_setPropertyInternal('IsLatestMajorVersion', true);  
154 - $this->_setPropertyInternal('VersionLabel', $objectProperties['version']); 153 + $this->_setPropertyInternal('isLatestMajorVersion', true);
  154 + $this->_setPropertyInternal('versionLabel', $objectProperties['version']);
155 // VersionSeriesId should be the id of the latest version 155 // VersionSeriesId should be the id of the latest version
156 // NOTE this may change in the future but is easiest for the current implementation 156 // NOTE this may change in the future but is easiest for the current implementation
157 - $this->_setPropertyInternal('VersionSeriesId', $objectProperties['version']); 157 + $this->_setPropertyInternal('versionSeriesId', $objectProperties['version']);
158 if ($objectProperties['checked_out_by'] != 'n/a') 158 if ($objectProperties['checked_out_by'] != 'n/a')
159 { 159 {
160 $checkedOut = true; 160 $checkedOut = true;
@@ -168,18 +168,18 @@ class CMISDocumentObject extends CMISObject { @@ -168,18 +168,18 @@ class CMISDocumentObject extends CMISObject {
168 $checkedOutBy = null; 168 $checkedOutBy = null;
169 $checkedOutId = null; 169 $checkedOutId = null;
170 } 170 }
171 - $this->_setPropertyInternal('IsVersionSeriesCheckedOut', $checkedOut);  
172 - $this->_setPropertyInternal('VersionSeriesCheckedOutBy', $checkedOutBy); 171 + $this->_setPropertyInternal('isVersionSeriesCheckedOut', $checkedOut);
  172 + $this->_setPropertyInternal('versionSeriesCheckedOutBy', $checkedOutBy);
173 // TODO presumably this is the ID of the Private Working Copy created on checkout? 173 // TODO presumably this is the ID of the Private Working Copy created on checkout?
174 // will find out more when we do checkout/checkin 174 // will find out more when we do checkout/checkin
175 - $this->_setPropertyInternal('VersionSeriesCheckedOutId', $checkedOutId); 175 + $this->_setPropertyInternal('versionSeriesCheckedOutId', $checkedOutId);
176 // TODO currently not returned by KnowledgeTree? 176 // TODO currently not returned by KnowledgeTree?
177 - $this->_setPropertyInternal('CheckinComment', null);  
178 - $this->_setPropertyInternal('ContentStreamLength', $objectProperties['filesize']);  
179 - $this->_setPropertyInternal('ContentStreamMimeType', $objectProperties['mime_type']);  
180 - $this->_setPropertyInternal('ContentStreamFilename', $objectProperties['filename']);  
181 - $this->_setPropertyInternal('ContentStreamUri', $this->getProperty('ObjectId') . '/' . $objectProperties['filename']);  
182 - $this->_setPropertyInternal('Author', $objectProperties['created_by']); 177 + $this->_setPropertyInternal('checkinComment', null);
  178 + $this->_setPropertyInternal('contentStreamLength', $objectProperties['filesize']);
  179 + $this->_setPropertyInternal('contentStreamMimeType', $objectProperties['mime_type']);
  180 + $this->_setPropertyInternal('contentStreamFilename', $objectProperties['filename']);
  181 + $this->_setPropertyInternal('contentStreamUri', $this->getProperty('objectId') . '/' . $objectProperties['filename']);
  182 + $this->_setPropertyInternal('author', $objectProperties['created_by']);
183 } 183 }
184 184
185 } 185 }
lib/api/ktcmis/objecttypes/CMISFolderObject.inc.php
@@ -98,7 +98,7 @@ class CMISFolderObject extends CMISObject { @@ -98,7 +98,7 @@ class CMISFolderObject extends CMISObject {
98 98
99 $objectProperties = $object->get_detail(); 99 $objectProperties = $object->get_detail();
100 100
101 - $this->_setPropertyInternal('ObjectId', CMISUtil::encodeObjectId($this->typeId, $objectProperties['id'])); 101 + $this->_setPropertyInternal('objectId', CMISUtil::encodeObjectId($this->typeId, $objectProperties['id']));
102 // prevent doubled '/' chars 102 // prevent doubled '/' chars
103 $uri = preg_replace_callback('/([^:]\/)\//', 103 $uri = preg_replace_callback('/([^:]\/)\//',
104 create_function('$matches', 'return $matches[1];'), 104 create_function('$matches', 'return $matches[1];'),
@@ -106,24 +106,24 @@ class CMISFolderObject extends CMISObject { @@ -106,24 +106,24 @@ class CMISFolderObject extends CMISObject {
106 . '/browse.php?fFolderId=' 106 . '/browse.php?fFolderId='
107 . $objectProperties['id']); 107 . $objectProperties['id']);
108 // TODO this url is probably incorrect...needs to be checked 108 // TODO this url is probably incorrect...needs to be checked
109 -// $this->_setPropertyInternal('Uri', $uri);  
110 - $this->_setPropertyInternal('Uri', ''); 109 +// $this->_setPropertyInternal('uri', $uri);
  110 + $this->_setPropertyInternal('uri', '');
111 // TODO what is this? Assuming it is the object type id, and not OUR document type? 111 // TODO what is this? Assuming it is the object type id, and not OUR document type?
112 - $this->_setPropertyInternal('ObjectTypeId', $this->getAttribute('typeId')); 112 + $this->_setPropertyInternal('objectTypeId', 'cmis:' . strtolower($this->getAttribute('typeId')));
113 // Needed to distinguish type 113 // Needed to distinguish type
114 - $this->_setPropertyInternal('BaseType', strtolower($this->getAttribute('typeId')));  
115 - $this->_setPropertyInternal('CreatedBy', $objectProperties['created_by']); 114 + $this->_setPropertyInternal('baseTypeId', 'cmis:' . strtolower($this->getAttribute('typeId')));
  115 + $this->_setPropertyInternal('createdBy', $objectProperties['created_by']);
116 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by 116 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by
117 - $this->_setPropertyInternal('CreationDate', $objectProperties['created_date']); 117 + $this->_setPropertyInternal('creationDate', $objectProperties['created_date']);
118 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by 118 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by
119 - $this->_setPropertyInternal('LastModifiedBy', $objectProperties['modified_by']); 119 + $this->_setPropertyInternal('lastModifiedBy', $objectProperties['modified_by']);
120 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by 120 // TODO cannot currently retrieve via ktapi or regular folder code - add as with created by
121 - $this->_setPropertyInternal('LastModificationDate', $objectProperties['modified_date']);  
122 - $this->_setPropertyInternal('ChangeToken', null);  
123 - $this->_setPropertyInternal('Name', $objectProperties['folder_name']);  
124 - $this->_setPropertyInternal('ParentId', $objectProperties['parent_id']);  
125 - $this->_setPropertyInternal('AllowedChildObjectTypeIds', array('Document', 'Folder'));  
126 - $this->_setPropertyInternal('Author', $objectProperties['created_by']); 121 + $this->_setPropertyInternal('lastModificationDate', $objectProperties['modified_date']);
  122 + $this->_setPropertyInternal('changeToken', null);
  123 + $this->_setPropertyInternal('name', $objectProperties['folder_name']);
  124 + $this->_setPropertyInternal('parentId', CMISUtil::encodeObjectId(FOLDER, $objectProperties['parent_id']));
  125 + $this->_setPropertyInternal('allowedChildObjectTypeIds', array('Document', 'Folder'));
  126 + $this->_setPropertyInternal('author', $objectProperties['created_by']);
127 } 127 }
128 128
129 } 129 }
lib/api/ktcmis/services/CMISNavigationService.inc.php
@@ -276,7 +276,7 @@ class CMISNavigationService { @@ -276,7 +276,7 @@ class CMISNavigationService {
276 { 276 {
277 $CMISDocument = new CMISDocumentObject($document->getId(), $this->ktapi); 277 $CMISDocument = new CMISDocumentObject($document->getId(), $this->ktapi);
278 // set version label property - possibly belongs in document class 278 // set version label property - possibly belongs in document class
279 - $CMISDocument->setProperty('VersionLabel', $CMISDocument->getProperty('VersionSeriesCheckedOutId')); 279 + $CMISDocument->setProperty('versionLabel', $CMISDocument->getProperty('versionSeriesCheckedOutId'));
280 $checkedout[] = $CMISDocument->getProperties(); 280 $checkedout[] = $CMISDocument->getProperties();
281 } 281 }
282 282
lib/api/ktcmis/services/CMISObjectService.inc.php
@@ -88,7 +88,7 @@ class CMISObjectService { @@ -88,7 +88,7 @@ class CMISObjectService {
88 88
89 // if parent folder is not allowed to hold this type, throw exception 89 // if parent folder is not allowed to hold this type, throw exception
90 $CMISFolder = new CMISFolderObject($folderId, $this->ktapi); 90 $CMISFolder = new CMISFolderObject($folderId, $this->ktapi);
91 - $allowed = $CMISFolder->getProperty('AllowedChildObjectTypeIds'); 91 + $allowed = $CMISFolder->getProperty('allowedChildObjectTypeIds');
92 $typeAllowed = false; 92 $typeAllowed = false;
93 93
94 if (is_array($allowed)) 94 if (is_array($allowed))
@@ -306,7 +306,7 @@ class CMISObjectService { @@ -306,7 +306,7 @@ class CMISObjectService {
306 306
307 // if parent folder is not allowed to hold this type, throw exception 307 // if parent folder is not allowed to hold this type, throw exception
308 $CMISFolder = new CMISFolderObject($folderId, $this->ktapi); 308 $CMISFolder = new CMISFolderObject($folderId, $this->ktapi);
309 - $allowed = $CMISFolder->getProperty('AllowedChildObjectTypeIds'); 309 + $allowed = $CMISFolder->getProperty('allowedChildObjectTypeIds');
310 if (!is_array($allowed) || !in_array($typeId, $allowed)) { 310 if (!is_array($allowed) || !in_array($typeId, $allowed)) {
311 throw new ConstraintViolationException('Parent folder may not hold objects of this type (' . $typeId . ')'); 311 throw new ConstraintViolationException('Parent folder may not hold objects of this type (' . $typeId . ')');
312 } 312 }
@@ -366,7 +366,7 @@ class CMISObjectService { @@ -366,7 +366,7 @@ class CMISObjectService {
366 } 366 }
367 367
368 // check that we were actually able to retrieve a real object 368 // check that we were actually able to retrieve a real object
369 - $objectId = $CMISObject->getProperty('ObjectId'); 369 + $objectId = $CMISObject->getProperty('objectId');
370 if (empty($objectId)) { 370 if (empty($objectId)) {
371 throw new ObjectNotFoundException('The requested object could not be found'); 371 throw new ObjectNotFoundException('The requested object could not be found');
372 } 372 }
@@ -384,7 +384,7 @@ class CMISObjectService { @@ -384,7 +384,7 @@ class CMISObjectService {
384 * @return string $contentStream (binary or text data) 384 * @return string $contentStream (binary or text data)
385 */ 385 */
386 // NOTE streamNotSupportedException: The Repository SHALL throw this exception if the Object-Type definition 386 // NOTE streamNotSupportedException: The Repository SHALL throw this exception if the Object-Type definition
387 - // specified by the objectId parameter’s “contentStreamAllowed†attribute is set to “not allowedâ€. 387 + // specified by the objectId parameter’s “contentStreamAllowedâ€? attribute is set to “not allowedâ€?.
388 // 388 //
389 function getContentStream($repositoryId, $objectId) 389 function getContentStream($repositoryId, $objectId)
390 { 390 {
@@ -461,7 +461,7 @@ class CMISObjectService { @@ -461,7 +461,7 @@ class CMISObjectService {
461 461
462 // check type id of object against allowed child types for destination folder 462 // check type id of object against allowed child types for destination folder
463 $CMISFolder = new CMISFolderObject($targetFolderId, $this->ktapi); 463 $CMISFolder = new CMISFolderObject($targetFolderId, $this->ktapi);
464 - $allowed = $CMISFolder->getProperty('AllowedChildObjectTypeIds'); 464 + $allowed = $CMISFolder->getProperty('allowedChildObjectTypeIds');
465 if (!is_array($allowed) || !in_array($typeId, $allowed)) { 465 if (!is_array($allowed) || !in_array($typeId, $allowed)) {
466 throw new ConstraintViolationException('Parent folder may not hold objects of this type (' . $typeId . ')'); 466 throw new ConstraintViolationException('Parent folder may not hold objects of this type (' . $typeId . ')');
467 } 467 }
@@ -707,7 +707,7 @@ class CMISObjectService { @@ -707,7 +707,7 @@ class CMISObjectService {
707 throw new StreamNotSupportedException('Content Streams are not allowed for this object type'); 707 throw new StreamNotSupportedException('Content Streams are not allowed for this object type');
708 } 708 }
709 709
710 - $csFileName = $CMISDocument->getProperty('ContentStreamFilename'); 710 + $csFileName = $CMISDocument->getProperty('contentStreamFilename');
711 if (!empty($csFileName) && (!$overwriteFlag)) 711 if (!empty($csFileName) && (!$overwriteFlag))
712 { 712 {
713 throw new ContentAlreadyExistsException('Unable to overwrite existing content stream'); 713 throw new ContentAlreadyExistsException('Unable to overwrite existing content stream');
@@ -730,7 +730,7 @@ class CMISObjectService { @@ -730,7 +730,7 @@ class CMISObjectService {
730 // update the CMIS document object with the content stream information 730 // update the CMIS document object with the content stream information
731 // $CMISDocument->reload($document['result']['document_id']); 731 // $CMISDocument->reload($document['result']['document_id']);
732 732
733 - return $CMISDocument->getProperty('ObjectId'); 733 + return $CMISDocument->getProperty('objectId');
734 } 734 }
735 735
736 } 736 }
lib/api/ktcmis/services/CMISRepositoryService.inc.php
@@ -104,7 +104,7 @@ class CMISRepositoryService { @@ -104,7 +104,7 @@ class CMISRepositoryService {
104 // NOTE this code may fit better within the Repository Class 104 // NOTE this code may fit better within the Repository Class
105 // TODO return for specific type when $typeId is specified 105 // TODO return for specific type when $typeId is specified
106 // TODO other optional parameters 106 // TODO other optional parameters
107 - private function getTypes($repositoryId, $typeId = '', $returnPropertyDefinitions = false, 107 + public function getTypes($repositoryId, $typeId = '', $returnPropertyDefinitions = false,
108 $maxItems = 0, $skipCount = 0, &$hasMoreItems = false) 108 $maxItems = 0, $skipCount = 0, &$hasMoreItems = false)
109 { 109 {
110 /* 110 /*
lib/api/ktcmis/services/CMISVersioningService.inc.php
@@ -116,18 +116,18 @@ class CMISVersioningService { @@ -116,18 +116,18 @@ class CMISVersioningService {
116 }; 116 };
117 117
118 // if successful, set $contentCopied = true; unless contentStream is not set 118 // if successful, set $contentCopied = true; unless contentStream is not set
119 - if ($pwc->getProperty('ContentStreamFilename') != '') $contentCopied = true; 119 + if ($pwc->getProperty('contentStreamFilename') != '') $contentCopied = true;
120 $documentId = CMISUtil::encodeObjectId('Document', $documentId); 120 $documentId = CMISUtil::encodeObjectId('Document', $documentId);
121 121
122 // mark document object as checked out 122 // mark document object as checked out
123 - $pwc->setProperty('IsVersionSeriesCheckedOut', true); 123 + $pwc->setProperty('isVersionSeriesCheckedOut', true);
124 $userName = ''; 124 $userName = '';
125 $user = $this->ktapi->get_user(); 125 $user = $this->ktapi->get_user();
126 if (!PEAR::isError($user)) { 126 if (!PEAR::isError($user)) {
127 $userName = $user->getName(); 127 $userName = $user->getName();
128 } 128 }
129 - $pwc->setProperty('VersionSeriesCheckedOutBy', $userName);  
130 - $pwc->setProperty('VersionSeriesCheckedOutId', $documentId); 129 + $pwc->setProperty('versionSeriesCheckedOutBy', $userName);
  130 + $pwc->setProperty('versionSeriesCheckedOutId', $documentId);
131 131
132 return $contentCopied; 132 return $contentCopied;
133 } 133 }
@@ -215,13 +215,13 @@ class CMISVersioningService { @@ -215,13 +215,13 @@ class CMISVersioningService {
215 } 215 }
216 216
217 // check that this is the latest version 217 // check that this is the latest version
218 - if ($pwc->getProperty('IsLatestVersion') != true) { 218 + if ($pwc->getProperty('isLatestVersion') != true) {
219 throw new VersioningException('The document is not the latest version and cannot be checked in'); 219 throw new VersioningException('The document is not the latest version and cannot be checked in');
220 } 220 }
221 221
222 // now do the checkin 222 // now do the checkin
223 $tempfilename = CMISUtil::createTemporaryFile($contentStream); 223 $tempfilename = CMISUtil::createTemporaryFile($contentStream);
224 - $response = $this->ktapi->checkin_document($documentId, $pwc->getProperty('ContentStreamFilename'), $reason, $tempfilename, $major, 224 + $response = $this->ktapi->checkin_document($documentId, $pwc->getProperty('contentStreamFilename'), $reason, $tempfilename, $major,
225 $sig_username, $sig_password); 225 $sig_username, $sig_password);
226 226
227 // if there was any error in cancelling the checkout 227 // if there was any error in cancelling the checkout
lib/api/ktcmis/util/CMISUtil.inc.php
@@ -278,7 +278,7 @@ class CMISUtil { @@ -278,7 +278,7 @@ class CMISUtil {
278 foreach(CMISPropertyCollection::$propertyTypes as $property => $type) 278 foreach(CMISPropertyCollection::$propertyTypes as $property => $type)
279 { 279 {
280 // hack for Author property 280 // hack for Author property
281 - if ($property == 'Author') { 281 + if ($property == 'author') {
282 $object[$property] = array('value' => $properties->getValue($property)); 282 $object[$property] = array('value' => $properties->getValue($property));
283 } 283 }
284 else { 284 else {
@@ -286,71 +286,7 @@ class CMISUtil { @@ -286,71 +286,7 @@ class CMISUtil {
286 } 286 }
287 } 287 }
288 288
289 - /* old static method */  
290 - /*  
291 - $object['Author'] = array('value' => $properties->getValue('Author'));  
292 -  
293 - $object['properties']['BaseType'] = array('type' => $properties->getFieldType('BaseType'),  
294 - 'value' => $properties->getValue('BaseType'));  
295 -  
296 - $object['properties']['Name'] = array('type' => $properties->getFieldType('Name'),  
297 - 'value' => $properties->getValue('Name'));  
298 -  
299 - $object['properties']['ParentId'] = array('type' => $properties->getFieldType('ParentId'),  
300 - 'value' => self::encodeObjectId('Folder',  
301 - $properties->getValue('ParentId')));  
302 -  
303 - $object['properties']['Uri'] = array('type' => $properties->getFieldType('Uri'),  
304 - 'value' => $properties->getValue('Uri'));  
305 -  
306 - // TODO ensure format of date is always correct  
307 - $object['properties']['LastModificationDate'] = array('type' => $properties->getFieldType('LastModificationDate'),  
308 - 'value' => $properties->getValue('LastModificationDate'));  
309 -  
310 - $object['properties']['CreatedBy'] = array('type' => $properties->getFieldType('CreatedBy'),  
311 - 'value' => $properties->getValue('CreatedBy'));  
312 -  
313 - $object['properties']['AllowedChildObjectTypeIds'] = array('type' => $properties->getFieldType('AllowedChildObjectTypeIds'),  
314 - 'value' => $properties->getValue('AllowedChildObjectTypeIds'));  
315 -  
316 - $object['properties']['CreationDate'] = array('type' => $properties->getFieldType('CreationDate'),  
317 - 'value' => $properties->getValue('CreationDate'));  
318 -  
319 - $object['properties']['LastModifiedBy'] = array('type' => $properties->getFieldType('LastModifiedBy'),  
320 - 'value' => $properties->getValue('LastModifiedBy'));  
321 -  
322 - $object['properties']['ChangeToken'] = array('type' => $properties->getFieldType('ChangeToken'),  
323 - 'value' => $properties->getValue('ChangeToken'));  
324 -  
325 - $object['properties']['ObjectTypeId'] = array('type' => $properties->getFieldType('ObjectTypeId'),  
326 - 'value' => $properties->getValue('ObjectTypeId'));  
327 -  
328 - $object['properties']['ObjectId'] = array('type' => $properties->getFieldType('ObjectId'),  
329 - 'value' => $properties->getValue('ObjectId'));  
330 -  
331 - if (strtolower($properties->getValue('ObjectTypeId')) == 'document')  
332 - {  
333 - $object['properties']['ChangeToken'] = array('type' => $properties->getFieldType('ChangeToken'),  
334 - 'value' => $properties->getValue('ChangeToken'));  
335 - $contentStreamLength = $properties->getValue('ContentStreamLength');  
336 - if (!empty($contentStreamLength))  
337 - {  
338 - $contentStreamLength = $properties->getValue('ContentStreamLength');  
339 - $object['properties']['ContentStreamAllowed'] = array('type' => $properties->getFieldType('ContentStreamAllowed'),  
340 - 'value' => $properties->getValue('ContentStreamAllowed'));  
341 - $object['properties']['ContentStreamLength'] = array('type' => $properties->getFieldType('ContentStreamLength'),  
342 - 'value' => $properties->getValue('ContentStreamLength'));  
343 - $object['properties']['ContentStreamMimeType'] = array('type' => $properties->getFieldType('ContentStreamMimeType'),  
344 - 'value' => $properties->getValue('ContentStreamMimeType'));  
345 - $object['properties']['ContentStreamFilename'] = array('type' => $properties->getFieldType('ContentStreamFilename'),  
346 - 'value' => $properties->getValue('ContentStreamFilename'));  
347 - $object['properties']['ContentStreamUri'] = array('type' => $properties->getFieldType('ContentStreamUri'),  
348 - 'value' => $properties->getValue('ContentStreamUri'));  
349 - }  
350 - }  
351 - */  
352 -  
353 - /* what on earth was this for? */ 289 + /* what was this for and is it still needed? */
354 /* 290 /*
355 // if we have found a child/parent with one or more children/parents, recurse into the child/parent object 291 // if we have found a child/parent with one or more children/parents, recurse into the child/parent object
356 if (count($entry['items']) > 0) { 292 if (count($entry['items']) > 0) {
tests/ktcmis/testCmisApi.php
@@ -531,7 +531,7 @@ class CMISTestCase extends KTUnitTestCase { @@ -531,7 +531,7 @@ class CMISTestCase extends KTUnitTestCase {
531 $response = $NavigationService->getCheckedOutDocs($repositoryId, false, false); 531 $response = $NavigationService->getCheckedOutDocs($repositoryId, false, false);
532 $this->assertEqual($response['status_code'], 0); 532 $this->assertEqual($response['status_code'], 0);
533 $this->assertNotNull($response['results']); 533 $this->assertNotNull($response['results']);
534 - $this->assertTrue($this->findInPropertiesArray('ObjectId', $documentId, $response['results'])); 534 + $this->assertTrue($this->findInPropertiesArray('objectId', $documentId, $response['results']));
535 // now let's cancel the checkout so that we can delete later during cleanup :) 535 // now let's cancel the checkout so that we can delete later during cleanup :)
536 $response = $VersioningService->cancelCheckOut($repositoryId, $pwcId); 536 $response = $VersioningService->cancelCheckOut($repositoryId, $pwcId);
537 537
webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
@@ -104,8 +104,8 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -104,8 +104,8 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
104 } 104 }
105 105
106 // we know that a folder will only have one parent, so we can assume element 0 106 // we know that a folder will only have one parent, so we can assume element 0
107 - $folderId = $response[0]['properties']['ObjectId']['value'];  
108 - $folderName = $response[0]['properties']['Name']['value']; 107 + $folderId = $response[0]['properties']['objectId']['value'];
  108 + $folderName = $response[0]['properties']['name']['value'];
109 } 109 }
110 else { 110 else {
111 $folderId = $this->params[0]; 111 $folderId = $this->params[0];
@@ -162,10 +162,10 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -162,10 +162,10 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
162 $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']); 162 $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']);
163 163
164 // check for existing object id as property of submitted object data 164 // check for existing object id as property of submitted object data
165 - if (!empty($cmisObjectProperties['ObjectId'])) 165 + if (!empty($cmisObjectProperties['objectId']))
166 { 166 {
167 $action = 'move'; 167 $action = 'move';
168 - $objectId = $cmisObjectProperties['ObjectId']; 168 + $objectId = $cmisObjectProperties['objectId'];
169 } 169 }
170 170
171 // TODO there may be more to do for the checking of an existing object. 171 // TODO there may be more to do for the checking of an existing object.
@@ -196,9 +196,9 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -196,9 +196,9 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
196 if ($action == 'create') 196 if ($action == 'create')
197 { 197 {
198 if ($type == 'folder') 198 if ($type == 'folder')
199 - $newObjectId = $ObjectService->createFolder($repositoryId, ucwords($cmisObjectProperties['ObjectTypeId']), $properties, $folderId); 199 + $newObjectId = $ObjectService->createFolder($repositoryId, ucwords($cmisObjectProperties['objectTypeId']), $properties, $folderId);
200 else 200 else
201 - $newObjectId = $ObjectService->createDocument($repositoryId, ucwords($cmisObjectProperties['ObjectTypeId']), $properties, $folderId, $content); 201 + $newObjectId = $ObjectService->createDocument($repositoryId, ucwords($cmisObjectProperties['objectTypeId']), $properties, $folderId, $content);
202 202
203 // check if returned Object Id is a valid CMIS Object Id 203 // check if returned Object Id is a valid CMIS Object Id
204 CMISUtil::decodeObjectId($newObjectId, $typeId); 204 CMISUtil::decodeObjectId($newObjectId, $typeId);
@@ -272,12 +272,12 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -272,12 +272,12 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
272 $objectElement = $feed->newElement('cmisra:object'); 272 $objectElement = $feed->newElement('cmisra:object');
273 $propertiesElement = $feed->newElement('cmis:properties'); 273 $propertiesElement = $feed->newElement('cmis:properties');
274 $propElement = $feed->newElement('cmis:propertyId'); 274 $propElement = $feed->newElement('cmis:propertyId');
275 - $propElement->appendChild($feed->newAttr('cmis:name', 'ObjectId')); 275 + $propElement->appendChild($feed->newAttr('cmis:name', 'objectId'));
276 $feed->newField('cmis:value', $failed, $propElement); 276 $feed->newField('cmis:value', $failed, $propElement);
277 $propertiesElement->appendChild($propElement); 277 $propertiesElement->appendChild($propElement);
278 $objectElement->appendChild($propertiesElement); 278 $objectElement->appendChild($propertiesElement);
279 $entry->appendChild($objectElement); 279 $entry->appendChild($objectElement);
280 - $entry->appendChild($feed->newElement('cmis:terminator')); 280 +// $entry->appendChild($feed->newElement('cmis:terminator'));
281 } 281 }
282 282
283 $this->responseFeed = $feed; 283 $this->responseFeed = $feed;
@@ -386,7 +386,7 @@ class KT_cmis_atom_service_document extends KT_cmis_atom_service { @@ -386,7 +386,7 @@ class KT_cmis_atom_service_document extends KT_cmis_atom_service {
386 386
387 // for now a document will only have one parent as KnowledgeTree does not support multi-filing 387 // for now a document will only have one parent as KnowledgeTree does not support multi-filing
388 // TODO update this code if/when multi-filing support is added 388 // TODO update this code if/when multi-filing support is added
389 - $objectId = $response[0]['properties']['ObjectId']['value']; 389 + $objectId = $response[0]['properties']['objectId']['value'];
390 } 390 }
391 // determine whether we want the document entry feed or the actual physical document content. 391 // determine whether we want the document entry feed or the actual physical document content.
392 // this depends on $this->params[1] 392 // this depends on $this->params[1]
@@ -622,7 +622,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service { @@ -622,7 +622,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
622 $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']); 622 $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']);
623 623
624 // check for existing object id as property of submitted object data 624 // check for existing object id as property of submitted object data
625 - if (empty($cmisObjectProperties['ObjectId'])) 625 + if (empty($cmisObjectProperties['objectId']))
626 { 626 {
627 $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, 'No object was specified for checkout'); 627 $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, 'No object was specified for checkout');
628 // Expose the responseFeed 628 // Expose the responseFeed
@@ -630,7 +630,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service { @@ -630,7 +630,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
630 return null; 630 return null;
631 } 631 }
632 632
633 - $response = $VersioningService->checkOut($repositoryId, $cmisObjectProperties['ObjectId']); 633 + $response = $VersioningService->checkOut($repositoryId, $cmisObjectProperties['objectId']);
634 634
635 if (PEAR::isError($response)) 635 if (PEAR::isError($response))
636 { 636 {
@@ -641,7 +641,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service { @@ -641,7 +641,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
641 } 641 }
642 642
643 $this->setStatus(self::STATUS_CREATED); 643 $this->setStatus(self::STATUS_CREATED);
644 - $feed = KT_cmis_atom_service_helper::getObjectFeed($this, $ObjectService, $repositoryId, $cmisObjectProperties['ObjectId'], 'POST'); 644 + $feed = KT_cmis_atom_service_helper::getObjectFeed($this, $ObjectService, $repositoryId, $cmisObjectProperties['objectId'], 'POST');
645 645
646 // Expose the responseFeed 646 // Expose the responseFeed
647 $this->responseFeed = $feed; 647 $this->responseFeed = $feed;
webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
@@ -78,12 +78,12 @@ class KT_cmis_atom_service_helper { @@ -78,12 +78,12 @@ class KT_cmis_atom_service_helper {
78 } 78 }
79 else if ($method == 'GET') { 79 else if ($method == 'GET') {
80 $response = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI); 80 $response = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
81 - $response->newField('title', $cmisEntry['properties']['ObjectTypeId']['value'], $response);  
82 - $response->newField('id', 'urn:uuid:' . $cmisEntry['properties']['ObjectId']['value'], $response); 81 + $response->newField('title', $cmisEntry['properties']['objectTypeId']['value'], $response);
  82 + $response->newField('id', 'urn:uuid:' . $cmisEntry['properties']['objectId']['value'], $response);
83 } 83 }
84 84
85 if ($serviceType == 'PWC') $pwc = true; else $pwc = false; 85 if ($serviceType == 'PWC') $pwc = true; else $pwc = false;
86 - KT_cmis_atom_service_helper::createObjectEntry($response, $cmisEntry, $cmisEntry['properties']['ParentId']['value'], $pwc, $method); 86 + KT_cmis_atom_service_helper::createObjectEntry($response, $cmisEntry, $cmisEntry['properties']['parentId']['value'], $pwc, $method);
87 87
88 // Don't think this should be here...only one item so why would we need to say there are no more? 88 // Don't think this should be here...only one item so why would we need to say there are no more?
89 /*if ($method == 'GET') { 89 /*if ($method == 'GET') {
@@ -103,7 +103,7 @@ class KT_cmis_atom_service_helper { @@ -103,7 +103,7 @@ class KT_cmis_atom_service_helper {
103 static public function createObjectEntry(&$response, $cmisEntry, $parent, $pwc = false, $method = 'GET') 103 static public function createObjectEntry(&$response, $cmisEntry, $parent, $pwc = false, $method = 'GET')
104 { 104 {
105 $workspace = $response->getWorkspace(); 105 $workspace = $response->getWorkspace();
106 - $type = strtolower($cmisEntry['properties']['ObjectTypeId']['value']); 106 + $type = strtolower($cmisEntry['properties']['objectTypeId']['value']);
107 107
108 // create entry 108 // create entry
109 $entry = $response->newEntry(); 109 $entry = $response->newEntry();
@@ -114,7 +114,8 @@ class KT_cmis_atom_service_helper { @@ -114,7 +114,8 @@ class KT_cmis_atom_service_helper {
114 // append attributes 114 // append attributes
115 $entry->appendChild($response->newAttr('xmlns', 'http://www.w3.org/2005/Atom')); 115 $entry->appendChild($response->newAttr('xmlns', 'http://www.w3.org/2005/Atom'));
116 $entry->appendChild($response->newAttr('xmlns:app', 'http://www.w3.org/2007/app')); 116 $entry->appendChild($response->newAttr('xmlns:app', 'http://www.w3.org/2007/app'));
117 - $entry->appendChild($response->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200901')); 117 + $entry->appendChild($response->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200908/'));
  118 + $entry->appendChild($response->newAttr('xmlns:cmisra', 'http://docs.oasis-open.org/ns/cmis/restatom/200908/'));
118 } 119 }
119 120
120 // TODO dynamic actual creator name 121 // TODO dynamic actual creator name
@@ -122,18 +123,18 @@ class KT_cmis_atom_service_helper { @@ -122,18 +123,18 @@ class KT_cmis_atom_service_helper {
122 $element = $response->newField('name', 'admin', $responseElement); 123 $element = $response->newField('name', 'admin', $responseElement);
123 $entry->appendChild($responseElement); 124 $entry->appendChild($responseElement);
124 125
125 - if (!empty($cmisEntry['properties']['ContentStreamLength']['value'])) 126 + if (!empty($cmisEntry['properties']['contentStreamLength']['value']))
126 { 127 {
127 $field = $response->newElement('content'); 128 $field = $response->newElement('content');
128 - $field->appendChild($response->newAttr('type', $cmisEntry['properties']['ContentStreamMimeType']['value'])); 129 + $field->appendChild($response->newAttr('type', $cmisEntry['properties']['contentStreamMimeType']['value']));
129 $field->appendChild($response->newAttr('src', CMIS_APP_BASE_URI . $workspace . '/' . $type 130 $field->appendChild($response->newAttr('src', CMIS_APP_BASE_URI . $workspace . '/' . $type
130 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
131 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 131 + . '/' . $cmisEntry['properties']['objectId']['value']
  132 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
132 $entry->appendChild($field); 133 $entry->appendChild($field);
133 } 134 }
134 135
135 // content & id tags 136 // content & id tags
136 - $id = $cmisEntry['properties']['ObjectId']['value']; 137 + $id = $cmisEntry['properties']['objectId']['value'];
137 138
138 $response->newField('id', 'urn:uuid:' . $id, $entry); 139 $response->newField('id', 'urn:uuid:' . $id, $entry);
139 140
@@ -141,32 +142,32 @@ class KT_cmis_atom_service_helper { @@ -141,32 +142,32 @@ class KT_cmis_atom_service_helper {
141 $link = $response->newElement('link'); 142 $link = $response->newElement('link');
142 $link->appendChild($response->newAttr('rel', 'self')); 143 $link->appendChild($response->newAttr('rel', 'self'));
143 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . (!$pwc ? $type : 'pwc') . '/' 144 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . (!$pwc ? $type : 'pwc') . '/'
144 - . $cmisEntry['properties']['ObjectId']['value'])); 145 + . $cmisEntry['properties']['objectId']['value']));
145 $entry->appendChild($link); 146 $entry->appendChild($link);
146 147
147 $link = $response->newElement('link'); 148 $link = $response->newElement('link');
148 $link->appendChild($response->newAttr('rel', 'edit')); 149 $link->appendChild($response->newAttr('rel', 'edit'));
149 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 150 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
150 - . '/' . $cmisEntry['properties']['ObjectId']['value'])); 151 + . '/' . $cmisEntry['properties']['objectId']['value']));
151 $entry->appendChild($link); 152 $entry->appendChild($link);
152 153
153 - if ((strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'document')  
154 - && (!empty($cmisEntry['properties']['ContentStreamLength']['value']))) 154 + if ((strtolower($cmisEntry['properties']['objectTypeId']['value']) == 'document')
  155 + && (!empty($cmisEntry['properties']['contentStreamLength']['value'])))
155 { 156 {
156 $link = $response->newElement('link'); 157 $link = $response->newElement('link');
157 $link->appendChild($response->newAttr('rel', 'edit-media')); 158 $link->appendChild($response->newAttr('rel', 'edit-media'));
158 - $link->appendChild($response->newAttr('type', $cmisEntry['properties']['ContentStreamMimeType']['value'])); 159 + $link->appendChild($response->newAttr('type', $cmisEntry['properties']['contentStreamMimeType']['value']));
159 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 160 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
160 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
161 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 161 + . '/' . $cmisEntry['properties']['objectId']['value']
  162 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
162 $entry->appendChild($link); 163 $entry->appendChild($link);
163 164
164 $link = $response->newElement('link'); 165 $link = $response->newElement('link');
165 $link->appendChild($response->newAttr('rel', 'enclosure')); 166 $link->appendChild($response->newAttr('rel', 'enclosure'));
166 - $link->appendChild($response->newAttr('type', $cmisEntry['properties']['ContentStreamMimeType']['value'])); 167 + $link->appendChild($response->newAttr('type', $cmisEntry['properties']['contentStreamMimeType']['value']));
167 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 168 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
168 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
169 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 169 + . '/' . $cmisEntry['properties']['objectId']['value']
  170 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
170 $entry->appendChild($link); 171 $entry->appendChild($link);
171 } 172 }
172 173
@@ -175,7 +176,7 @@ class KT_cmis_atom_service_helper { @@ -175,7 +176,7 @@ class KT_cmis_atom_service_helper {
175 $link = $response->newElement('link'); 176 $link = $response->newElement('link');
176 $link->appendChild($response->newAttr('rel', 'allowableactions')); 177 $link->appendChild($response->newAttr('rel', 'allowableactions'));
177 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' 178 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/'
178 - . $cmisEntry['properties']['ObjectId']['value'] . '/permissions')); 179 + . $cmisEntry['properties']['objectId']['value'] . '/permissions'));
179 $entry->appendChild($link); 180 $entry->appendChild($link);
180 181
181 // according to spec this MUST be present, but spec says that links for function which are not supported 182 // according to spec this MUST be present, but spec says that links for function which are not supported
@@ -183,67 +184,67 @@ class KT_cmis_atom_service_helper { @@ -183,67 +184,67 @@ class KT_cmis_atom_service_helper {
183 $link = $response->newElement('link'); 184 $link = $response->newElement('link');
184 $link->appendChild($response->newAttr('rel', 'relationships')); 185 $link->appendChild($response->newAttr('rel', 'relationships'));
185 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' 186 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/'
186 - . $cmisEntry['properties']['ObjectId']['value'] . '/rels')); 187 + . $cmisEntry['properties']['objectId']['value'] . '/rels'));
187 $entry->appendChild($link); 188 $entry->appendChild($link);
188 189
189 // if there is no parent or parent is 0, do not add the parent link 190 // if there is no parent or parent is 0, do not add the parent link
190 // also if this is specifically the root folder, do not add the parent link 191 // also if this is specifically the root folder, do not add the parent link
191 -// if (!empty($cmisEntry['properties']['ParentId']['value']) && !CMISUtil::isRootFolder(self::$repositoryId, $cmisEntry['properties']['ObjectId']['value'])) 192 +// if (!empty($cmisEntry['properties']['parentId']['value']) && !CMISUtil::isRootFolder(self::$repositoryId, $cmisEntry['properties']['objectId']['value']))
192 193
193 - if (!CMISUtil::isRootFolder(self::$repositoryId, $cmisEntry['properties']['ObjectId']['value'], self::$ktapi)) 194 + if (!CMISUtil::isRootFolder(self::$repositoryId, $cmisEntry['properties']['objectId']['value'], self::$ktapi))
194 { 195 {
195 // TODO check parent link is correct, fix if needed 196 // TODO check parent link is correct, fix if needed
196 $link = $response->newElement('link'); 197 $link = $response->newElement('link');
197 $link->appendChild($response->newAttr('rel', 'parents')); 198 $link->appendChild($response->newAttr('rel', 'parents'));
198 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/folder/' 199 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/folder/'
199 - . $cmisEntry['properties']['ObjectId']['value'] . '/parent')); 200 + . $cmisEntry['properties']['objectId']['value'] . '/parent'));
200 $entry->appendChild($link); 201 $entry->appendChild($link);
201 } 202 }
202 203
203 // Folder/Document specific links 204 // Folder/Document specific links
204 - if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'folder') 205 + if (strtolower($cmisEntry['properties']['objectTypeId']['value']) == 'folder')
205 { 206 {
206 $link = $response->newElement('link'); 207 $link = $response->newElement('link');
207 $link->appendChild($response->newAttr('rel', 'children')); 208 $link->appendChild($response->newAttr('rel', 'children'));
208 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' 209 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/'
209 . $type 210 . $type
210 - . '/' . $cmisEntry['properties']['ObjectId']['value'] 211 + . '/' . $cmisEntry['properties']['objectId']['value']
211 . '/children')); 212 . '/children'));
212 $entry->appendChild($link); 213 $entry->appendChild($link);
213 $link = $response->newElement('link'); 214 $link = $response->newElement('link');
214 $link->appendChild($response->newAttr('rel', 'descendants')); 215 $link->appendChild($response->newAttr('rel', 'descendants'));
215 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' 216 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/'
216 . $type 217 . $type
217 - . '/' . $cmisEntry['properties']['ObjectId']['value'] 218 + . '/' . $cmisEntry['properties']['objectId']['value']
218 . '/descendants')); 219 . '/descendants'));
219 $entry->appendChild($link); 220 $entry->appendChild($link);
220 } 221 }
221 - else if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'document') 222 + else if (strtolower($cmisEntry['properties']['objectTypeId']['value']) == 'document')
222 { 223 {
223 // according to spec this MUST be present, but spec says that links for function which are not supported 224 // according to spec this MUST be present, but spec says that links for function which are not supported
224 // do not need to be present, so unsure for the moment 225 // do not need to be present, so unsure for the moment
225 // $link = $response->newElement('link'); 226 // $link = $response->newElement('link');
226 // $link->appendChild($response->newAttr('rel', 'allversions')); 227 // $link->appendChild($response->newAttr('rel', 'allversions'));
227 -// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value'])); 228 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['parentId']['value']));
228 // $entry->appendChild($link); 229 // $entry->appendChild($link);
229 230
230 // according to spec this MUST be present, but spec says that links for function which are not supported 231 // according to spec this MUST be present, but spec says that links for function which are not supported
231 // do not need to be present, so unsure for the moment 232 // do not need to be present, so unsure for the moment
232 // $link = $response->newElement('link'); 233 // $link = $response->newElement('link');
233 // $link->appendChild($response->newAttr('rel', 'latestversion')); 234 // $link->appendChild($response->newAttr('rel', 'latestversion'));
234 -// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value'])); 235 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['parentId']['value']));
235 // $entry->appendChild($link); 236 // $entry->appendChild($link);
236 237
237 // if there is a content stream, this link MUST be present 238 // if there is a content stream, this link MUST be present
238 // not sure yet where it must point... 239 // not sure yet where it must point...
239 - if (!empty($cmisEntry['properties']['ContentStreamLength']['value'])) 240 + if (!empty($cmisEntry['properties']['contentStreamLength']['value']))
240 { 241 {
241 $link = $response->newElement('link'); 242 $link = $response->newElement('link');
242 $link->appendChild($response->newAttr('rel', 'stream')); 243 $link->appendChild($response->newAttr('rel', 'stream'));
243 - $link->appendChild($response->newAttr('type', $cmisEntry['properties']['ContentStreamMimeType']['value'])); 244 + $link->appendChild($response->newAttr('type', $cmisEntry['properties']['contentStreamMimeType']['value']));
244 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 245 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
245 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
246 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 246 + . '/' . $cmisEntry['properties']['objectId']['value']
  247 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
247 $entry->appendChild($link); 248 $entry->appendChild($link);
248 } 249 }
249 250
@@ -255,22 +256,22 @@ class KT_cmis_atom_service_helper { @@ -255,22 +256,22 @@ class KT_cmis_atom_service_helper {
255 $link = $response->newElement('link'); 256 $link = $response->newElement('link');
256 $link->appendChild($response->newAttr('rel', 'pwc')); 257 $link->appendChild($response->newAttr('rel', 'pwc'));
257 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 258 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
258 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
259 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 259 + . '/' . $cmisEntry['properties']['objectId']['value']
  260 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
260 $entry->appendChild($link); 261 $entry->appendChild($link);
261 $link = $response->newElement('link'); 262 $link = $response->newElement('link');
262 $link->appendChild($response->newAttr('rel', 'source')); 263 $link->appendChild($response->newAttr('rel', 'source'));
263 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 264 $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
264 - . '/' . $cmisEntry['properties']['ObjectId']['value']  
265 - . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 265 + . '/' . $cmisEntry['properties']['objectId']['value']
  266 + . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
266 $entry->appendChild($link); 267 $entry->appendChild($link);
267 } 268 }
268 269
269 // $link = $response->newElement('link'); 270 // $link = $response->newElement('link');
270 // $link->appendChild($response->newAttr('rel', 'stream')); 271 // $link->appendChild($response->newAttr('rel', 'stream'));
271 // $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type 272 // $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type
272 -// . '/' . $cmisEntry['properties']['ObjectId']['value']  
273 -// . '/' . $cmisEntry['properties']['ContentStreamFilename']['value'])); 273 +// . '/' . $cmisEntry['properties']['objectId']['value']
  274 +// . '/' . $cmisEntry['properties']['contentStreamFilename']['value']));
274 } 275 }
275 276
276 $link = $response->newElement('link'); 277 $link = $response->newElement('link');
@@ -287,14 +288,14 @@ class KT_cmis_atom_service_helper { @@ -287,14 +288,14 @@ class KT_cmis_atom_service_helper {
287 // do not need to be present, so unsure for the moment - policies are being abandoned, or so I thought... 288 // do not need to be present, so unsure for the moment - policies are being abandoned, or so I thought...
288 // $link = $response->newElement('link'); 289 // $link = $response->newElement('link');
289 // $link->appendChild($response->newAttr('rel', 'policies')); 290 // $link->appendChild($response->newAttr('rel', 'policies'));
290 -// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value'])); 291 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['parentId']['value']));
291 // $entry->appendChild($link); 292 // $entry->appendChild($link);
292 // end links 293 // end links
293 294
294 // TODO proper date 295 // TODO proper date
295 $entry->appendChild($response->newField('published', self::formatDatestamp())); 296 $entry->appendChild($response->newField('published', self::formatDatestamp()));
296 - $entry->appendChild($response->newElement('summary', $cmisEntry['properties']['Name']['value']));  
297 - $entry->appendChild($response->newElement('title', $cmisEntry['properties']['Name']['value'])); 297 + $entry->appendChild($response->newElement('summary', $cmisEntry['properties']['name']['value']));
  298 + $entry->appendChild($response->newElement('title', $cmisEntry['properties']['name']['value']));
298 $entry->appendChild($response->newField('updated', self::formatDatestamp())); 299 $entry->appendChild($response->newField('updated', self::formatDatestamp()));
299 300
300 // main CMIS entry 301 // main CMIS entry
@@ -304,11 +305,11 @@ class KT_cmis_atom_service_helper { @@ -304,11 +305,11 @@ class KT_cmis_atom_service_helper {
304 foreach($cmisEntry['properties'] as $propertyName => $property) 305 foreach($cmisEntry['properties'] as $propertyName => $property)
305 { 306 {
306 $propElement = $response->newElement('cmis:' . $property['type']); 307 $propElement = $response->newElement('cmis:' . $property['type']);
307 - $propElement->appendChild($response->newAttr('localName', 'rep-cmis:' . $propertyName)); 308 +// $propElement->appendChild($response->newAttr('localName', 'rep-cmis:' . $propertyName));
308 $propElement->appendChild($response->newAttr('propertyDefinitionId', 'cmis:' . $propertyName)); 309 $propElement->appendChild($response->newAttr('propertyDefinitionId', 'cmis:' . $propertyName));
309 if (!empty($property['value'])) 310 if (!empty($property['value']))
310 { 311 {
311 - if ($propertyName == 'ContentStreamUri') { 312 + if ($propertyName == 'contentStreamUri') {
312 $property['value'] = CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' .$property['value']; 313 $property['value'] = CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' .$property['value'];
313 } 314 }
314 $response->newField('cmis:value', CMISUtil::boolToString($property['value']), $propElement); 315 $response->newField('cmis:value', CMISUtil::boolToString($property['value']), $propElement);
@@ -320,7 +321,7 @@ class KT_cmis_atom_service_helper { @@ -320,7 +321,7 @@ class KT_cmis_atom_service_helper {
320 $entry->appendChild($objectElement); 321 $entry->appendChild($objectElement);
321 322
322 // after every entry, append a cmis:terminator tag 323 // after every entry, append a cmis:terminator tag
323 - $entry->appendChild($response->newElement('cmis:terminator')); 324 +// $entry->appendChild($response->newElement('cmis:terminator'));
324 325
325 // TODO check determination of when to add app:edited tag 326 // TODO check determination of when to add app:edited tag
326 // if ($method == 'POST') { 327 // if ($method == 'POST') {
@@ -431,7 +432,7 @@ class KT_cmis_atom_service_helper { @@ -431,7 +432,7 @@ class KT_cmis_atom_service_helper {
431 $entry->appendChild($feedElement); 432 $entry->appendChild($feedElement);
432 433
433 // after every entry, append a cmis:terminator tag 434 // after every entry, append a cmis:terminator tag
434 - $entry->appendChild($feed->newElement('cmis:terminator')); 435 +// $entry->appendChild($feed->newElement('cmis:terminator'));
435 } 436 }
436 437
437 return $feed; 438 return $feed;
@@ -478,7 +479,7 @@ class KT_cmis_atom_service_helper { @@ -478,7 +479,7 @@ class KT_cmis_atom_service_helper {
478 ++$start; 479 ++$start;
479 } 480 }
480 481
481 - return CMISUtil::encodeObjectId('Folder', $folderId); 482 + return CMISUtil::encodeObjectId(FOLDER, $folderId);
482 } 483 }
483 484
484 static public function getCmisProperties($xmlArray) 485 static public function getCmisProperties($xmlArray)
@@ -591,7 +592,7 @@ class KT_cmis_atom_service_helper { @@ -591,7 +592,7 @@ class KT_cmis_atom_service_helper {
591 // $service->headers['If-Modified-Since'] => 2009-07-24 17:16:54 592 // $service->headers['If-Modified-Since'] => 2009-07-24 17:16:54
592 593
593 $service->setContentDownload(true); 594 $service->setContentDownload(true);
594 - $eTag = md5($response['properties']['LastModificationDate']['value'] . $response['properties']['ContentStreamLength']['value']); 595 + $eTag = md5($response['properties']['lastModificationDate']['value'] . $response['properties']['contentStreamLength']['value']);
595 596
596 if ($service->headers['If-None-Match'] == $eTag) 597 if ($service->headers['If-None-Match'] == $eTag)
597 { 598 {
@@ -604,17 +605,17 @@ class KT_cmis_atom_service_helper { @@ -604,17 +605,17 @@ class KT_cmis_atom_service_helper {
604 605
605 // headers specific to output 606 // headers specific to output
606 $service->setEtag($eTag); 607 $service->setEtag($eTag);
607 - $service->setHeader('Last-Modified', $response['properties']['LastModificationDate']['value']); 608 + $service->setHeader('Last-Modified', $response['properties']['lastModificationDate']['value']);
608 609
609 - if (!empty($response['properties']['ContentStreamMimeType']['value'])) {  
610 - $service->setHeader('Content-type', $response['properties']['ContentStreamMimeType']['value'] . ';charset=utf-8'); 610 + if (!empty($response['properties']['contentStreamMimeType']['value'])) {
  611 + $service->setHeader('Content-type', $response['properties']['contentStreamMimeType']['value'] . ';charset=utf-8');
611 } 612 }
612 else { 613 else {
613 $service->setHeader('Content-type', 'text/plain;charset=utf-8'); 614 $service->setHeader('Content-type', 'text/plain;charset=utf-8');
614 } 615 }
615 616
616 - $service->setHeader('Content-Disposition', 'attachment;filename="' . $response['properties']['ContentStreamFilename']['value'] . '"');  
617 - $service->setHeader('Content-Length', $response['properties']['ContentStreamLength']['value']); 617 + $service->setHeader('Content-Disposition', 'attachment;filename="' . $response['properties']['contentStreamFilename']['value'] . '"');
  618 + $service->setHeader('Content-Length', $response['properties']['contentStreamLength']['value']);
618 $service->setOutput($contentStream); 619 $service->setOutput($contentStream);
619 } 620 }
620 621
webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php
@@ -19,7 +19,7 @@ class KT_cmis_atom_responseFeed extends KT_atom_responseFeed { @@ -19,7 +19,7 @@ class KT_cmis_atom_responseFeed extends KT_atom_responseFeed {
19 19
20 // append additional tags 20 // append additional tags
21 $this->feed->appendChild($this->newAttr('xmlns:app', 'http://www.w3.org/2007/app')); 21 $this->feed->appendChild($this->newAttr('xmlns:app', 'http://www.w3.org/2007/app'));
22 - $this->feed->appendChild($this->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200908')); 22 + $this->feed->appendChild($this->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200908/'));
23 $this->feed->appendChild($this->newAttr('xmlns:cmisra', 'http://docs.oasis-open.org/ns/cmis/restatom/200908/')); 23 $this->feed->appendChild($this->newAttr('xmlns:cmisra', 'http://docs.oasis-open.org/ns/cmis/restatom/200908/'));
24 24
25 // require the workspace for creating links within responses 25 // require the workspace for creating links within responses
webservice/classes/atompub/cmis/KT_cmis_atom_server.inc.php
@@ -115,8 +115,13 @@ class KT_cmis_atom_server extends KT_atom_server { @@ -115,8 +115,13 @@ class KT_cmis_atom_server extends KT_atom_server {
115 } 115 }
116 } 116 }
117 } 117 }
  118 +
  119 + ob_start();
  120 + readfile('C:\Users\Paul\Documents\Downloads\cmis_mod_kt.xml');
  121 + $this->output = ob_get_contents();
  122 + ob_end_clean();
118 123
119 - $this->output = $service->getAPPdoc(); 124 +// $this->output = $service->getAPPdoc();
120 } 125 }
121 126
122 public function registerService($workspace = NULL, $serviceName = NULL, $serviceClass = NULL, $title = NULL, 127 public function registerService($workspace = NULL, $serviceName = NULL, $serviceClass = NULL, $title = NULL,
@@ -154,7 +159,21 @@ class KT_cmis_atom_server extends KT_atom_server { @@ -154,7 +159,21 @@ class KT_cmis_atom_server extends KT_atom_server {
154 159
155 //include('/var/www/atompub_response.xml'); 160 //include('/var/www/atompub_response.xml');
156 161
157 - if ($this->renderBody) echo $this->output; 162 + if (false && preg_match('/F1\-children/', $this->output)) {
  163 + readfile('C:\Users\Paul\Documents\Downloads\alfresco folder tree atompub response.xml');
  164 + }
  165 + else if (false && preg_match('/urn:uuid:checkedout/', $this->output)) {
  166 + readfile('C:\Users\Paul\Documents\Downloads\alfresco checkedout atompub response.xml');
  167 + }
  168 + else if (false && preg_match('/urn:uuid:types\-all/', $this->output)) {
  169 + readfile('C:\Users\Paul\Documents\Downloads\alfresco types atompub response.xml');
  170 + }
  171 + else if (false && preg_match('/\<service\>/', $this->output)) {
  172 + readfile('C:\Users\Paul\Documents\Downloads\cmis_mod_kt.xml');
  173 + }
  174 + else {
  175 + if ($this->renderBody) echo $this->output;
  176 + }
158 } 177 }
159 178
160 } 179 }