Skip to content

Commit b9447ab

Browse files
Merge pull request #171 from PhMemmel/MBS-7377-Fix_workflowoverview_for_big_instances
Fix workflowoverview for big instances
2 parents 0318800 + ab2138c commit b9447ab

File tree

5 files changed

+45
-16
lines changed

5 files changed

+45
-16
lines changed

lang/de/tool_lifecycle.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
$string['config_delay_duration_desc'] = 'Diese Einstellung definiert den Standardlänge einer Kursausschlusses in einem Workflow
3535
falls ein Prozess des Workflows zurückgesetzt oder beendigt wird. Die Länge des Kursausschlusses besagt, wie lange es dauert, bis
3636
der Kurs wieder vom Workflow bearbeitet wird.';
37+
$string['config_showcoursecounts'] = 'Zeige Anzahl der Kurse, die getriggert werden';
38+
$string['config_showcoursecounts_desc'] = 'Die Workflow-Konfigurationsseite zeigt normalerweise die Anzahl an Kursen, die durch
39+
die konfigurierten Trigger getriggert werden, was Performance-Probleme verursachen kann. Bei Performance-Problemen kann dies hiermit
40+
deaktiviert werden';
3741
$string['find_course_list_header'] = 'Kurse finden';
3842
$string['adminsettings_heading'] = 'Workflow-Einstellungen';
3943
$string['active_manual_workflows_heading'] = 'Aktive manuelle Workflows';

lang/en/tool_lifecycle.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
$string['config_backup_path'] = 'Path of the lifecycle backup folder';
3939
$string['config_backup_path_desc'] = 'This settings defines the storage location of the backups created by the backup step.
4040
The path has to be specified as an absolute path on your server.';
41+
$string['config_showcoursecounts'] = 'Show amount of courses which will be triggered';
42+
$string['config_showcoursecounts_desc'] = 'The workflow overview page by default shows the amount of courses which will be
43+
triggered by the configured triggers which can be load heavy. Disable this option if you experience issues loading the workflow
44+
overview.';
4145
$string['find_course_list_header'] = 'Find courses';
4246
$string['adminsettings_heading'] = 'Workflow settings';
4347
$string['active_manual_workflows_heading'] = 'Active manual workflows';

settings.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@
4242
get_string('config_backup_path_desc', 'tool_lifecycle'),
4343
$CFG->dataroot . DIRECTORY_SEPARATOR . 'lifecycle_backups'));
4444

45+
$settings->add(new admin_setting_configcheckbox('tool_lifecycle/showcoursecounts',
46+
get_string('config_showcoursecounts', 'tool_lifecycle'),
47+
get_string('config_showcoursecounts_desc', 'tool_lifecycle'),
48+
1));
49+
4550
$ADMIN->add('lifecycle_category', new admin_externalpage('tool_lifecycle_workflow_drafts',
4651
get_string('workflow_drafts_header', 'tool_lifecycle'),
4752
new moodle_url(\tool_lifecycle\urls::WORKFLOW_DRAFTS)));

