Skip to content
Snippets Groups Projects
Commit 5cb57401 authored by Tobias Reischmann's avatar Tobias Reischmann
Browse files

Prepared rest of the plugin to support multiple tigger

parent e8f74b62
No related branches found
No related tags found
No related merge requests found
...@@ -134,7 +134,8 @@ class interaction_manager { ...@@ -134,7 +134,8 @@ class interaction_manager {
} }
if ($process->stepindex == 0) { if ($process->stepindex == 0) {
$trigger = trigger_manager::get_trigger_for_workflow($process->workflowid); //TODO: Rethink behaviour for multiple triggers.
$trigger = trigger_manager::get_triggers_for_workflow($process->workflowid)[0];
$triggerlib = lib_manager::get_trigger_lib($trigger->subpluginname); $triggerlib = lib_manager::get_trigger_lib($trigger->subpluginname);
return $triggerlib->get_status_message(); return $triggerlib->get_status_message();
} else { } else {
......
...@@ -149,7 +149,8 @@ class workflow_manager { ...@@ -149,7 +149,8 @@ class workflow_manager {
$transaction = $DB->start_delegated_transaction(); $transaction = $DB->start_delegated_transaction();
$workflow = self::get_workflow($workflowid); $workflow = self::get_workflow($workflowid);
if (!$workflow->active) { if (!$workflow->active) {
$trigger = trigger_manager::get_trigger_for_workflow($workflowid); //TODO: Rethink behaviour for multiple triggers.
$trigger = trigger_manager::get_triggers_for_workflow($workflowid)[0];
$lib = lib_manager::get_trigger_lib($trigger->subpluginname); $lib = lib_manager::get_trigger_lib($trigger->subpluginname);
$workflow->manual = $lib->is_manual_trigger(); $workflow->manual = $lib->is_manual_trigger();
$workflow->active = true; $workflow->active = true;
...@@ -241,8 +242,8 @@ class workflow_manager { ...@@ -241,8 +242,8 @@ class workflow_manager {
* @return bool true, if the definition is valid. * @return bool true, if the definition is valid.
*/ */
public static function is_valid($workflowid) { public static function is_valid($workflowid) {
$trigger = trigger_manager::get_trigger_for_workflow($workflowid); $triggers = trigger_manager::get_triggers_for_workflow($workflowid);
if ($trigger === null) { if (empty($triggers)) {
return false; return false;
} }
return true; return true;
...@@ -286,7 +287,7 @@ class workflow_manager { ...@@ -286,7 +287,7 @@ class workflow_manager {
$newworkflow = self::create_workflow($newtitle); $newworkflow = self::create_workflow($newtitle);
self::insert_or_update($newworkflow); self::insert_or_update($newworkflow);
// Copy trigger and steps using the new workflow id. // Copy trigger and steps using the new workflow id.
trigger_manager::duplicate_trigger($workflowid, $newworkflow->id); trigger_manager::duplicate_triggers($workflowid, $newworkflow->id);
step_manager::duplicate_steps($workflowid, $newworkflow->id); step_manager::duplicate_steps($workflowid, $newworkflow->id);
return $newworkflow; return $newworkflow;
} }
......
...@@ -52,18 +52,20 @@ class processor { ...@@ -52,18 +52,20 @@ class processor {
while ($recordset->valid()) { while ($recordset->valid()) {
$course = $recordset->current(); $course = $recordset->current();
foreach ($activeworkflows as $workflow) { foreach ($activeworkflows as $workflow) {
$trigger = trigger_manager::get_trigger_for_workflow($workflow->id); $triggers = trigger_manager::get_triggers_for_workflow($workflow->id);
foreach ($triggers as $trigger) {
$lib = lib_manager::get_automatic_trigger_lib($trigger->subpluginname); $lib = lib_manager::get_automatic_trigger_lib($trigger->subpluginname);
$response = $lib->check_course($course, $trigger->id); $response = $lib->check_course($course, $trigger->id);
if ($response == trigger_response::next()) { if ($response == trigger_response::next()) {
continue; continue 2;
} }
if ($response == trigger_response::exclude()) { if ($response == trigger_response::exclude()) {
break; break 2;
} }
if ($response == trigger_response::trigger()) { if ($response == trigger_response::trigger()) {
process_manager::create_process($course->id, $trigger->workflowid); process_manager::create_process($course->id, $trigger->workflowid);
break; continue;
}
} }
} }
$recordset->next(); $recordset->next();
......
...@@ -93,9 +93,9 @@ class workflow_definition_table extends workflow_table { ...@@ -93,9 +93,9 @@ class workflow_definition_table extends workflow_table {
$output .= $OUTPUT->action_icon($url, new \pix_icon($icon, $alt, 'moodle', array('title' => $alt)), $output .= $OUTPUT->action_icon($url, new \pix_icon($icon, $alt, 'moodle', array('title' => $alt)),
null, array('title' => $alt)); null, array('title' => $alt));
$trigger = trigger_manager::get_trigger_for_workflow($row->id); $trigger = trigger_manager::get_triggers_for_workflow($row->id);
if ($trigger) { if (!empty($trigger)) {
$lib = lib_manager::get_trigger_lib($trigger->subpluginname); $lib = lib_manager::get_trigger_lib($trigger[0]->subpluginname);
} }
if (!isset($lib) || $lib->has_multiple_instances()) { if (!isset($lib) || $lib->has_multiple_instances()) {
......
...@@ -71,9 +71,13 @@ abstract class workflow_table extends \table_sql { ...@@ -71,9 +71,13 @@ abstract class workflow_table extends \table_sql {
* @return string instancename of the trigger * @return string instancename of the trigger
*/ */
public function col_trigger($row) { public function col_trigger($row) {
$trigger = trigger_manager::get_trigger_for_workflow($row->id); $triggers = trigger_manager::get_triggers_for_workflow($row->id);
if ($trigger) { if ($triggers) {
return $trigger->instancename; $triggerstring = $triggers[0]->instancename;
for ($i = 1; $i < count($triggers); $i++) {
$triggerstring .= ' ';
$triggerstring .= $triggers[$i]->instancename;
}
} }
} }
......
...@@ -239,7 +239,7 @@ function xmldb_tool_lifecycle_upgrade($oldversion) { ...@@ -239,7 +239,7 @@ function xmldb_tool_lifecycle_upgrade($oldversion) {
$workflows = \tool_lifecycle\manager\workflow_manager::get_active_workflows(); $workflows = \tool_lifecycle\manager\workflow_manager::get_active_workflows();
foreach ($workflows as $workflow) { foreach ($workflows as $workflow) {
if ($workflow->manual === null) { if ($workflow->manual === null) {
$trigger = \tool_lifecycle\manager\trigger_manager::get_trigger_for_workflow($workflow->id); $trigger = \tool_lifecycle\manager\trigger_manager::get_triggers_for_workflow($workflow->id)[0];
$lib = \tool_lifecycle\manager\lib_manager::get_trigger_lib($trigger->subpluginname); $lib = \tool_lifecycle\manager\lib_manager::get_trigger_lib($trigger->subpluginname);
$workflow->manual = $lib->is_manual_trigger(); $workflow->manual = $lib->is_manual_trigger();
\tool_lifecycle\manager\workflow_manager::insert_or_update($workflow); \tool_lifecycle\manager\workflow_manager::insert_or_update($workflow);
......
...@@ -63,7 +63,7 @@ class tool_lifecycle_manual_trigger_tools_testcase extends \advanced_testcase { ...@@ -63,7 +63,7 @@ class tool_lifecycle_manual_trigger_tools_testcase extends \advanced_testcase {
$tools = workflow_manager::get_manual_trigger_tools_for_active_workflows(); $tools = workflow_manager::get_manual_trigger_tools_for_active_workflows();
$this->assertCount(1, $tools); $this->assertCount(1, $tools);
$this->assertContainsOnly(manual_trigger_tool::class, $tools); $this->assertContainsOnly(manual_trigger_tool::class, $tools);
$trigger = trigger_manager::get_trigger_for_workflow($this->workflow2->id); $trigger = trigger_manager::get_triggers_for_workflow($this->workflow2->id)[0];
$tool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER2_ICON, $tool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER2_ICON,
self::MANUAL_TRIGGER2_DISPLAYNAME, self::MANUAL_TRIGGER2_CAPABILITY); self::MANUAL_TRIGGER2_DISPLAYNAME, self::MANUAL_TRIGGER2_CAPABILITY);
$this->assertEquals($tool, $tools[0]); $this->assertEquals($tool, $tools[0]);
...@@ -78,12 +78,12 @@ class tool_lifecycle_manual_trigger_tools_testcase extends \advanced_testcase { ...@@ -78,12 +78,12 @@ class tool_lifecycle_manual_trigger_tools_testcase extends \advanced_testcase {
$tools = workflow_manager::get_manual_trigger_tools_for_active_workflows(); $tools = workflow_manager::get_manual_trigger_tools_for_active_workflows();
$this->assertCount(2, $tools); $this->assertCount(2, $tools);
$this->assertContainsOnly(\tool_lifecycle\local\data\manual_trigger_tool::class, $tools); $this->assertContainsOnly(\tool_lifecycle\local\data\manual_trigger_tool::class, $tools);
$trigger = trigger_manager::get_trigger_for_workflow($this->workflow1->id); $trigger = trigger_manager::get_triggers_for_workflow($this->workflow1->id)[0];
$expectedtool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER1_ICON, $expectedtool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER1_ICON,
self::MANUAL_TRIGGER1_DISPLAYNAME, self::MANUAL_TRIGGER1_CAPABILITY); self::MANUAL_TRIGGER1_DISPLAYNAME, self::MANUAL_TRIGGER1_CAPABILITY);
$this->assert_tool_exist($expectedtool, $tools); $this->assert_tool_exist($expectedtool, $tools);
$trigger = trigger_manager::get_trigger_for_workflow($this->workflow2->id); $trigger = trigger_manager::get_triggers_for_workflow($this->workflow2->id)[0];
$expectedtool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER2_ICON, $expectedtool = new manual_trigger_tool($trigger->id, self::MANUAL_TRIGGER2_ICON,
self::MANUAL_TRIGGER2_DISPLAYNAME, self::MANUAL_TRIGGER2_CAPABILITY); self::MANUAL_TRIGGER2_DISPLAYNAME, self::MANUAL_TRIGGER2_CAPABILITY);
$this->assert_tool_exist($expectedtool, $tools); $this->assert_tool_exist($expectedtool, $tools);
......
...@@ -54,7 +54,7 @@ class tool_lifecycle_manually_triggered_process_testcase extends \advanced_testc ...@@ -54,7 +54,7 @@ class tool_lifecycle_manually_triggered_process_testcase extends \advanced_testc
workflow_manager::handle_action(ACTION_WORKFLOW_ACTIVATE, $manualworkflow->id); workflow_manager::handle_action(ACTION_WORKFLOW_ACTIVATE, $manualworkflow->id);
$this->course = $this->getDataGenerator()->create_course(); $this->course = $this->getDataGenerator()->create_course();
$this->trigger = trigger_manager::get_trigger_for_workflow($manualworkflow->id); $this->trigger = trigger_manager::get_triggers_for_workflow($manualworkflow->id)[0];
} }
/** /**
......
...@@ -44,7 +44,7 @@ class tool_lifecycle_settings_manager_testcase extends \advanced_testcase { ...@@ -44,7 +44,7 @@ class tool_lifecycle_settings_manager_testcase extends \advanced_testcase {
$workflow = $generator->create_workflow(); $workflow = $generator->create_workflow();
$this->step = new step_subplugin('instancename', 'email', $workflow->id); $this->step = new step_subplugin('instancename', 'email', $workflow->id);
step_manager::insert_or_update($this->step); step_manager::insert_or_update($this->step);
$this->trigger = \tool_lifecycle\manager\trigger_manager::get_trigger_for_workflow($workflow->id); $this->trigger = \tool_lifecycle\manager\trigger_manager::get_triggers_for_workflow($workflow->id)[0];
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment