Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 139 |
|
0.00% |
0 / 23 |
CRAP | |
0.00% |
0 / 2 |
SeedDMS_Core_Transmittal | |
0.00% |
0 / 97 |
|
0.00% |
0 / 14 |
1406 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
2 | |||
getInstance | |
0.00% |
0 / 16 |
|
0.00% |
0 / 1 |
72 | |||
getAllInstances | |
0.00% |
0 / 14 |
|
0.00% |
0 / 1 |
30 | |||
setDMS | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getID | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getName | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
setName | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
6 | |||
getComment | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
setComment | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
6 | |||
getUser | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getItems | |
0.00% |
0 / 16 |
|
0.00% |
0 / 1 |
30 | |||
getSize | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
20 | |||
addContent | |
0.00% |
0 / 11 |
|
0.00% |
0 / 1 |
12 | |||
remove | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
SeedDMS_Core_TransmittalItem | |
0.00% |
0 / 42 |
|
0.00% |
0 / 9 |
306 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
getInstance | |
0.00% |
0 / 17 |
|
0.00% |
0 / 1 |
42 | |||
setDMS | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getID | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getTransmittal | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getContent | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getDate | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
remove | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
6 | |||
updateContent | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
12 |
1 | <?php |
2 | /** |
3 | * Implementation of the transmittal object in the document management system |
4 | * |
5 | * @category DMS |
6 | * @package SeedDMS_Core |
7 | * @license GPL 2 |
8 | * @version @version@ |
9 | * @author Uwe Steinmann <uwe@steinmann.cx> |
10 | * @copyright Copyright (C) 2002-2005 Markus Westphal, 2006-2008 Malcolm Cowe, |
11 | * 2010 Uwe Steinmann |
12 | * @version Release: @package_version@ |
13 | */ |
14 | |
15 | /** |
16 | * Class to represent a transmittal in the document management system |
17 | * |
18 | * @category DMS |
19 | * @package SeedDMS_Core |
20 | * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann <uwe@steinmann.cx> |
21 | * @copyright Copyright (C) 2002-2005 Markus Westphal, 2006-2008 Malcolm Cowe, |
22 | * 2010 Uwe Steinmann |
23 | * @version Release: @package_version@ |
24 | */ |
25 | class SeedDMS_Core_Transmittal { |
26 | /** |
27 | * @var integer id of transmittal |
28 | * |
29 | * @access protected |
30 | */ |
31 | var $_id; |
32 | |
33 | /** |
34 | * @var string name of transmittal |
35 | * |
36 | * @access protected |
37 | */ |
38 | var $_name; |
39 | |
40 | /** |
41 | * @var string comment of transmittal |
42 | * |
43 | * @access protected |
44 | */ |
45 | var $_comment; |
46 | |
47 | /** |
48 | * @var boolean true if transmittal is public |
49 | * |
50 | * @access protected |
51 | */ |
52 | var $_isPublic; |
53 | |
54 | /** |
55 | * @var object user this transmittal belongs to |
56 | * |
57 | * @access protected |
58 | */ |
59 | var $_user; |
60 | |
61 | /** |
62 | * @var object date of creation |
63 | * |
64 | * @access protected |
65 | */ |
66 | var $_date; |
67 | |
68 | /** |
69 | * @var object items |
70 | * |
71 | * @access protected |
72 | */ |
73 | var $_items; |
74 | |
75 | /** |
76 | * @var object reference to the dms instance this user belongs to |
77 | * |
78 | * @access protected |
79 | */ |
80 | var $_dms; |
81 | |
82 | function __construct($id, $user, $name, $comment, $isPublic=0, $date='') { |
83 | $this->_id = $id; |
84 | $this->_name = $name; |
85 | $this->_comment = $comment; |
86 | $this->_user = $user; |
87 | $this->_isPublic = $isPublic; |
88 | $this->_date = $date; |
89 | $this->_items = array(); |
90 | $this->_dms = null; |
91 | } |
92 | |
93 | /** |
94 | * Get an instance of a transmittal object |
95 | * |
96 | * @param string|integer $id id or name of transmittal, depending |
97 | * on the 3rd parameter. |
98 | * @param object $dms instance of dms |
99 | * @param string $by search by [id|name]. If this |
100 | * parameter is left empty, the user will be search by its Id. |
101 | * @return object instance of class SeedDMS_Core_Transmittal |
102 | */ |
103 | public static function getInstance($id, $dms, $by='') { /* {{{ */ |
104 | if(!$dms || get_class($dms) != 'SeedDMS_Core_DMS') |
105 | return false; |
106 | |
107 | $db = $dms->getDB(); |
108 | |
109 | switch($by) { |
110 | case 'name': |
111 | $queryStr = "SELECT * FROM `tblTransmittals` WHERE `name` = ".$db->qstr($id); |
112 | break; |
113 | default: |
114 | $queryStr = "SELECT * FROM `tblTransmittals` WHERE id = " . (int) $id; |
115 | } |
116 | |
117 | $resArr = $db->getResultArray($queryStr); |
118 | |
119 | if (is_bool($resArr) && $resArr == false) return false; |
120 | if (count($resArr) != 1) return false; |
121 | |
122 | $resArr = $resArr[0]; |
123 | |
124 | $uclassname = $dms->getClassname('user'); |
125 | $user = $uclassname::getInstance($resArr['userID'], $dms); |
126 | $transmittal = new self($resArr["id"], $user, $resArr["name"], $resArr["comment"], $resArr["public"], $resArr["date"]); |
127 | $transmittal->setDMS($dms); |
128 | return $transmittal; |
129 | } /* }}} */ |
130 | |
131 | /** |
132 | * Get all instances of a transmittal object |
133 | * |
134 | * @param string|integer $id id or name of transmittal, depending |
135 | * on the 3rd parameter. |
136 | * @param object $dms instance of dms |
137 | * @param string $by search by [id|name]. If this |
138 | * parameter is left empty, the user will be search by its Id. |
139 | * @return object instance of class SeedDMS_Core_Transmittal |
140 | */ |
141 | public static function getAllInstances($user, $orderby, $dms) { /* {{{ */ |
142 | $db = $dms->getDB(); |
143 | |
144 | $queryStr = "SELECT * FROM `tblTransmittals`"; |
145 | if($user) |
146 | $queryStr .= " WHERE `userID` = " . $user->getID(); |
147 | |
148 | $resArr = $db->getResultArray($queryStr); |
149 | |
150 | if (is_bool($resArr) && $resArr == false) return false; |
151 | |
152 | $uclassname = $dms->getClassname('user'); |
153 | $transmittals = array(); |
154 | foreach ($resArr as $res) { |
155 | $user = $uclassname::getInstance($res['userID'], $dms); |
156 | $transmittal = new self($res["id"], $user, $res["name"], $res["comment"], $res["public"], $res["date"]); |
157 | $transmittal->setDMS($dms); |
158 | $transmittals[] = $transmittal; |
159 | } |
160 | return $transmittals; |
161 | } /* }}} */ |
162 | |
163 | function setDMS($dms) { |
164 | $this->_dms = $dms; |
165 | } |
166 | |
167 | function getID() { return $this->_id; } |
168 | |
169 | function getName() { return $this->_name; } |
170 | |
171 | function setName($newName) { /* {{{ */ |
172 | $db = $this->_dms->getDB(); |
173 | |
174 | $queryStr = "UPDATE `tblTransmittals` SET `name` =".$db->qstr($newName)." WHERE `id` = " . $this->_id; |
175 | $res = $db->getResult($queryStr); |
176 | if (!$res) |
177 | return false; |
178 | |
179 | $this->_name = $newName; |
180 | return true; |
181 | } /* }}} */ |
182 | |
183 | function getComment() { return $this->_comment; } |
184 | |
185 | function setComment($newComment) { /* {{{ */ |
186 | $db = $this->_dms->getDB(); |
187 | |
188 | $queryStr = "UPDATE `tblTransmittals` SET `comment` =".$db->qstr($newComment)." WHERE `id` = " . $this->_id; |
189 | $res = $db->getResult($queryStr); |
190 | if (!$res) |
191 | return false; |
192 | |
193 | $this->_comment = $newComment; |
194 | return true; |
195 | } /* }}} */ |
196 | |
197 | function getUser() { return $this->_user; } |
198 | |
199 | function getItems() { /* {{{ */ |
200 | $db = $this->_dms->getDB(); |
201 | |
202 | if (!$this->_items) { |
203 | $queryStr = "SELECT `tblTransmittalItems`.* FROM `tblTransmittalItems` ". |
204 | "LEFT JOIN `tblDocuments` ON `tblTransmittalItems`.`document`=`tblDocuments`.`id` ". |
205 | "WHERE `tblTransmittalItems`.`transmittal` = '". $this->_id ."'"; |
206 | $resArr = $db->getResultArray($queryStr); |
207 | if (is_bool($resArr) && $resArr == false) |
208 | return false; |
209 | |
210 | $this->_users = array(); |
211 | |
212 | $classname = $this->_dms->getClassname('transmittalitem'); |
213 | foreach ($resArr as $row) { |
214 | $document = $this->_dms->getDocument($row['document']); |
215 | $content = $document->getContentByVersion($row['version']); |
216 | $item = new $classname($row["id"], $this, $content, $row["date"]); |
217 | array_push($this->_items, $item); |
218 | } |
219 | } |
220 | return $this->_items; |
221 | } /* }}} */ |
222 | |
223 | function getSize() { /* {{{ */ |
224 | $db = $this->_dms->getDB(); |
225 | |
226 | if (!$this->_items) { |
227 | self::getItems(); |
228 | } |
229 | |
230 | $size = 0; |
231 | foreach ($this->_items as $item) { |
232 | if($content = $item->getContent()) { |
233 | $size += $content->getFileSize(); |
234 | } |
235 | } |
236 | return $size; |
237 | } /* }}} */ |
238 | |
239 | /** |
240 | * Add an item to the transmittal |
241 | * |
242 | * @param object $item instance of SeedDMS_Core_DocumentContent |
243 | * @return boolean true if item could be added, otherwise false |
244 | */ |
245 | function addContent($item) { /* {{{ */ |
246 | $db = $this->_dms->getDB(); |
247 | |
248 | if(get_class($item) != $this->_dms->getClassname('documentcontent')) |
249 | return false; |
250 | |
251 | $document = $item->getDocument(); |
252 | $queryStr = "INSERT INTO `tblTransmittalItems` (`transmittal`, `document`, `version`, `date`) ". |
253 | "VALUES ('". $this->_id ."', ".$document->getID().", ".$item->getVersion().", ".$db->getCurrentDatetime().")"; |
254 | $res=$db->getResult($queryStr); |
255 | if(!$res) { |
256 | return false; |
257 | } |
258 | $itemID = $db->getInsertID('tblTransmittalItems'); |
259 | |
260 | return SeedDMS_Core_TransmittalItem::getInstance($itemID, $this->_dms); |
261 | } /* }}} */ |
262 | |
263 | function remove() { /* {{{ */ |
264 | $db = $this->_dms->getDB(); |
265 | |
266 | $queryStr = "DELETE FROM `tblTransmittals` WHERE `id` = " . $this->_id; |
267 | if (!$db->getResult($queryStr)) { |
268 | return false; |
269 | } |
270 | |
271 | return true; |
272 | } /* }}} */ |
273 | |
274 | } |
275 | |
276 | /** |
277 | * Class to represent a transmittal in the document management system |
278 | * |
279 | * @category DMS |
280 | * @package SeedDMS_Core |
281 | * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann <uwe@steinmann.cx> |
282 | * @copyright Copyright (C) 2002-2005 Markus Westphal, 2006-2008 Malcolm Cowe, |
283 | * 2010 Uwe Steinmann |
284 | * @version Release: @package_version@ |
285 | */ |
286 | class SeedDMS_Core_TransmittalItem { |
287 | /** |
288 | * @var integer id of transmittal item |
289 | * |
290 | * @access protected |
291 | */ |
292 | var $_id; |
293 | |
294 | /** |
295 | * @var object document content |
296 | * |
297 | * @access protected |
298 | */ |
299 | var $_content; |
300 | |
301 | /** |
302 | * @var object transmittal |
303 | * |
304 | * @access protected |
305 | */ |
306 | var $_transmittal; |
307 | |
308 | /** |
309 | * @var object date of creation |
310 | * |
311 | * @access protected |
312 | */ |
313 | var $_date; |
314 | |
315 | function __construct($id, $transmittal, $content, $date='') { |
316 | $this->_id = $id; |
317 | $this->_transmittal = $transmittal; |
318 | $this->_content = $content; |
319 | $this->_date = $date; |
320 | $this->_dms = null; |
321 | } |
322 | |
323 | public static function getInstance($id, $dms) { /* {{{ */ |
324 | if(!$dms || get_class($dms) != 'SeedDMS_Core_DMS') |
325 | return false; |
326 | |
327 | $db = $dms->getDB(); |
328 | |
329 | $queryStr = "SELECT * FROM `tblTransmittalItems` WHERE `id` = " . (int) $id; |
330 | $resArr = $db->getResultArray($queryStr); |
331 | if (is_bool($resArr) && $resArr == false) |
332 | return false; |
333 | if (count($resArr) != 1) |
334 | return false; |
335 | $resArr = $resArr[0]; |
336 | |
337 | $transmittal = SeedDMS_Core_Transmittal::getInstance($resArr['transmittal'], $dms); |
338 | $dclassname = $dms->getClassname('document'); |
339 | $document = $dclassname::getInstance($resArr['document'], $dms); |
340 | $content = $document->getContentByVersion((int) $resArr['version']); |
341 | |
342 | $item = new self($resArr["id"], $transmittal, $content, $resArr["date"]); |
343 | $item->setDMS($dms); |
344 | return $item; |
345 | } /* }}} */ |
346 | |
347 | function setDMS($dms) { |
348 | $this->_dms = $dms; |
349 | } |
350 | |
351 | function getID() { return $this->_id; } |
352 | |
353 | function getTransmittal() { return $this->_transmittal; } |
354 | |
355 | function getContent() { return $this->_content; } |
356 | |
357 | function getDate() { return $this->_date; } |
358 | |
359 | function remove() { /* {{{ */ |
360 | $db = $this->_dms->getDB(); |
361 | $transmittal = $this->_transmittal; |
362 | |
363 | $queryStr = "DELETE FROM `tblTransmittalItems` WHERE `id` = " . $this->_id; |
364 | if (!$db->getResult($queryStr)) { |
365 | return false; |
366 | } |
367 | |
368 | return true; |
369 | } /* }}} */ |
370 | |
371 | /** |
372 | * Check if the content referenzed by the transmittal item is unequal |
373 | * to the latest content of the document. |
374 | * |
375 | * This function updateѕ always to the latest version of the document, |
376 | * even if the version in the item is higher. This can happen if a |
377 | * version has been removed. |
378 | * |
379 | * @return boolean/integer false in case of an error, otherwise the new |
380 | * version. |
381 | */ |
382 | function updateContent() { /* {{{ */ |
383 | $db = $this->_dms->getDB(); |
384 | $transmittal = $this->_transmittal; |
385 | |
386 | $document = $this->_content->getDocument(); |
387 | $latestcontent = $document->getLatestContent(); |
388 | if($latestcontent->getVersion() != $this->_content->getVersion()) { |
389 | $queryStr = "UPDATE `tblTransmittalItems` set `version` = ".$latestcontent->getVersion()." WHERE `id` = " . $this->_id; |
390 | if (!$db->getResult($queryStr)) { |
391 | return false; |
392 | } |
393 | } |
394 | |
395 | return $latestcontent->getVersion(); |
396 | } /* }}} */ |
397 | } |
398 | ?> |