Commit a0f1d97fe1fa9d896363ae950d2b24dce78632bd

Authored by Paul Barrett
1 parent a620abd9

Story ID: 778712. Updated AtomPub response for POST. Removed unneeded inherited …

…class.  Removed no longer needed over-ridden functionality.

Committed by: Paul Barrett
webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
... ... @@ -43,22 +43,11 @@ include_once 'KT_cmis_atom_service_helper.inc.php';
43 43 * Returns children, descendants (up to arbitrary depth) or detail for a particular folder
44 44 *
45 45 */
46   -class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
  46 +class KT_cmis_atom_service_folder extends KT_atom_service {
47 47  
48 48 public function GET_action()
49 49 {
50 50 $RepositoryService = new RepositoryService();
51   -// try {
52   -// $RepositoryService->startSession(self::$authData['username'], self::$authData['password']);
53   -// }
54   -// catch (Exception $e)
55   -// {
56   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
57   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
58   -// $this->responseFeed = $feed;
59   -// return null;
60   -// }
61   -
62 51 $repositories = $RepositoryService->getRepositories();
63 52 $repositoryId = $repositories[0]['repositoryId'];
64 53  
... ... @@ -80,56 +69,19 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
80 69 {
81 70 $folderId = $this->params[0];
82 71 $ObjectService = new ObjectService(KT_cmis_atom_service_helper::getKt());
83   -
84   -// try {
85   -// $ObjectService->startSession(self::$authData['username'], self::$authData['password']);
86   -// }
87   -// catch (Exception $e)
88   -// {
89   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
90   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
91   -// $this->responseFeed = $feed;
92   -// return null;
93   -// }
94   -
95 72 $cmisEntry = $ObjectService->getProperties($repositoryId, $folderId, false, false);
96 73 $folderName = $cmisEntry['properties']['Name']['value'];
97   - // $feed = $this->getFolderChildrenFeed($NavigationService, $repositoryId, $newObjectId, $cmisEntry['properties']['Name']['value']);
98 74 }
99 75  
100 76 if (!empty($this->params[1]) && (($this->params[1] == 'children') || ($this->params[1] == 'descendants')))
101 77 {
102 78 $NavigationService = new NavigationService(KT_cmis_atom_service_helper::getKt());
103   -
104   -// try {
105   -// $NavigationService->startSession(self::$authData['username'], self::$authData['password']);
106   -// }
107   -// catch (Exception $e)
108   -// {
109   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
110   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
111   -// $this->responseFeed = $feed;
112   -// return null;
113   -// }
114   -
115 79 $feed = $this->getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $folderName, $this->params[1]);
116 80 }
117 81 else
118 82 {
119 83 $ObjectService = new ObjectService(KT_cmis_atom_service_helper::getKt());
120   -
121   -// try {
122   -// $ObjectService->startSession(self::$authData['username'], self::$authData['password']);
123   -// }
124   -// catch (Exception $e)
125   -// {
126   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
127   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
128   -// $this->responseFeed = $feed;
129   -// return null;
130   -// }
131   -
132   - $feed = $this->getFolderFeed($ObjectService, $repositoryId, $folderId);
  84 + $feed = KT_cmis_atom_service_helper::getObjectFeed($ObjectService, $repositoryId, $folderId);
133 85 }
134 86  
135 87 //Expose the responseFeed
... ... @@ -139,18 +91,6 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
139 91 public function POST_action()
140 92 {
141 93 $RepositoryService = new RepositoryService();
142   -
143   -// try {
144   -// $RepositoryService->startSession(self::$authData['username'], self::$authData['password']);
145   -// }
146   -// catch (Exception $e)
147   -// {
148   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
149   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
150   -// $this->responseFeed = $feed;
151   -// return null;
152   -// }
153   -
154 94 $repositories = $RepositoryService->getRepositories();
155 95 $repositoryId = $repositories[0]['repositoryId'];
156 96  
... ... @@ -168,70 +108,32 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
168 108 else
169 109 $type = 'document';
170 110  
171   - // TODO what if mime-type is incorrect? CMISSpaces appears to be sending text/plain on an executable file.
172   - // perhaps because the content is text/plain once base64 encoded?
173   - // How to determine the actual content type?
174   - /*
175   - * <atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200901">
176   - * <atom:title>setup.txt</atom:title>
177   - * <atom:summary>setup.txt</atom:summary>
178   - * <atom:content type="text/plain">dGhpcyBiZSBzb21lIHRlc3QgY29udGVudCBmb3IgYSBkb2N1bWVudCwgeWVzPw==</atom:content>
179   - * <cmis:object>
180   - * <cmis:properties>
181   - * <cmis:propertyString cmis:name="ObjectTypeId"><cmis:value>document</cmis:value></cmis:propertyString>
182   - * </cmis:properties>
183   - * </cmis:object>
184   - * </atom:entry>
185   - */
186   -
187 111 $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']['cmis:object']
188 112 [0]['@children']['cmis:properties']
189 113 [0]['@children']);
190 114  
191 115 $ObjectService = new ObjectService(KT_cmis_atom_service_helper::getKt());
192 116  
193   -// try {
194   -// $ObjectService->startSession(self::$authData['username'], self::$authData['password']);
195   -// }
196   -// catch (Exception $e)
197   -// {
198   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
199   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
200   -// $this->responseFeed = $feed;
201   -// return null;
202   -// }
203   -
204 117 if ($type == 'folder')
205 118 $newObjectId = $ObjectService->createFolder($repositoryId, ucwords($cmisObjectProperties['ObjectTypeId']), $properties, $folderId);
206 119 else
207 120 $newObjectId = $ObjectService->createDocument($repositoryId, ucwords($cmisObjectProperties['ObjectTypeId']), $properties, $folderId, $content);
208 121  
209 122 // check if returned Object Id is a valid CMIS Object Id
210   - $dummy = CMISUtil::decodeObjectId($newObjectId, $typeId);
  123 + CMISUtil::decodeObjectId($newObjectId, $typeId);
  124 +
211 125 if ($typeId != 'Unknown')
212 126 {
213 127 $this->setStatus(self::STATUS_CREATED);
214 128 if ($type == 'folder')
215 129 {
216   - $feed = $this->getFolderFeed($ObjectService, $repositoryId, $newObjectId);
  130 + $feed = KT_cmis_atom_service_helper::getObjectFeed($ObjectService, $repositoryId, $newObjectId, 'POST');
217 131 }
218 132 else
219 133 {
220 134 $NavigationService = new NavigationService(KT_cmis_atom_service_helper::getKt());
221   -
222   -// try {
223   -// $NavigationService->startSession(self::$authData['username'], self::$authData['password']);
224   -// }
225   -// catch (Exception $e)
226   -// {
227   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
228   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
229   -// $this->responseFeed = $feed;
230   -// return null;
231   -// }
232   -
233 135 $cmisEntry = $ObjectService->getProperties($repositoryId, $folderId, false, false);
234   - $feed = $this->getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $cmisEntry['properties']['Name']['value']);
  136 + $feed = $this->getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $cmisEntry['properties']['Name']['value'], 'POST');
235 137 }
236 138 }
237 139 else
... ... @@ -268,23 +170,30 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
268 170 }
269 171  
270 172 // $baseURI=NULL,$title=NULL,$link=NULL,$updated=NULL,$author=NULL,$id=NULL
271   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $folderName . ' ' . ucwords($feedType), null, null, null, null);
272   -// 'urn:uuid:' . $folderId . '-' . $feedType);
273   -
  173 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  174 + $workspace = $feed->getWorkspace();
  175 +
  176 + $feed->newField('title', $folderName . ' ' . ucwords($feedType), $feed);
  177 +
274 178 // TODO dynamic?
275 179 $feedElement = $feed->newField('author');
276 180 $element = $feed->newField('name', 'System', $feedElement);
277 181 $feed->appendChild($feedElement);
278 182  
279 183 // id
280   - $feed->appendChild($feed->newElement('id', 'urn:uuid:' . $folderId . '-' . $feedType));
  184 + $feed->newField('id', 'urn:uuid:' . $folderId . '-' . $feedType, $feed);
281 185  
282 186 // TODO get actual most recent update time, only use current if no other available
283   - $feed->appendChild($feed->newElement('updated', KT_cmis_atom_service_helper::formatDatestamp()));
284   -
  187 + $feed->newField('updated', KT_cmis_atom_service_helper::formatDatestamp(), $feed);
  188 +
285 189 $link = $feed->newElement('link');
286   - $link->appendChild($feed->newAttr('rel','source'));
287   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/folder/' . $folderId));
  190 + $link->appendChild($feed->newAttr('rel', 'self'));
  191 + $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/folder/' . $folderId . '/' . $feedType));
  192 + $feed->appendChild($link);
  193 +
  194 + $link = $feed->newElement('link');
  195 + $link->appendChild($feed->newAttr('rel', 'source'));
  196 + $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/folder/' . $folderId));
288 197 $feed->appendChild($link);
289 198  
290 199 foreach($entries as $cmisEntry)
... ... @@ -292,7 +201,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
292 201 KT_cmis_atom_service_helper::createObjectEntry($feed, $cmisEntry, $folderName);
293 202  
294 203 // after each entry, add app:edited tag
295   - $feed->appendChild($feed->newElement('app:edited', KT_cmis_atom_service_helper::formatDatestamp()));
  204 + $feed->newField('app:edited', KT_cmis_atom_service_helper::formatDatestamp(), $feed);
