diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index e6456502c..727ffdeb3 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -1770,9 +1770,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ function removeContent($version) { /* {{{ */ $db = $this->_dms->getDB(); - $emailList = array(); - $emailList[] = $version->_userID; - if (file_exists( $this->_dms->contentDir.$version->getPath() )) if (!SeedDMS_Core_File::removeFile( $this->_dms->contentDir.$version->getPath() )) return false; @@ -1794,6 +1791,12 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return false; } + $queryStr = "DELETE FROM `tblTransmittalItems` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return false; + } + $queryStr = "DELETE FROM `tblDocumentStatusLog` WHERE `statusID` = '".$stID."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); @@ -1821,9 +1824,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if(file_exists($file)) SeedDMS_Core_File::removeFile($file); } - if ($st["status"]==0 && !in_array($st["required"], $emailList)) { - $emailList[] = $st["required"]; - } } if (strlen($stList)>0) { @@ -1853,9 +1853,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if(file_exists($file)) SeedDMS_Core_File::removeFile($file); } - if ($st["status"]==0 && !in_array($st["required"], $emailList)) { - $emailList[] = $st["required"]; - } } if (strlen($stList)>0) { @@ -1871,6 +1868,64 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return false; } + /* Remove all receipts of document version. + * This implmentation is different from the above for removing approvals + * and reviews. It doesn't use getReceiptStatus() but reads the database + */ + $queryStr = "SELECT * FROM tblDocumentRecipients WHERE documentID = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $resArr = $db->getResultArray($queryStr); + if ((is_bool($resArr) && !$resArr)) { + $db->rollbackTransaction(); + return false; + } + + $stList = array(); + foreach($resArr as $res) { + $stList[] = $res['receiptID']; + } + + if ($stList) { + $queryStr = "DELETE FROM `tblDocumentReceiptLog` WHERE `receiptID` IN (".implode(',', $stList).")"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return false; + } + $queryStr = "DELETE FROM `tblDocumentRecipients` WHERE `receiptID` IN (".implode(',', $stList).")"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return false; + } + } + + /* Remove all revisions of document version. + * This implmentation is different from the above for removing approvals + * and reviews. It doesn't use getRevisionStatus() but reads the database + */ + $queryStr = "SELECT * FROM tblDocumentRevisors WHERE documentID = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $resArr = $db->getResultArray($queryStr); + if ((is_bool($resArr) && !$resArr)) { + $db->rollbackTransaction(); + return false; + } + + $stList = array(); + foreach($resArr as $res) { + $stList[] = $res['revisionID']; + } + + if ($stList) { + $queryStr = "DELETE FROM `tblDocumentRevisionLog` WHERE `revisionID` IN (".implode(',', $stList).")"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return false; + } + $queryStr = "DELETE FROM `tblDocumentRevisors` WHERE `revisionID` IN (".implode(',', $stList).")"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return false; + } + } + $queryStr = "DELETE FROM `tblWorkflowDocumentContent` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction();