From 116bce9152e2ec3e54974eb36e24ebaf49647a86 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Sun, 16 Oct 2005 21:23:01 +0000 Subject: [PATCH] Add getWorkflowForDocument and getWorkflowStateForDocument, which do what they say they do. --- lib/workflow/workflowutil.inc.php | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/lib/workflow/workflowutil.inc.php b/lib/workflow/workflowutil.inc.php index 8776c15..13ab68d 100644 --- a/lib/workflow/workflowutil.inc.php +++ b/lib/workflow/workflowutil.inc.php @@ -28,7 +28,7 @@ class KTWorkflowUtil { return; } - function getTransitionsFrom($oState, $aOptions) { + function getTransitionsFrom($oState, $aOptions = null) { $bIds = KTUtil::arrayGet($aOptions, 'ids'); $sTable = KTUtil::getTableName('workflow_state_transitions'); $aQuery = array( @@ -153,5 +153,55 @@ class KTWorkflowUtil { } return true; } + + function getWorkflowForDocument ($oDocument, $aOptions = null) { + $ids = KTUtil::arrayGet($aOptions, 'ids', false); + $iDocumentId = KTUtil::getId($oDocument); + $sTable = KTUtil::getTableName('workflow_documents'); + $aQuery = array( + "SELECT workflow_id FROM $sTable WHERE document_id = ?", + array($iDocumentId), + ); + $iWorkflowId = DBUtil::getOneResultKey($aQuery, 'workflow_id'); + if (is_null($iWorkflowId)) { + return $iWorkflowId; + } + if (PEAR::isError($iWorkflowId)) { + return $iWorkflowId; + } + if ($ids) { + return $iWorkflowId; + } + return KTWorkflow::get($iWorkflowId); + } + + function getWorkflowStateForDocument ($oDocument, $aOptions = null) { + $ids = KTUtil::arrayGet($aOptions, 'ids', false); + $iDocumentId = KTUtil::getId($oDocument); + $sTable = KTUtil::getTableName('workflow_documents'); + $aQuery = array( + "SELECT state_id FROM $sTable WHERE document_id = ?", + array($iDocumentId), + ); + $iWorkflowStateId = DBUtil::getOneResultKey($aQuery, 'state_id'); + if (is_null($iWorkflowStateId)) { + return $iWorkflowStateId; + } + if (PEAR::isError($iWorkflowStateId)) { + return $iWorkflowStateId; + } + if ($ids) { + return $iWorkflowStateId; + } + return KTWorkflowState::get($iWorkflowStateId); + } + + function getTransitionsForDocumentUser($oDocument, $oUser) { + $oState = KTWorkflowUtil::getWorkflowStateForDocument($oDocument); + if (is_null($oState) || PEAR::isError($oState)) { + return $oState; + } + return KTWorkflowUtil::getTransitionsFrom($oState); + } } -- libgit2 0.21.4