Commit 6721723c11a8f3d67d5b5d9982b42a7a0e71b980

Authored by rob
1 parent 74a3635f

Updated collaboration to inform users performing concurrent steps

when their step is rolled back


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1768 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/documentmanagement/DocumentCollaboration.inc
... ... @@ -183,16 +183,14 @@ class DocumentCollaboration {
183 183 function rollbackCollaborationStep($iDocumentID, $sComment = "") {
184 184 global $default;
185 185 //get the current sequence number
186   - $sQuery = "SELECT GFAT.precedence, GFAT.folder_id, FURL.id AS furl_id " .
  186 + $sQuery = "SELECT GFAT.precedence, GFAT.folder_id, FURL.id AS furl_id, FURL.document_id AS document_id " .
187 187 "FROM $default->owl_folders_user_roles_table AS FURL INNER JOIN $default->owl_groups_folders_approval_table AS GFAT ON FURL.group_folder_approval_id = GFAT.id " .
188 188 "WHERE FURL.document_id = $iDocumentID " .
189 189 "AND user_id = " . $_SESSION["userID"] . " " .
190 190 "AND FURL.active = 1 " .
191 191 "ORDER BY GFAT.precedence ASC";
192 192  
193   - //echo $sQuery;
194   -
195   -
  193 + //echo $sQuery;
196 194  
197 195 $sql = $default->db;
198 196 $sql->query($sQuery);
... ... @@ -200,6 +198,37 @@ class DocumentCollaboration {
200 198 $iCurrentSequenceNumber = $sql->f("precedence");
201 199 $iFolderID = $sql->f("folder_id");
202 200 $iCurrentFolderUserRoleID = $sql->f("furl_id");
  201 + $iDocumentID = $sql->f("document_id");
  202 +
  203 + $oDocument = Document::get($iDocumentID);
  204 +
  205 + //if there are concurrent collaboration steps and one is rejected, then all
  206 + //must be rolled back, whether they were accepted or not
  207 + $sQuery = "SELECT FURL.id, FURL.user_id " .
  208 + "FROM $default->owl_folders_user_roles_table AS FURL INNER JOIN $default->owl_groups_folders_approval_table AS GFAT ON FURL.group_folder_approval_id = GFAT.id " .
  209 + "WHERE FURL.document_id = $iDocumentID AND GFAT.precedence = $iCurrentSequenceNumber";
  210 + $sql->query($sQuery);
  211 + //echo $sQuery;
  212 + //echo $sQuery;
  213 +
  214 + while ($sql->next_record()) {
  215 + //roll back each user's step and then email them to inform them
  216 + //of the change
  217 + $oFolderUserRole = FolderUserRole::get($sql->f("id"));
  218 + $oFolderUserRole->setActive(false);
  219 + $oFolderUserRole->setDone(false);
  220 + $oFolderUserRole->update();
  221 +
  222 +
  223 + $oUserToNotify = User::get($sql->f("user_id"));
  224 + $oCurrentUser = User::get($_SESSION["userID"]);
  225 + $sBody = $oUserToNotify->getUserName() . ", the document, '" . generateLink("/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewBL.php", "fDocumentID=" . $this->iId, $oDocument->getName()) . "' " .
  226 + "has been rejected by " . $oUserToNotify->getName() . " in the document collaboration process. The collaboration process has been rolled back to the previous step. " .
  227 + "Your role is no longer active and and any acceptances you may have made have been voided. " .
  228 + "The comment entered by " . $oUserToNotify->getName() . " was: $sComment";
  229 + $oEmail = & new Email();
  230 + $oEmail->send($oUserToNotify->getEmail(), "Document rejected in collaboration process", $sBody);
  231 + }
203 232  
204 233 //get the previous sequence number
205 234 $sQuery = "SELECT COALESCE(MAX(precedence), -1) AS precedence " .
... ... @@ -213,7 +242,7 @@ class DocumentCollaboration {
213 242 //the current step is the first step
214 243 //reset all steps and email the creator
215 244 DocumentCollaboration::resetDocumentCollaborationSteps($iDocumentID);
216   - $oDocument = Document::get($iDocumentID);
  245 + //$oDocument = Document::get($iDocumentID);
217 246 $oUser = User::get($oDocument->getCreatorID());
218 247 if ($oUser->getEmailNotification()) {
219 248 $oCurrentUser = User::get($_SESSION["userID"]);
... ...