296 205 }
297 206  
298 207 // <cmis:hasMoreItems>false</cmis:hasMoreItems>
... ... @@ -304,29 +213,6 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
304 213 return $feed;
305 214 }
306 215  
307   - /**
308   - * Retrieves data about a specific folder
309   - *
310   - * @param object $ObjectService The CMIS service
311   - * @param string $repositoryId
312   - * @param string $folderId
313   - * @return string CMIS AtomPub feed
314   - */
315   - private function getFolderFeed($ObjectService, $repositoryId, $folderId)
316   - {
317   - $cmisEntry = $ObjectService->getProperties($repositoryId, $folderId, false, false);
318   -
319   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $cmisEntry['properties']['ObjectTypeId']['value'], null, null, null,
320   - 'urn:uuid:' . $cmisEntry['properties']['ObjectId']['value']);
321   -
322   - KT_cmis_atom_service_helper::createObjectEntry($feed, $cmisEntry, $folderName);
323   - // // <cmis:hasMoreItems>false</cmis:hasMoreItems>
324   - // // global $folderFeed;
325   - // // $outputs =
326   -
327   - return $feed;
328   - }
329   -
330 216 }
331 217  
332 218 /**
... ... @@ -335,24 +221,11 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
335 221 * Returns a list of supported object types
336 222 *
337 223 */
338   -class KT_cmis_atom_service_types extends KT_cmis_atom_service {
  224 +class KT_cmis_atom_service_types extends KT_atom_service {
339 225  
340 226 public function GET_action()
341 227 {
342 228 $RepositoryService = new RepositoryService();
343   -
344   -// try {
345   -// $RepositoryService->startSession(self::$authData['username'], self::$authData['password']);
346   -// }
347   -// catch (Exception $e)
348   -// {
349   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
350   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
351   -// $this->responseFeed = $feed;
352   -// return null;
353   -// }
354   -
355   - // fetch repository id
356 229 $repositories = $RepositoryService->getRepositories();
357 230 $repositoryId = $repositories[0]['repositoryId'];
358 231  
... ... @@ -372,23 +245,12 @@ class KT_cmis_atom_service_types extends KT_cmis_atom_service {
372 245 * Returns the type defintion for the selected type
373 246 *
374 247 */
375   -class KT_cmis_atom_service_type extends KT_cmis_atom_service {
  248 +class KT_cmis_atom_service_type extends KT_atom_service {
376 249  
377 250 public function GET_action()
378 251 {
379 252 $RepositoryService = new RepositoryService();
380 253  
381   -// try {
382   -// $RepositoryService->startSession(self::$authData['username'], self::$authData['password']);
383   -// }
384   -// catch (Exception $e)
385   -// {
386   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
387   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
388   -// $this->responseFeed = $feed;
389   -// return null;
390   -// }
391   -
392 254 // fetch repository id
393 255 $repositories = $RepositoryService->getRepositories();
394 256 $repositoryId = $repositories[0]['repositoryId'];
... ... @@ -425,14 +287,14 @@ class KT_cmis_atom_service_type extends KT_cmis_atom_service {
425 287 */
426 288 private function getTypeChildrenFeed()
427 289 {
428   - //Create a new response feed
429   - // $baseURI=NULL,$title=NULL,$link=NULL,$updated=NULL,$author=NULL,$id=NULL
430   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, 'Child Types of ' . ucwords($this->params[0]), null, null, null,
431   - $this->params[0] . '-children');
  290 + //Create a new response feed
  291 + // $baseURI=NULL,$title=NULL,$link=NULL,$updated=NULL,$author=NULL,$id=NULL
  292 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
432 293  
433   - // TODO actually fetch child types - to be implemented when we support child types in the API
  294 + $feed->newField('title', 'Child Types of ' . ucwords($this->params[0]), $feed);
  295 + $feed->newField('id', $this->params[0] . '-children', $feed);
434 296  
435   - // id
  297 + // TODO fetch child types - to be implemented when we support child types in the API
436 298  
437 299 // links
438 300 $link = $feed->newElement('link');
... ... @@ -446,24 +308,9 @@ class KT_cmis_atom_service_type extends KT_cmis_atom_service {
446 308 $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . 'type/' . $this->params[0] . '/' . $this->params[1] . '?pageNo=1&amp;pageSize=0'));
447 309 $link->appendChild($feed->newAttr('type', 'application/atom+xml;type=feed'));
448 310  
449   - // TODO actual dynamic listing, currently we have no objects with which to test
450   -
451   - // TODO
452   - // <updated>2009-06-23T13:40:32.786+02:00</updated>
453   - // <cmis:hasMoreItems>false</cmis:hasMoreItems>
454   -/*
455   - // TODO need to create this dynamically now, will no longer work with static output
456   - $output = '<?xml version="1.0" encoding="UTF-8"?>
457   - <feed xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200901">
458   - <id>urn:uuid:type-' . $type . '-children</id>
459   - <link rel="self" href="' . CMIS_APP_BASE_URI . 'type/document/children"/>
460   - <link rel="first" href="' . CMIS_APP_BASE_URI . 'type/document/children?pageNo=1&amp;pageSize=0&amp;guest=" type="application/atom+xml;type=feed"/>
461   - <link rel="last" href="' . CMIS_APP_BASE_URI . 'type/document/children?pageNo=1&amp;pageSize=0&amp;guest=" type="application/atom+xml;type=feed"/>
462   - <title>Child types of ' . $type . '</title>
463   - <updated>2009-06-23T13:40:32.786+02:00</updated>
464   - <cmis:hasMoreItems>false</cmis:hasMoreItems>
465   - </feed>';
466   -*/
  311 + $feed->newField('updated', KT_cmis_atom_service_helper::formatDatestamp(), $feed);
  312 + $feed->newField('cmis:hasMoreItems', 'false', $feed);
  313 +
467 314 return $feed;
468 315 }
469 316  
... ... @@ -476,31 +323,22 @@ class KT_cmis_atom_service_type extends KT_cmis_atom_service {
476 323 *
477 324 */
478 325 // NOTE this is always an empty document, underlying API code still to be implemented
479   -class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
  326 +class KT_cmis_atom_service_checkedout extends KT_atom_service {
480 327  
481 328 public function GET_action()
482 329 {
483 330 $RepositoryService = new RepositoryService();
484 331 $NavigationService = new NavigationService(KT_cmis_atom_service_helper::getKt());
485 332  
486   -// try {
487   -// $NavigationService->startSession(self::$authData['username'], self::$authData['password']);
488   -// }
489   -// catch (Exception $e)
490   -// {
491   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
492   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
493   -// $this->responseFeed = $feed;
494   -// return null;
495   -// }
496   -
497 333 $repositories = $RepositoryService->getRepositories();
498 334 $repositoryId = $repositories[0]['repositoryId'];
499 335  
500 336 $checkedout = $NavigationService->getCheckedoutDocs($repositoryId);
501 337  
502 338 //Create a new response feed
503   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, 'Checked out Documents');
  339 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  340 +
  341 + $feed->newField('title', 'Checked out Documents', $feed);
504 342  
505 343 // TODO dynamic?
506 344 $feedElement = $feed->newField('author');
... ... @@ -546,40 +384,28 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
546 384 * Returns detail on a particular document
547 385 *
548 386 */
549   -class KT_cmis_atom_service_document extends KT_cmis_atom_service {
  387 +class KT_cmis_atom_service_document extends KT_atom_service {
550 388  
551 389 public function GET_action()
552 390 {
553 391 $RepositoryService = new RepositoryService();
554 392 $ObjectService = new ObjectService(KT_cmis_atom_service_helper::getKt());
555 393  
556   -// try {
557   -// $ObjectService->startSession(self::$authData['username'], self::$authData['password']);
558   -// }
559   -// catch (Exception $e)
560   -// {
561   -// $this->headers[] = 'WWW-Authenticate: Basic realm="KnowledgeTree Secure Area"';
562   -// $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_NOT_AUTHENTICATED, $e->getMessage());
563   -// $this->responseFeed = $feed;
564   -// return null;
565   -// }
566   -
567 394 $repositories = $RepositoryService->getRepositories();
568 395 $repositoryId = $repositories[0]['repositoryId'];
569 396  
570 397 $cmisEntry = $ObjectService->getProperties($repositoryId, $this->params[0], false, false);
571 398  
572 399 //Create a new response feed
573   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $cmisEntry['properties']['ObjectTypeId']['value'], null, null, null,
574   - 'urn:uuid:' . $cmisEntry['properties']['ObjectId']['value']);
  400 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  401 +
  402 + $feed->newField('title', $cmisEntry['properties']['ObjectTypeId']['value'], $feed);
  403 + $feed->newField('id', 'urn:uuid:' . $cmisEntry['properties']['ObjectId']['value'], $feed); ;
575 404  
576 405 KT_cmis_atom_service_helper::createObjectEntry($feed, $cmisEntry, $cmisEntry['properties']['ParentId']['value']);
577 406  
578 407 // <cmis:hasMoreItems>false</cmis:hasMoreItems>
579 408  
580   - // global $docFeed;
581   - // $output = $docFeed;
582   -
583 409 //Expose the responseFeed
584 410 $this->responseFeed=$feed;
585 411 }
... ...
webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
... ... @@ -5,104 +5,117 @@ class KT_cmis_atom_service_helper {
5 5 protected static $kt = null;
6 6  
7 7 /**
  8 + * Retrieves data about a specific folder OR document within a folder
  9 + *
  10 + * @param object $ObjectService The CMIS service
  11 + * @param string $repositoryId
  12 + * @param string $folderId
  13 + * @return string CMIS AtomPub feed
  14 + */
  15 + static public function getObjectFeed($ObjectService, $repositoryId, $objectId, $method = 'GET')
  16 + {
  17 + $cmisEntry = $ObjectService->getProperties($repositoryId, $objectId, false, false);
  18 +
  19 + if ($method == 'GET') {
  20 + $response = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  21 + $response->newField('title', $cmisEntry['properties']['ObjectTypeId']['value'], $response);
  22 + $response->newField('id', 'urn:uuid:' . $cmisEntry['properties']['ObjectId']['value'], $response);
  23 + }
  24 + else if ($method == 'POST') {
  25 + $response = new KT_cmis_atom_response_POST(CMIS_APP_BASE_URI);
  26 + }
  27 +
  28 + KT_cmis_atom_service_helper::createObjectEntry($response, $cmisEntry, $folderName);
  29 +
  30 + if ($method == 'GET') {
  31 + $response->newField('cmis:hasMoreItems', 'false', $response);
  32 + }
  33 +
  34 + return $response;
  35 + }
  36 +
  37 + /**
8 38 * Creates an AtomPub entry for a CMIS entry and adds it to the supplied feed
9 39 *
10 40 * @param object $feed The feed to which we add the entry
11 41 * @param array $cmisEntry The entry data
12 42 * @param string $parent The parent folder
13 43 */
14   - static public function createObjectEntry(&$feed, $cmisEntry, $parent, $path)
  44 + static public function createObjectEntry(&$response, $cmisEntry, $parent, $method = 'POST')
15 45 {
  46 + $workspace = $response->getWorkspace();
  47 +
16 48 // create entry
17   - $entry = $feed->newEntry();
  49 + $entry = $response->newEntry();
  50 +
  51 + if ($method == 'POST')
  52 + {
  53 + // append attributes
  54 + $entry->appendChild($response->newAttr('xmlns', 'http://www.w3.org/2005/Atom'));
  55 + $entry->appendChild($response->newAttr('xmlns:app', 'http://www.w3.org/2007/app'));
  56 + $entry->appendChild($response->newAttr('xmlns:cmis', 'http://docs.oasis-open.org/ns/cmis/core/200901'));
  57 + }
18 58  
19 59 // TODO dynamic actual creator name
20   - $feedElement = $feed->newField('author');
21   - $element = $feed->newField('name', 'admin', $feedElement);
22   - $entry->appendChild($feedElement);
  60 + $responseElement = $response->newField('author');
  61 + $element = $response->newField('name', 'admin', $responseElement);
  62 + $entry->appendChild($responseElement);
23 63  
24 64 // content & id tags
25 65 $id = $cmisEntry['properties']['ObjectId']['value'];
26   - $entry->appendChild($feed->newField('content', $id));
27   - $feed->newField('id', 'urn:uuid:' . $id, $entry);
28   -
29   - // links
30   - /*
31   -<link rel="allowableactions" href="http://127.0.0.1:8080/alfresco/service/api/node/workspace/SpacesStore/66f02c27-379e-4782-a0c4-b12f2d5bc543/permissions"/>
32   -<link rel="relationships" href="http://127.0.0.1:8080/alfresco/service/api/node/workspace/SpacesStore/66f02c27-379e-4782-a0c4-b12f2d5bc543/rels"/>
33   -<link rel="parents" href="http://127.0.0.1:8080/alfresco/service/api/node/workspace/SpacesStore/66f02c27-379e-4782-a0c4-b12f2d5bc543/parent"/>
34   -
35   - */
36   - //
37   -
38   - /*
39   -<cmis:propertyUri cmis:name="Uri"/>
40   -<cmis:propertyId cmis:name="AllowedChildObjectTypeIds"/>
41   -<cmis:propertyString cmis:name="CreatedBy"><cmis:value>System</cmis:value></cmis:propertyString>
42   -<cmis:propertyDateTime cmis:name="CreationDate"><cmis:value>2009-07-13T13:59:20.724+02:00</cmis:value></cmis:propertyDateTime>
43   -<cmis:propertyString cmis:name="ChangeToken"/>
44   -<cmis:propertyString cmis:name="LastModifiedBy"><cmis:value>System</cmis:value></cmis:propertyString>
45   -<cmis:propertyId cmis:name="ObjectTypeId"><cmis:value>folder</cmis:value></cmis:propertyId>
46   -
47   -<cmis:propertyId cmis:name="ObjectId"><cmis:value>workspace://SpacesStore/b30ea6e5-1e3f-4133-82f4-172bc240a9a2</cmis:value></cmis:propertyId>
48   - */
  66 + $entry->appendChild($response->newField('content', $id));
  67 + $response->newField('id', 'urn:uuid:' . $id, $entry);
49 68  
50 69 $type = strtolower($cmisEntry['properties']['ObjectTypeId']['value']);
51 70  
52   - $link = $feed->newElement('link');
53   - $link->appendChild($feed->newAttr('rel','self'));
54   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ObjectId']['value']));
  71 + // links
  72 + $link = $response->newElement('link');
  73 + $link->appendChild($response->newAttr('rel','self'));
  74 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ObjectId']['value']));
55 75 $entry->appendChild($link);
56 76  
57   - $link = $feed->newElement('link');
58   - $link->appendChild($feed->newAttr('rel','edit'));
59   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ObjectId']['value']));
  77 + $link = $response->newElement('link');
  78 + $link->appendChild($response->newAttr('rel','edit'));
  79 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ObjectId']['value']));
60 80 $entry->appendChild($link);
61 81  
62 82 // according to spec this MUST be present, but spec says that links for function which are not supported
63 83 // do not need to be present, so unsure for the moment
64   - $link = $feed->newElement('link');
65   - $link->appendChild($feed->newAttr('rel', 'allowableactions'));
66   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/'
  84 + $link = $response->newElement('link');
  85 + $link->appendChild($response->newAttr('rel', 'allowableactions'));
  86 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/'
67 87 . $cmisEntry['properties']['ObjectId']['value'] . '/permissions'));
68 88 $entry->appendChild($link);
69 89  
70 90 // according to spec this MUST be present, but spec says that links for function which are not supported
71 91 // do not need to be present, so unsure for the moment
72   - $link = $feed->newElement('link');
73   - $link->appendChild($feed->newAttr('rel', 'relationships'));
74   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/'
  92 + $link = $response->newElement('link');
  93 + $link->appendChild($response->newAttr('rel', 'relationships'));
  94 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/'
75 95 . $cmisEntry['properties']['ObjectId']['value'] . '/rels'));
76 96 $entry->appendChild($link);
77 97  
78 98 // TODO check parent link is correct, fix if needed
79 99 // TODO leave out if at root folder
80   - $link = $feed->newElement('link');
81   - $link->appendChild($feed->newAttr('rel', 'parents'));
82   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/folder/'
  100 + $link = $response->newElement('link');
  101 + $link->appendChild($response->newAttr('rel', 'parents'));
  102 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/folder/'
83 103 . $cmisEntry['properties']['ObjectId']['value'] . '/parent'));
84 104 $entry->appendChild($link);
85 105  
86 106 // Folder/Document specific links
87 107 if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'folder')
88 108 {
89   - // no longer valid, remove...
90   -// // TODO check parent link is correct, fix if needed
91   -// $link = $feed->newElement('link');
92   -// $link->appendChild($feed->newAttr('rel','folderparent'));
93   -// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/folder/' . $cmisEntry['properties']['ParentId']['value']));
94   -// $entry->appendChild($link);
95   -
96   - $link = $feed->newElement('link');
97   - $link->appendChild($feed->newAttr('rel','children'));
98   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/'
  109 + $link = $response->newElement('link');
  110 + $link->appendChild($response->newAttr('rel','children'));
  111 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/'
99 112 . $type
100 113 . '/' . $cmisEntry['properties']['ObjectId']['value']
101 114 . '/children'));
102 115 $entry->appendChild($link);
103   - $link = $feed->newElement('link');
104   - $link->appendChild($feed->newAttr('rel','descendants'));
105   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/'
  116 + $link = $response->newElement('link');
  117 + $link->appendChild($response->newAttr('rel','descendants'));
  118 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/'
106 119 . $type
107 120 . '/' . $cmisEntry['properties']['ObjectId']['value']
108 121 . '/descendants'));
... ... @@ -112,25 +125,25 @@ class KT_cmis_atom_service_helper {
112 125 {
113 126 // according to spec this MUST be present, but spec says that links for function which are not supported
114 127 // do not need to be present, so unsure for the moment
115   -// $link = $feed->newElement('link');
116   -// $link->appendChild($feed->newAttr('rel', 'allversions'));
117   -// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
  128 +// $link = $response->newElement('link');
  129 +// $link->appendChild($response->newAttr('rel', 'allversions'));
  130 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
118 131 // $entry->appendChild($link);
119 132  
120 133 // according to spec this MUST be present, but spec says that links for function which are not supported
121 134 // do not need to be present, so unsure for the moment
122   -// $link = $feed->newElement('link');
123   -// $link->appendChild($feed->newAttr('rel', 'latestversion'));
124   -// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
  135 +// $link = $response->newElement('link');
  136 +// $link->appendChild($response->newAttr('rel', 'latestversion'));
  137 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
125 138 // $entry->appendChild($link);
126 139  
127 140 // if there is a content stream, this link MUST be present
128 141 // not sure yet where it must point...
129 142 if (!empty($cmisEntry['properties']['ContentStreamLength']['value']))
130 143 {
131   - $link = $feed->newElement('link');
132   - $link->appendChild($feed->newAttr('rel', 'stream'));
133   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/'
  144 + $link = $response->newElement('link');
  145 + $link->appendChild($response->newAttr('rel', 'stream'));
  146 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/'
134 147 . $cmisEntry['properties']['ObjectId']['value']));
135 148 $entry->appendChild($link);
136 149 }
... ... @@ -138,47 +151,47 @@ class KT_cmis_atom_service_helper {
138 151 // if the document is checked out and this is NOT the PWC, this link MUST be present
139 152 // if (!empty($cmisEntry['properties']['ContentStreamLength']['value']))
140 153 // {
141   -// $link = $feed->newElement('link');
142   -// $link->appendChild($feed->newAttr('rel', 'stream'));
143   -// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
  154 +// $link = $response->newElement('link');
  155 +// $link->appendChild($response->newAttr('rel', 'stream'));
  156 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
144 157 // $entry->appendChild($link);
145 158 // }
146 159 }
147 160  
148   - $link = $feed->newElement('link');
149   - $link->appendChild($feed->newAttr('rel','type'));
150   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/type/' . $type));
  161 + $link = $response->newElement('link');
  162 + $link->appendChild($response->newAttr('rel','type'));
  163 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/type/' . $type));
151 164 $entry->appendChild($link);
152 165  
153   - $link = $feed->newElement('link');
154   - $link->appendChild($feed->newAttr('rel','repository'));
155   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . '/servicedocument'));
  166 + $link = $response->newElement('link');
  167 + $link->appendChild($response->newAttr('rel','repository'));
  168 + $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . '/servicedocument'));
