From 178070d9d5730ae8b49d4f2bb5e5c61382a3fa6c Mon Sep 17 00:00:00 2001
From: Tobias Reischmann <tobias.reischmann@wi.uni-muenster.de>
Date: Wed, 28 Aug 2019 18:03:20 +0200
Subject: [PATCH] Fix notifications for active workflows

---
 adminlib.php                        |  4 ++--
 classes/manager/step_manager.php    |  8 +++++---
 classes/manager/trigger_manager.php | 10 ++++++----
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/adminlib.php b/adminlib.php
index 1f34c74..6171d60 100644
--- a/adminlib.php
+++ b/adminlib.php
@@ -471,8 +471,8 @@ class workflow_settings {
         $this->check_permissions();
 
         // Handle other actions.
-        step_manager::handle_action($action, $subpluginid);
-        trigger_manager::handle_action($action, $subpluginid);
+        step_manager::handle_action($action, $subpluginid, $workflowid);
+        trigger_manager::handle_action($action, $subpluginid, $workflowid);
         workflow_manager::handle_action($action, $workflowid);
 
         if ($action === action::TRIGGER_INSTANCE_FORM) {
diff --git a/classes/manager/step_manager.php b/classes/manager/step_manager.php
index a2332f7..e3d1181 100644
--- a/classes/manager/step_manager.php
+++ b/classes/manager/step_manager.php
@@ -217,10 +217,12 @@ class step_manager extends subplugin_manager {
      * Handles an action for a workflow step.
      * @param string $action action to be executed
      * @param int $subpluginid id of the step instance
+     * @param int $workflowid id of the workflow
      */
-    public static function handle_action($action, $subpluginid) {
-        if ($step = self::get_step_instance($subpluginid)) {
-            if (!workflow_manager::is_active($step->workflowid)) {
+    public static function handle_action($action, $subpluginid, $workflowid) {
+        $step = self::get_step_instance($subpluginid);
+        if ($step && $step->workflowid == $workflowid ) {
+            if (!workflow_manager::is_active($workflowid)) {
                 if ($action === action::UP_STEP) {
                     self::change_sortindex($subpluginid, true);
                 }
diff --git a/classes/manager/trigger_manager.php b/classes/manager/trigger_manager.php
index e76f3eb..7833104 100644
--- a/classes/manager/trigger_manager.php
+++ b/classes/manager/trigger_manager.php
@@ -240,11 +240,13 @@ class trigger_manager extends subplugin_manager {
     /**
      * Handles an action for a workflow step.
      * @param string $action action to be executed
-     * @param int $subpluginid id of the step instance
+     * @param int $subpluginid id of the trigger instance
+     * @param int $workflowid id of the workflow
      */
-    public static function handle_action($action, $subpluginid) {
-        if ($trigger = self::get_instance($subpluginid)) {
-            if (!workflow_manager::is_active($trigger->workflowid)) {
+    public static function handle_action($action, $subpluginid, $workflowid) {
+        $trigger = self::get_instance($subpluginid);
+        if ($trigger && $trigger->workflowid == $workflowid ) {
+            if (!workflow_manager::is_active($workflowid)) {
                 if ($action === action::UP_TRIGGER) {
                     self::change_sortindex($subpluginid, true);
                 }
-- 
GitLab