diff --git a/application/models/rows/ApprovalActionQueue.php b/application/models/rows/ApprovalActionQueue.php index 75814e2b6901d8a306104f04ef018c7eb0bca54a..5e040aa1908a6089e54b95555a2530a1d2f92939 100644 --- a/application/models/rows/ApprovalActionQueue.php +++ b/application/models/rows/ApprovalActionQueue.php @@ -110,7 +110,7 @@ class ApprovalActionQueue extends ApprovalAction */ public function userMadeDecision(Request $request, User $user, $decision) { - $vote = ApproverVotes::getInstance()->fetchByRequestUserAndAction($request, $user, $this); + $vote = $this->getUserDecision($request, $user); if ($vote) { $vote->vote = $decision; } else { diff --git a/application/models/rows/ApprovalActionVote.php b/application/models/rows/ApprovalActionVote.php index b80d556de97868d9716f7e6fcfef560d582d83b2..26e61a6d5cf004ab6cbe4046a2bb9e5719ee5452 100644 --- a/application/models/rows/ApprovalActionVote.php +++ b/application/models/rows/ApprovalActionVote.php @@ -69,6 +69,12 @@ class ApprovalActionVote extends ApprovalActionQueue */ public function userMadeDecision(Request $request, User $user, $decision) { + $vote = $this->getUserDecision($request, $user); + if ($vote) { + // TODO: don't fail silently when someone tries to vote again. + return; + } + parent::userMadeDecision($request, $user, $decision); }