156 169 $entry->appendChild($link);
157 170  
158 171 // according to spec this MUST be present, but spec says that links for function which are not supported
159 172 // do not need to be present, so unsure for the moment - policies are being abandoned, or so I thought...
160   -// $link = $feed->newElement('link');
161   -// $link->appendChild($feed->newAttr('rel', 'policies'));
162   -// $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
  173 +// $link = $response->newElement('link');
  174 +// $link->appendChild($response->newAttr('rel', 'policies'));
  175 +// $link->appendChild($response->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/' . $type . '/' . $cmisEntry['properties']['ParentId']['value']));
163 176 // $entry->appendChild($link);
164 177 // end links
165 178  
166 179 // TODO proper date
167   - $entry->appendChild($feed->newField('published', self::formatDatestamp()));
168   - $entry->appendChild($feed->newElement('summary', $cmisEntry['properties']['Name']['value']));
169   - $entry->appendChild($feed->newElement('title', $cmisEntry['properties']['Name']['value']));
170   - $entry->appendChild($feed->newField('updated', self::formatDatestamp()));
  180 + $entry->appendChild($response->newField('published', self::formatDatestamp()));
  181 + $entry->appendChild($response->newElement('summary', $cmisEntry['properties']['Name']['value']));
  182 + $entry->appendChild($response->newElement('title', $cmisEntry['properties']['Name']['value']));
  183 + $entry->appendChild($response->newField('updated', self::formatDatestamp()));
