VersioningService.inc.php
3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
require_once KT_LIB_DIR . '/api/ktcmis/ktcmis.inc.php';
/**
* CMIS Service class which hooks into the KnowledgeTree interface
* for processing of CMIS queries and responses via atompub/webservices
*/
class VersioningService extends KTVersioningService {
/**
* Deletes all Document Objects in the specified Version Series, including the Private Working Copy
*
* @param string $repositoryId
* @param string $versionSeriesId
* @return boolean true if successful
*/
public function deleteAllVersions($repositoryId, $versionSeriesId)
{
$result = parent::deleteAllVersions($repositoryId, $versionSeriesId);
if ($result['status_code'] == 0) {
return $result['results'];
}
else {
return new PEAR_Error($result['message']);
}
}
/**
* Checks out a document and creates the PWC (Private Working Copy) which will represent the checked out document
*
* @param string $repositoryId
* @param string $documentId
* @param string $changeToken [optional]
* @return array results
*/
// TODO set up delivery of content stream? or is that up to the CMIS client?
public function checkOut($repositoryId, $documentId, $changeToken = '')
{
$result = parent::checkOut($repositoryId, $documentId, $changeToken);
if ($result['status_code'] == 0) {
return $result['results'];
}
else {
return new PEAR_Error($result['message']);
}
}
/**
* Reverses the effect of a checkout: I.E. deletes the PWC (Private Working Copy) and re-sets the status of the document to "not checked out"
*
* @param string $repositoryId
* @param string $documentId
* @param string $changeToken [optional]
*/
// TODO exceptions:
// • ConstraintViolationException: The Repository SHALL throw this exception if ANY of the following conditions are met:
// o The Document’s Object-Type definition’s versionable attribute is FALSE.
// • updateConflictException
// • versioningException
public function cancelCheckOut($repositoryId, $documentId, $changeToken = '')
{
$result = parent::cancelCheckOut($repositoryId, $documentId, $changeToken);
if ($result['status_code'] == 0) {
return $result['results'];
}
else {
return new PEAR_Error($result['message']);
}
}
/**
* Checks in a checked out document
*
* @param string $repositoryId
* @param string $documentId
* @param boolean $major
* @param string $changeToken [optional]
* @param array $properties [optional]
* @param contentStream $contentStream [optional]
* @param string $checkinComment [optional]
* @return string $documentId
*/
public function checkIn($repositoryId, $documentId, $major, $contentStream = null, $changeToken = '', $properties = array(), $checkinComment = '')
{
$result = parent::checkIn($repositoryId, $documentId, $major, $contentStream, $changeToken, $properties, $checkinComment);
if ($result['status_code'] == 0) {
return $result['results'];
}
else {
return new PEAR_Error($result['message']);
}
}
}
?>