diff --git a/Module.php b/Module.php index f429209..ba31813 100644 --- a/Module.php +++ b/Module.php @@ -86,6 +86,7 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) $services); $transitionId = null; + $transitionToStatusType = null; if ($availableTransitions && is_array($availableTransitions) && array_key_exists('transitions', $availableTransitions) && is_array($availableTransitions['transitions'])) { foreach ($availableTransitions['transitions'] as $availableTransition) { @@ -98,6 +99,10 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) if (strpos($availableTransitionName, $transitionCommand['command']) === 0) { $transitionId = $availableTransition['id']; + + if (isset($availableTransition['to']) && isset($availableTransition['to']['statusCategory'])) { + $transitionToStatusType = $availableTransition['to']['statusCategory']['key']; + } break; } } @@ -150,6 +155,15 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) if ($clFieldNumeric) { $clObj = array($clField => $item->getId()); } + + // if this isn't a "done" transition, make sure the fixed field is nulled out + if ($transitionToStatusType && $transitionToStatusType !== 'done') { + $logger->debug("JiraSmartCommits: nulling changelist field value because target status is not a Done status (is {$transitionToStatusType})."); + $clObj = array($clField => null); + } else { + $logger->debug("JiraSmartCommits: desired status is a 'done' status type, continuing with setting fixed field to {$item->getId()}."); + } + $msg = array( 'fields' => $clObj, );