171 184  
172 185 // main CMIS entry
173   - $objectElement = $feed->newElement('cmis:object');
174   - $propertiesElement = $feed->newElement('cmis:properties');
  186 + $objectElement = $response->newElement('cmis:object');
  187 + $propertiesElement = $response->newElement('cmis:properties');
175 188  
176 189 foreach($cmisEntry['properties'] as $propertyName => $property)
177 190 {
178   - $propElement = $feed->newElement('cmis:' . $property['type']);
179   - $propElement->appendChild($feed->newAttr('cmis:name', $propertyName));
  191 + $propElement = $response->newElement('cmis:' . $property['type']);
  192 + $propElement->appendChild($response->newAttr('cmis:name', $propertyName));
180 193 if (!empty($property['value'])) {
181   - $feed->newField('cmis:value', CMISUtil::boolToString($property['value']), $propElement);
  194 + $response->newField('cmis:value', CMISUtil::boolToString($property['value']), $propElement);
182 195 }
183 196 $propertiesElement->appendChild($propElement);
184 197 }
... ... @@ -187,7 +200,11 @@ class KT_cmis_atom_service_helper {
187 200 $entry->appendChild($objectElement);
188 201  
189 202 // after every entry, append a cmis:terminator tag
190   - $entry->appendChild($feed->newElement('cmis:terminator'));
  203 + $entry->appendChild($response->newElement('cmis:terminator'));
  204 +
  205 + if ($method == 'POST') {
  206 + $entry->appendChild($response->newElement('app:edited', self::formatDatestamp()));
  207 + }
191 208 }
192 209  
193 210 /**
... ... @@ -216,7 +233,11 @@ class KT_cmis_atom_service_helper {
216 233 }
217 234  
218 235 //Create a new response feed
219   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, $typesHeading, null, null, null, 'urn:uuid:' . $typesString);
  236 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  237 + $workspace = $feed->getWorkspace();
  238 +
  239 + $feed->newField('title', $typesHeading, $feed);
  240 + $feed->newField('id', 'urn:uuid:' . $typesString, $feed);
220 241  
221 242 // TODO set page number correctly - to be done when we support paging the the API
222 243  
... ... @@ -234,7 +255,7 @@ class KT_cmis_atom_service_helper {
234 255 /*
235 256 $link = $feed->newElement('link');
236 257 $link->appendChild($feed->newAttr('rel','source'));
237   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/type/' . strtolower($type['typeId'])));
  258 + $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/type/' . strtolower($type['typeId'])));
238 259 $feed->appendChild($link);
239 260 */
240 261  
... ... @@ -251,11 +272,7 @@ class KT_cmis_atom_service_helper {
251 272 $feedElement = $feed->newField('content', $type['typeId']);
252 273 $entry->appendChild($feedElement);
253 274  
254   - // hack, force to lower case
255   - $type['typeId'] = strtolower($type['typeId']);
256   -
257   - // NOTE should this be strtolower? thought so but maybe not always, Alfresco is not consistent...
258   - $feed->newId('urn:uuid:type-' . strtolower($type['typeId']), $entry);
  275 + $feed->newField('id', 'urn:uuid:type-' . $type['typeId'], $feed);
259 276  
260 277 // TODO add parents link when not selecting a base type.
261 278 // TODO add children link when type has children
... ... @@ -265,14 +282,14 @@ class KT_cmis_atom_service_helper {
265 282 // links
266 283 $link = $feed->newElement('link');
267 284 $link->appendChild($feed->newAttr('rel','self'));
268   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/type/' . strtolower($type['typeId'])));
  285 + $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/type/' . strtolower($type['typeId'])));
269 286 $entry->appendChild($link);
270 287 // TODO type link MUST point to base type
271 288 // KnowledgeTree currently only supports base types so this is not important
272 289 // at the present time as it will always point at the base type.
273 290 $link = $feed->newElement('link');
274 291 $link->appendChild($feed->newAttr('rel','type'));
275   - $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $feed->workspace . '/type/' . strtolower($type['typeId'])));
  292 + $link->appendChild($feed->newAttr('href', CMIS_APP_BASE_URI . $workspace . '/type/' . strtolower($type['typeId'])));