templates/workflowoverview.mustache

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,14 @@
8484
<div class="mt-5 mb-3">{{{addinstance}}}</div>
8585
<div class="wf-trigger-block workflow-item">
8686
<h5 class="my-2">{{#str}} trigger, tool_lifecycle{{/str}} {{{triggerhelp}}}</h5>
87-
{{#automatic}}
87+
{{#showcoursecounts}}
88+
{{#automatic}}
8889
<div class="mb-2 mx-2">
8990
{{#str}} courses_will_be_triggered_total, tool_lifecycle, {{coursestriggered}} {{/str}}<br>
9091
{{#str}} courses_will_be_excluded_total, tool_lifecycle, {{coursesexcluded}} {{/str}}<br>
9192
</div>
92-
{{/automatic}}
93+
{{/automatic}}
94+
{{/showcoursecounts}}
9395
<div class="workflow wf-trigger-wrapper">
9496
{{#trigger}}
9597
<div class="workflow-trigger">
@@ -103,10 +105,12 @@
103105
</div>
104106
</div>
105107
<div class="wf-content">
108+
{{#showcoursecounts}}
106109
{{#automatic}}
107-
<span>{{#str}} courses_will_be_triggered, tool_lifecycle, {{triggeredcourses}} {{/str}}</span><br>
108-
<span>{{#str}} courses_will_be_excluded, tool_lifecycle, {{excludedcourses}} {{/str}}</span>
110+
<span>{{#str}} courses_will_be_triggered, tool_lifecycle, {{triggeredcourses}} {{/str}}</span><br>
111+
<span>{{#str}} courses_will_be_excluded, tool_lifecycle, {{excludedcourses}} {{/str}}</span>
109112
{{/automatic}}
113+
{{/showcoursecounts}}
110114
</div>
111115
</div>
112116
{{/trigger}}
@@ -140,4 +144,4 @@
140144
{{{ table }}}
141145
</div>
142146
{{/table}}
143-
</div>
147+
</div>

workflowoverview.php

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,15 @@
8787
'move_down' => get_string('move_down', 'tool_lifecycle')
8888
];
8989

90-
$amounts = (new \tool_lifecycle\processor())->get_count_of_courses_to_trigger_for_workflow($workflow->id);
91-
$displaytotaltriggered = !empty($triggers);
90+
$showcoursecounts = get_config('tool_lifecycle', 'showcoursecounts');
91+
if ($showcoursecounts) {
92+
// On moodle instances with many courses the following call can be fatal, because each trigger
93+
// check function will be called for every single course of the instance to determine how many
94+
// courses will be triggered by the workflow/the specific trigger. This count is only being
95+
// used to show the admin how many courses will be triggered, it has no functional aspect.
96+
$amounts = (new \tool_lifecycle\processor())->get_count_of_courses_to_trigger_for_workflow($workflow->id);
97+
$displaytotaltriggered = !empty($triggers);
98+
}
9299

93100
foreach ($triggers as $trigger) {
94101
// The array from the DB Function uses ids as keys.
@@ -108,11 +115,13 @@
108115
);
109116
}
110117
$trigger->actionmenu = $OUTPUT->render($actionmenu);
111-
$trigger->automatic = $amounts[$trigger->sortindex]->automatic;
112-
$displaytotaltriggered &= $trigger->automatic;
113-
if ($trigger->automatic) {
114-
$trigger->triggeredcourses = $amounts[$trigger->sortindex]->triggered;
115-
$trigger->excludedcourses = $amounts[$trigger->sortindex]->excluded;
118+
if ($showcoursecounts) {
119+
$trigger->automatic = $amounts[$trigger->sortindex]->automatic;
120+
$displaytotaltriggered &= $trigger->automatic;
121+
if ($trigger->automatic) {
122+
$trigger->triggeredcourses = $amounts[$trigger->sortindex]->triggered;
123+
$trigger->excludedcourses = $amounts[$trigger->sortindex]->excluded;
124+
}
116125
}
117126
}
118127

@@ -176,15 +185,18 @@
176185
'finishdelay' => format_time($workflow->finishdelay),
177186
'delayglobally' => $workflow->delayforallworkflows,
178187
'trigger' => array_values($triggers),
179-
'automatic' => $displaytotaltriggered,
180-
'coursestriggered' => $amounts['all']->triggered,
181-
'coursesexcluded' => $amounts['all']->excluded,
182-
'coursesetsize' => $amounts['all']->coursesetsize,
188+
'showcoursecounts' => $showcoursecounts,
183189
'steps' => array_values($steps),
184190
'listofcourses' => $arrayofcourses,
185191
'nosteplink' => $nosteplink,
186192
'table' => $out
187193
];
194+
if ($showcoursecounts) {
195+
$data['automatic'] = $displaytotaltriggered;
196+
$data['coursestriggered'] = $amounts['all']->triggered;
197+
$data['coursesexcluded'] = $amounts['all']->excluded;
198+
$data['coursesetsize'] = $amounts['all']->coursesetsize;
199+
}
188200

189201
echo $renderer->header();
190202

0 commit comments

Comments
 (0)