Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 139
0.00% covered (danger)
0.00%
0 / 23
CRAP
0.00% covered (danger)
0.00%
0 / 2
SeedDMS_Core_Transmittal
0.00% covered (danger)
0.00%
0 / 97
0.00% covered (danger)
0.00%
0 / 14
1406
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
 getInstance
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
72
 getAllInstances
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
30
 setDMS
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getID
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setName
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
6
 getComment
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setComment
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
6
 getUser
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getItems
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
30
 getSize
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
20
 addContent
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
 remove
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
SeedDMS_Core_TransmittalItem
0.00% covered (danger)
0.00%
0 / 42
0.00% covered (danger)
0.00%
0 / 9
306
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 getInstance
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
42
 setDMS
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getID
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTransmittal
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getContent
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDate
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 remove
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
6
 updateContent
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
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 */
25class 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 */
286class 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?>