276 293 $entry->appendChild($link);
277 294 $link = $feed->newElement('link');
278 295 $link->appendChild($feed->newAttr('rel','repository'));
... ... @@ -302,7 +319,9 @@ class KT_cmis_atom_service_helper {
302 319 static public function getErrorFeed(&$service, $status, $message)
303 320 {
304 321 $service->setStatus($status);
305   - $feed = new KT_cmis_atom_responseFeed(CMIS_APP_BASE_URI, 'Error: ' . $status);
  322 + $feed = new KT_cmis_atom_responseFeed_GET(CMIS_APP_BASE_URI);
  323 +
  324 + $feed->newField('title', 'Error: ' . $status, $feed);
306 325 $entry = $feed->newEntry();
307 326 $feed->newField('error', $message, $entry);
308 327  
... ...
webservice/atompub/cmis/index.php
... ... @@ -55,8 +55,9 @@ define(&#39;CMIS_ATOM_LIB_FOLDER&#39;, trim(KT_ATOM_LIB_FOLDER, &#39;/&#39;) . &#39;/cmis/&#39;);
55 55 * Includes
56 56 */
57 57 include_once(KT_ATOM_LIB_FOLDER.'XMLns2array.inc.php');
  58 +include_once(KT_ATOM_LIB_FOLDER.'KT_atom_baseDoc.inc.php');
58 59 include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_server.inc.php');
59   -include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_baseDoc.inc.php');
  60 +include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_response.inc.php'); //Containing the response feed class allowing easy atom feed generation
60 61 include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_responseFeed.inc.php'); //Containing the response feed class allowing easy atom feed generation
61 62 include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_serviceDoc.inc.php'); //Containing the servicedoc class allowing easy ServiceDocument generation
62 63 include_once(CMIS_ATOM_LIB_FOLDER.'KT_cmis_atom_service.inc.php'); //Containing the servicedoc class allowing easy ServiceDocument generation
... ...
webservice/classes/atompub/cmis/KT_cmis_atom_response.inc.php 0 → 100644
  1 +<?php
  2 +
  3 +include_once(KT_ATOM_LIB_FOLDER.'KT_atom_response.inc.php');
  4 +
  5 +class KT_cmis_atom_response extends KT_atom_response {
  6 +
  7 + static protected $workspace = null;
  8 +
  9 + public function __construct($baseURI = null)
  10 + {
  11 + parent::__construct();
  12 +
  13 + // require the workspace for creating links within responses
  14 + $queryArray = split('/', trim($_SERVER['QUERY_STRING'], '/'));
  15 + $this->workspace = strtolower(trim($queryArray[0]));
  16 + }
  17 +
  18 + function getWorkspace()
  19 + {
  20 + return $this->workspace;
  21 + }
  22 +
  23 + // TODO try to get rid of this function
  24 + function appendChild($element)
  25 + {
  26 + $this->feed->appendChild($element);
  27 + }
  28 +
  29 +}
  30 +
  31 +class KT_cmis_atom_Response_GET extends KT_cmis_atom_response{}
  32 +class KT_cmis_atom_Response_PUT extends KT_cmis_atom_response{}
  33 +class KT_cmis_atom_Response_POST extends KT_cmis_atom_response{}
  34 +class KT_cmis_atom_Response_DELETE extends KT_cmis_atom_response{}
  35 +
  36 +?>
0 37 \ No newline at end of file
... ...
webservice/classes/atompub/cmis/KT_cmis_atom_responseFeed.inc.php
... ... @@ -5,27 +5,42 @@ include_once(KT_ATOM_LIB_FOLDER.&#39;KT_atom_responseFeed.inc.php&#39;);
5 5 class KT_cmis_atom_responseFeed extends KT_atom_responseFeed {
6 6  
7 7 // override and extend as needed
8   -
9   - public $workspace = null;
10 8  
11   - public function __construct($baseURI = NULL, $title = NULL, $link = NULL, $updated = NULL, $author = NULL, $id = NULL)
  9 + static protected $workspace = null;
  10 +
  11 + /**
  12 + * Overridden constructor to allow easy adding of additional header attributes
  13 + *
  14 + * @param string $baseURI
  15 + */
  16 + public function __construct($baseURI = null)
12 17 {
  18 + parent::__construct($baseURI);
  19 +
  20 + // append additional tags
  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/200901'));
  23 +
  24 + // require the workspace for creating links within responses
13 25 $queryArray = split('/', trim($_SERVER['QUERY_STRING'], '/'));
14 26 $this->workspace = strtolower(trim($queryArray[0]));
15   - $this->id = $id;
16   - $this->title = $title;
17   -
18   - parent::__construct($baseURI, $title, $link, $updated, $author, $id);
19 27 }
20 28  
21   - protected function constructHeader()
  29 + function getWorkspace()
22 30 {
23   - $feed = $this->newElement('feed');
24   - $feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2005/Atom'));
25   - $feed->appendChild($this->newAttr('xmlns:app','http://www.w3.org/2007/app'));
26   - $feed->appendChild($this->newAttr('xmlns:cmis','http://docs.oasis-open.org/ns/cmis/core/200901'));
27   - $this->feed = &$feed;
  31 + return $this->workspace;
  32 + }
28 33  
  34 + // TODO try to get rid of this function
  35 + function appendChild($element)
  36 + {
  37 + $this->feed->appendChild($element);
  38 + }
  39 +
  40 + // this is ALL going away...adjust all calling code...
  41 + /*
  42 + protected function constructHeader()
  43 + {
29 44 if (!is_null($this->id))
30 45 {
31 46 $this->newId($this->id, $this->feed);
... ... @@ -67,43 +82,8 @@ class KT_cmis_atom_responseFeed extends KT_atom_responseFeed {
67 82  
68 83 return $field;
69 84 }
70   -
71   - function appendChild($element)
72   - {
73   - $this->feed->appendChild($element);
74   - }
75   -
76   - /*
77   - public function &newEntry()
78   - {
79   - $entry = $this->newElement('entry');
80   - $this->feed->appendChild($entry);
81   - return $entry;
82   - }
83   -
84   - public function &newId($id, $entry = null)
85   - {
86   - $id = $this->newElement('id', $id);
87   - if(isset($entry))$entry->appendChild($id);
88   - return $id;
89   - }
90   -
91   - public function &newField($name = NULL, $value = NULL, &$entry = NULL)
92   - {
93   - $append = false;
94   -
95   - if(func_num_args() > 3)
96   - {
97   - $append = ((func_get_arg(3) === true) ? true : false);
98   - }
99   -
100   - $field = $this->newElement('cmis:' . $name,$value);
101   -
102   - if (isset($entry)) $entry->appendChild($field);
103   - else if ($append) $this->feed->appendChild($field);
104   -
105   - return $field;
106   - }
  85 +\
  86 + *
107 87 */
108 88  
109 89 }
... ...
webservice/classes/atompub/cmis/KT_cmis_atom_server.inc.php
... ... @@ -120,26 +120,6 @@ class KT_cmis_atom_server extends KT_atom_server {
120 120 return false;
121 121 }
122 122  
123   -// // TODO we probably want this version in the base class for auth purposes
124   -// public function render()
125   -// {
126   -// ob_end_clean();
127   -//// // possible additional headers, e.g. basic auth request
128   -//// // FIXME this won't work with the service document as no service object exists
129   -//// if (!is_null($this->serviceObject))
130   -//// {
131   -//// $headers = $this->serviceObject->getHeaders();
132   -//// foreach ($headers as $header)
133   -//// {
134   -//// header($header);
135   -//// }
136   -//// }
137   -//
138   -// // TODO header: application/atom+xml for service doc? is how Alfresco does it but is it needed?
139   -// header('Content-type: text/xml');
140   -// echo $this->output;
141   -// }
142   -
143 123 }
144 124  
145 125 ?>
146 126 \ No newline at end of file
... ...
webservice/classes/atompub/cmis/KT_cmis_atom_service.inc.php
... ... @@ -6,26 +6,5 @@ class KT_cmis_atom_service extends KT_atom_service {
6 6  
7 7 // override and extend as needed
8 8  
9   - static protected $authData = array();
10   -
11   - protected function parseHeaders()
12   - {
13   - parent::parseHeaders();
14   - // attempt to fetch auth info from supplied headers
15   - if (!empty($this->headers['Authorization']))
16   - {
17   - $auth = base64_decode(preg_replace('/Basic */', '', $this->headers['Authorization']));
18   - $authData = explode(':', $auth);
19   - self::$authData['username'] = $authData[0];
20   - self::$authData['password'] = $authData[1];
21   - }
22   - // if failed, attempt to fetch from $_SERVER array instead
23   - else if (isset($_SERVER['PHP_AUTH_USER']))
24   - {
25   - self::$authData['username'] = $_SERVER['PHP_AUTH_USER'];
26   - self::$authData['password'] = $_SERVER['PHP_AUTH_PW'];
27   - }
28   - }
29   -
30 9 }
31 10 ?>
32 11 \ No newline at end of file
... ...