36 |
--------------------------------------------------------------------------------
/templates/overview_step.mustache:
--------------------------------------------------------------------------------
1 | {{!
2 | This file is part of Moodle - http://moodle.org/
3 |
4 | Moodle is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | Moodle is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with Moodle. If not, see .
16 | }}
17 | {{!
18 | @template tool_lifecycle/overview_step
19 |
20 | Presentation of lifecycle step in overview.
21 |
22 | Example context (json):
23 | {
24 | "instancename": "Triggername",
25 | "subpluginname": "adminapprove",
26 | "selected": true,
27 | "showdetails": true,
28 | "automatic": true,
29 | "additionalinfo": "---",
30 | "showdetails": 1,
31 | "id": 1,
32 | "numberofcourses": 5,
33 | "actionmenu": "actionmenu",
34 | "popuplink": "admin/tool/lifecycle/workflowoverview.php?wf=1"
35 | }
36 | }}
37 | {{#steps}}
38 |
39 |
60 | {{/steps}}
61 |
--------------------------------------------------------------------------------
/templates/overview_timetrigger.mustache:
--------------------------------------------------------------------------------
1 | {{!
2 | This file is part of Moodle - http://moodle.org/
3 |
4 | Moodle is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | Moodle is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with Moodle. If not, see .
16 | }}
17 | {{!
18 | @template tool_lifecycle/overview_timetrigger
19 |
20 | Trigger course selection run presentation
21 |
22 | Example context (json):
23 | {
24 | "instancename": "Triggername",
25 | "subpluginname": "adminapprove",
26 | "classfires": "my-2",
27 | "showcoursecounts": true,
28 | "automatic": true,
29 | "additionalinfo": "Last run: 1.1.2000",
30 | "actionmenu": "actionmenu"
31 | }
32 | }}
33 | {{#timetrigger}}
34 |
50 | {{/timetrigger}}
51 |
--------------------------------------------------------------------------------
/templates/search_input.mustache:
--------------------------------------------------------------------------------
1 | {{!
2 | This file is part of Moodle - http://moodle.org/
3 |
4 | Moodle is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published by
6 | the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | Moodle is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with Moodle. If not, see .
16 | }}
17 | {{!
18 | @template tool_lifecycle/search_input
19 |
20 | Simple search input.
21 |
22 | Directly copied from core/search_input, because we have to provide it for Moodle 3.9.
23 |
24 | Example context (json):
25 | {
26 | "action": "https://moodle.local/admin/search.php",
27 | "extraclasses": "my-2",
28 | "inputname": "search",
29 | "inform": false,
30 | "searchstring": "Search settings",
31 | "value": "policy",
32 | "btnclass": "primary",
33 | "query": "themedesigner",
34 | "hiddenfields": [
35 | {
36 | "name": "context",
37 | "value": "11"
38 | }
39 | ]
40 | }
41 | }}
42 |
43 | {{^inform}}
44 |
77 | {{/inform}}
78 |
--------------------------------------------------------------------------------
/tests/behat/upload_workflow.feature:
--------------------------------------------------------------------------------
1 | @tool @tool_lifecycle @_file_upload @upload_workflow
2 | Feature: Upload a workflow definition
3 |
4 | @javascript
5 | Scenario: Upload a new workflow
6 | Given I log in as "admin"
7 | And I am on workflowdrafts page
8 | And I click on "Upload workflow" "link"
9 | And I upload "admin/tool/lifecycle/tests/fixtures/simpleworkflow.xml" file to "Upload workflow" filemanager
10 | And I press "Upload"
11 | Then I should see "A Workflow"
12 |
--------------------------------------------------------------------------------
/tests/fixtures/simpleworkflow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/tests/persistence/persist_workflow_test.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Tests creating storing and retrieving a workflow object.
19 | * @package tool_lifecycle
20 | * @category test
21 | * @group tool_lifecycle
22 | * @copyright 2017 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 | namespace tool_lifecycle;
26 | defined('MOODLE_INTERNAL') || die();
27 |
28 | require_once(__DIR__ . '/../../lib.php');
29 |
30 | use tool_lifecycle\local\entity\workflow;
31 | use tool_lifecycle\local\manager\workflow_manager;
32 |
33 | /**
34 | * Tests creating storing and retrieving a workflow object.
35 | * @package tool_lifecycle
36 | * @category test
37 | * @group tool_lifecycle
38 | * @copyright 2017 Tobias Reischmann WWU
39 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
40 | */
41 | final class persist_workflow_test extends \advanced_testcase {
42 |
43 | /** @var workflow $workflow Instance of the workflow. */
44 | private $workflow;
45 |
46 | /**
47 | * Setup the testcase.
48 | */
49 | public function setUp(): void {
50 | parent::setUp();
51 | $this->resetAfterTest(true);
52 | $record = new \stdClass();
53 | $record->id = null;
54 | $record->title = 'Title';
55 | $this->workflow = workflow::from_record($record);
56 | }
57 |
58 | /**
59 | * Test the creation of a process.
60 | * @covers \tool_lifecycle\local\manager\workflow_manager create a wf.
61 | */
62 | public function test_create(): void {
63 | $this->assertNull($this->workflow->id);
64 | workflow_manager::insert_or_update($this->workflow);
65 | $this->assertNotNull($this->workflow->id);
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/tests/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | .
34 |
35 |
36 |
37 |
38 | .
39 |
40 | .
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/trigger/byrole/README.md:
--------------------------------------------------------------------------------
1 | # moodle-lifecycletrigger_byrole
2 | This is a trigger-Subplugin for the admin tool [moodle-tool_lifecycle](https://github.com/learnweb/moodle-tool_lifecycle).
3 | Course without a reponsible person are marked for the cleanupprocess of the lifecycle admin tool.
4 | ## Settings
5 | Site administrators choose between all available roles for responsible roles. When multiple roles are selected it
6 | is sufficient if at least one role is represented in the course or in a parent context. This means that courses that belong
7 | to courses where the specific role is assigned are not deleted.
8 |
9 | Additionally, administrators determine a time period which
10 | serves as a queue time until a course is marked for the cleanup process.
11 | This functionality assures that courses are not altered when roles are merely changed temporary.
12 |
13 | ## Proceeding
14 | A trigger plugin always receives one course. To determine whether the course should be deleted the plugin
15 | checks which roles are present in the course. When at least one responsible role is present the course will not be triggered.
16 | Courses that have no responsible person are saved in the database with a timestamp.
17 | When a course has no responsible person and a entry in the table and the timestamp
18 | is sufficiently old, the course is triggered for the cleanup process of the admin tool.
19 |
20 | For detailed information on trigger plugins visit the
21 | [Wiki](https://github.com/learnweb/moodle-tool_lifecycle/wiki) of the lifecycle admin tool.
--------------------------------------------------------------------------------
/trigger/byrole/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_byrole\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_byrole.
23 | *
24 | * @package lifecycletrigger_byrole
25 | * @copyright WWU Münster
26 | * @author Nina Herrmann
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/byrole/db/install.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/trigger/byrole/lang/de/lifecycletrigger_byrole.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for site course trigger
19 | *
20 | * @package lifecycletrigger_byrole
21 | * @copyright 2017 Tobias Reischmann WWU Nina Herrmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Wieviele Tage ohne Rolle';
26 | $string['delay_help'] = 'Wieviele Tage ein Kurs ohne diese Rolle sein muß, damit der Trigger ausgelöst wird.';
27 | $string['plugindescription'] = 'Löst aus wenn in einem Kurs für eine bestimmte Anzahl an Tagen eine bestimmte Rolle nicht vergeben wurde.';
28 | $string['pluginname'] = 'Kurse mit fehlender Rolle';
29 | $string['privacy:metadata'] = 'Speichert keine Userdaten';
30 | $string['responsibleroles'] = 'Geforderte Rollen im Kurs';
31 | $string['responsibleroles_help'] = 'Wählen Sie hier die geforderten Rollen aus. Wenn mindestens eine dieser Rollen vergeben wurde wird nicht ausgelöst..';
32 |
--------------------------------------------------------------------------------
/trigger/byrole/lang/en/lifecycletrigger_byrole.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for site course trigger
19 | *
20 | * @package lifecycletrigger_byrole
21 | * @copyright 2017 Tobias Reischmann WWU Nina Herrmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Days of delay for triggering';
26 | $string['delay_help'] = 'Days a course has to remain without the mandatory role until the course is finally triggered';
27 | $string['plugindescription'] = 'Triggers if a specified role is misssing in a course for a certain timespan.';
28 | $string['pluginname'] = 'Trigger courses by roles missing';
29 | $string['privacy:metadata'] = 'Does not store user specific data';
30 | $string['responsibleroles'] = 'Responsible Roles in courses';
31 | $string['responsibleroles_help'] = 'Select the roles that have to be present in the course. If one of these roles is present the course is not triggered.';
32 |
--------------------------------------------------------------------------------
/trigger/byrole/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lifecycle By Role Trigger
19 | *
20 | * @package lifecycletrigger_byrole
21 | * @copyright 2017 Tobias Reischmann WWU Nina Herrmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025050400;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_byrole';
31 | $plugin->dependencies = [
32 | 'tool_lifecycle' => 2025050400,
33 | ];
34 | $plugin->release = 'v4.5-r1';
35 | $plugin->maturity = MATURITY_STABLE;
36 |
--------------------------------------------------------------------------------
/trigger/categories/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_categories\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_categories.
23 | *
24 | * @package lifecycletrigger_categories
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/categories/lang/de/lifecycletrigger_categories.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for categories trigger
19 | *
20 | * @package lifecycletrigger_categories
21 | * @copyright 2018 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['categories'] = 'Kategorien, für die der Workflow ausgelöst werden soll.';
26 | $string['categories_do_not_exist'] = 'Es gibt keine Kurskategorien mit den folgenden IDs: {$a}.';
27 | $string['categories_noselection'] = 'Bitte wählen sie mindestens eine Kategorie aus.';
28 | $string['exclude'] = 'Falls ausgewählt, werden gerade die Kurse der angegebenen Kategorien nicht ausgelöst.';
29 | $string['plugindescription'] = 'Selektiert alle Kurse einer Kurskategorie.';
30 | $string['pluginname'] = 'Kategorie-Trigger';
31 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
32 |
--------------------------------------------------------------------------------
/trigger/categories/lang/en/lifecycletrigger_categories.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for categories trigger
19 | *
20 | * @package lifecycletrigger_categories
21 | * @copyright 2018 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['categories'] = 'Categories, for which the workflow should be triggered';
26 | $string['categories_do_not_exist'] = 'There are no categories with the following ids: {$a}.';
27 | $string['categories_noselection'] = 'Please choose at least one category.';
28 | $string['exclude'] = 'If ticked, the named categories are excluded from triggering instead.';
29 | $string['plugindescription'] = 'Selects all courses of a course category.';
30 | $string['pluginname'] = 'Categories trigger';
31 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
32 |
--------------------------------------------------------------------------------
/trigger/categories/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Categories Trigger
19 | *
20 | * @package lifecycletrigger_categories
21 | * @copyright 2025 Thomas Niedermaier Universität Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025050400;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_categories';
31 | $plugin->release = 'v4.5-r1';
32 | $plugin->maturity = MATURITY_STABLE;
33 |
--------------------------------------------------------------------------------
/trigger/customfielddelay/README.md:
--------------------------------------------------------------------------------
1 | # moodle-lifecycletrigger_customfielddelay
2 | This is a trigger subplugin for the admin tool [moodle-tool_lifecycle](https://github.com/learnweb/moodle-tool_lifecycle).
3 | A course will be triggered if the value of a specifiable date customfield is further in the past than a specified period.
4 |
5 |
6 |
--------------------------------------------------------------------------------
/trigger/customfielddelay/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_customfielddelay\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_customfielddelay.
23 | *
24 | * @package lifecycletrigger_customfielddelay
25 | * @copyright 2023 Justus Dieckmann WWU Münster
26 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27 | */
28 | class provider implements null_provider {
29 |
30 | /**
31 | * Get the language string identifier with the component's language
32 | * file to explain why this plugin stores no data.
33 | *
34 | * @return string
35 | */
36 | public static function get_reason(): string {
37 | return 'privacy:metadata';
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/trigger/customfielddelay/lang/de/lifecycletrigger_customfielddelay.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for start date delay trigger
19 | *
20 | * @package lifecycletrigger_customfielddelay
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @copyright 2020 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | $string['customfield'] = 'Ein Customfield des Kurses';
27 | $string['customfield_help'] = 'Der Trigger prüft den Wert dieses Customfields des Kurses.';
28 | $string['delay'] = 'Zeit seit dem Datum des Customfield, bis ein Prozess gestartet wird';
29 | $string['delay_help'] = 'Der Trigger wird ausgeführt, falls die Zeit, die seit dem Customfield-Datum des Kurses vergangen ist, größer ist, als der angegebene Zeitraum.';
30 | $string['plugindescription'] = 'Löst aus wenn das Datum eines zu spezifizierenden Customfield vom Typ Datum nach einem Zeitpunkt in der Zukunft ist.';
31 | $string['pluginname'] = 'Customfield Datum - Trigger';
32 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
33 |
--------------------------------------------------------------------------------
/trigger/customfielddelay/lang/en/lifecycletrigger_customfielddelay.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for start date delay trigger
19 | *
20 | * @package lifecycletrigger_customfielddelay
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @copyright 2020 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | $string['customfield'] = 'Customfield of the course';
27 | $string['customfield_help'] = 'The trigger checks the value saved in the course for this customfield.';
28 | $string['delay'] = 'Delay from customfield date of course until starting a process';
29 | $string['delay_help'] = 'The trigger will be invoked if the time passed since the customfield date of the course is longer than this delay.';
30 | $string['plugindescription'] = 'Triggers if the value of a specifiable datetype customfield is after a point in the future.';
31 | $string['pluginname'] = 'Customfield date delay trigger';
32 | $string['privacy:metadata'] = 'The lifecycletrigger_customfielddelay plugin does not store any personal data.';
33 |
--------------------------------------------------------------------------------
/trigger/customfielddelay/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Customfielddelay Trigger
19 | *
20 | * @package lifecycletrigger_customfielddelay
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @copyright 2020 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | defined('MOODLE_INTERNAL') || die;
27 |
28 | $plugin->version = 2025050400;
29 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
30 | $plugin->supported = [401, 405];
31 | $plugin->component = 'lifecycletrigger_customfielddelay';
32 | $plugin->release = 'v4.5-r1';
33 | $plugin->maturity = MATURITY_STABLE;
34 | $plugin->dependencies = ['customfield_semester' => 2020041304];
35 |
--------------------------------------------------------------------------------
/trigger/delayedcourses/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_delayedcourses\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_delayedcourses.
23 | *
24 | * @package lifecycletrigger_delayedcourses
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/delayedcourses/lang/de/lifecycletrigger_delayedcourses.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for delayed course trigger
19 | *
20 | * @package lifecycletrigger_delayedcourses
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Dieser Trigger wird alle Kurse ausschließen, die durch Nutzerinteraktion verzögert wurden.';
26 | $string['plugindescription'] = 'Schließt Kurse von diesem Workflow aus, die durch Nutzeraktion verzögert wurden.';
27 | $string['pluginname'] = 'Verzögerte Kurse ausschließen - Trigger';
28 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
29 |
30 |
--------------------------------------------------------------------------------
/trigger/delayedcourses/lang/en/lifecycletrigger_delayedcourses.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for delayed course trigger
19 | *
20 | * @package lifecycletrigger_delayedcourses
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'This module will exclude all courses, which were delayed by user interaction';
26 | $string['plugindescription'] = 'Exludes all courses which were delayed by user interaction.';
27 | $string['pluginname'] = 'Exclude delayed courses trigger';
28 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
29 |
--------------------------------------------------------------------------------
/trigger/delayedcourses/lib.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Trigger subplugin to exclude delayed courses.
19 | *
20 | * @package lifecycletrigger_delayedcourses
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 | namespace tool_lifecycle\trigger;
25 |
26 | use tool_lifecycle\local\response\trigger_response;
27 | use tool_lifecycle\local\manager\delayed_courses_manager;
28 |
29 | defined('MOODLE_INTERNAL') || die();
30 | require_once(__DIR__ . '/../lib.php');
31 |
32 | /**
33 | * Class which implements the basic methods necessary for a life cycle trigger subplugin
34 | * @package lifecycletrigger_delayedcourses
35 | * @copyright 2017 Tobias Reischmann WWU
36 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37 | */
38 | class delayedcourses extends base_automatic {
39 |
40 |
41 | /**
42 | * Returns triggertype of trigger: trigger, triggertime or exclude.
43 | * @param object $course DEPRECATED.
44 | * @param int $triggerid DEPRECATED
45 | * @return trigger_response
46 | */
47 | public function check_course($course, $triggerid) {
48 | return trigger_response::exclude();
49 | }
50 |
51 | /**
52 | * Return sql which excludes delayed courses.
53 | * @param int $triggerid Id of the trigger.
54 | * @return array A list containing the constructed sql fragment and an array of parameters.
55 | */
56 | public function get_course_recordset_where($triggerid) {
57 | return delayed_courses_manager::get_course_delayed_wheresql();
58 | }
59 |
60 |
61 | /**
62 | * The return value should be equivalent with the name of the subplugin folder.
63 | * @return string technical name of the subplugin
64 | */
65 | public function get_subpluginname() {
66 | return 'delayedcourses';
67 | }
68 |
69 | /**
70 | * Has only one instance and results in a preset workflow.
71 | * @return bool
72 | */
73 | public function has_multiple_instances() {
74 | return false;
75 | }
76 |
77 | }
78 |
--------------------------------------------------------------------------------
/trigger/delayedcourses/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Delayed Course Trigger
19 | *
20 | * @package lifecycletrigger_delayedcourses
21 | * @subpackage delayedcourses
22 | * @copyright 2025 Thomas Niedermaier Universität Münster
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | defined('MOODLE_INTERNAL') || die;
27 |
28 | $plugin->version = 2025040600;
29 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
30 | $plugin->supported = [401, 405];
31 | $plugin->component = 'lifecycletrigger_delayedcourses';
32 | $plugin->release = 'v4.5-r1';
33 | $plugin->maturity = MATURITY_STABLE;
34 |
--------------------------------------------------------------------------------
/trigger/manual/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_manual\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_manual.
23 | *
24 | * @package lifecycletrigger_manual
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/manual/lang/de/lifecycletrigger_manual.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for manual trigger
19 | *
20 | * @package lifecycletrigger_manual
21 | * @copyright 2018 WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['plugindescription'] = 'Dieser Trigger erlaubt berechtigten Nicht-Administrator/innen diesen Workflow zu starten.';
26 | $string['pluginname'] = 'Manueller Trigger';
27 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
28 | $string['setting_capability'] = 'Berechtigung';
29 | $string['setting_capability_help'] = 'Die Moodle-Berechtigung, die ein Nutzer benötigt, um einen Workflow mit diesem Trigger zu sehen und auszulösen, z.B. "enrol/manual:enrol". Bitte schauen Sie sich die Moodle Access API für Details an.';
30 | $string['setting_displayname'] = 'Aktionsname';
31 | $string['setting_displayname_default'] = 'Benutzer-Freigabe';
32 | $string['setting_displayname_help'] = 'Der Name für die Triggeraktion, der dem Nutzer angezeigt wird.';
33 | $string['setting_icon'] = 'Icon';
34 | $string['setting_icon_default'] = 'e/tick';
35 | $string['setting_icon_help'] = 'Das Moodle-Icon das dem Nutzer für diesen Trigger angezeigt wird, z.B. "e/tick". Die ganze Liste möglicher Icons kann in der Moodle-Dokumentation gefunden werden.';
36 |
--------------------------------------------------------------------------------
/trigger/manual/lang/en/lifecycletrigger_manual.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for manual trigger
19 | *
20 | * @package lifecycletrigger_manual
21 | * @copyright 2018 WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['plugindescription'] = 'Entitles authorized not-admins to initiate this workflow.';
26 | $string['pluginname'] = 'Manual trigger';
27 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
28 | $string['setting_capability'] = 'Capability';
29 | $string['setting_capability_help'] = 'The Moodle capability needed to see and invoke a workflow using this trigger, e.g. "enrol/manual:enrol". Please see Moodle access API documentation for details.';
30 | $string['setting_displayname'] = 'Action name';
31 | $string['setting_displayname_default'] = 'User Confirmation';
32 | $string['setting_displayname_help'] = 'A name for the trigger action displayed to the user.';
33 | $string['setting_icon'] = 'Icon';
34 | $string['setting_icon_default'] = 'e/tick';
35 | $string['setting_icon_help'] = 'The Moodle icon to be showed to the user for this trigger, e.g. "e/tick". A full list of possible icons can be found at Moodle documentation.';
36 |
--------------------------------------------------------------------------------
/trigger/manual/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Manual Trigger
19 | *
20 | * @package lifecycletrigger_manual
21 | * @copyright 2025 Thomas Niedermaier Universität Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025050400;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_manual';
31 | $plugin->release = 'v4.5-r1';
32 | $plugin->maturity = MATURITY_STABLE;
33 |
--------------------------------------------------------------------------------
/trigger/semindependent/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | sudo: false
4 |
5 | cache:
6 | directories:
7 | - $HOME/.composer/cache
8 |
9 | php:
10 | - 7.2
11 |
12 | addons:
13 | postgresql: "9.5"
14 |
15 | services:
16 | - mysql
17 |
18 | matrix:
19 | allow_failures:
20 | - env: DB=pgsql MOODLE_BRANCH=master
21 | - env: DB=mysqli MOODLE_BRANCH=master
22 | fast_finish: true
23 |
24 | env:
25 | global:
26 | - IGNORE_PATHS=amd/build
27 | matrix:
28 | - DB=pgsql MOODLE_BRANCH=MOODLE_38_STABLE
29 | - DB=pgsql MOODLE_BRANCH=master
30 | - DB=mysqli MOODLE_BRANCH=MOODLE_38_STABLE
31 | - DB=mysqli MOODLE_BRANCH=master
32 |
33 | before_install:
34 | - phpenv config-rm xdebug.ini
35 | - nvm install 8.9.4
36 | - cd ../..
37 | - composer selfupdate
38 | - composer create-project -n --no-dev --prefer-dist blackboard-open-source/moodle-plugin-ci ci ^2
39 | - export PATH="$(cd ci/bin; pwd):$(cd ci/vendor/bin; pwd):$PATH"
40 |
41 | install:
42 | - moodle-plugin-ci add-plugin --branch master learnweb/moodle-tool_lifecycle
43 | - moodle-plugin-ci install
44 |
45 | script:
46 | - moodle-plugin-ci phplint
47 | - moodle-plugin-ci phpcpd
48 | - moodle-plugin-ci phpmd
49 | - moodle-plugin-ci codechecker
50 | - moodle-plugin-ci validate
51 | - moodle-plugin-ci phpunit --coverage-clover
52 | - moodle-plugin-ci behat
53 |
54 | after_success:
55 | - bash <(curl -s https://codecov.io/bash)
56 |
--------------------------------------------------------------------------------
/trigger/semindependent/README.md:
--------------------------------------------------------------------------------
1 | # moodle-lifecycletrigger_semindependent
2 | This is a trigger-Subplugin for the admin tool [moodle-tool_lifecycle](https://github.com/learnweb/moodle-tool_lifecycle).
3 | The basic setting at our institution is, that courses with a start date before the 1.1.2000
4 | are considered semester independent. All others are belonging to a specific semester such as winter semester 19/20.
5 | This plugin can be used to filter semester independent courses from courses that belong to a semester.
6 | ## Settings
7 | For each trigger instance it can be defined if semester independent courses should be included or excluded.
8 |
9 | For detailed information on trigger plugins visit the
10 | [Wiki](https://github.com/learnweb/moodle-tool_lifecycle/wiki) of the lifecycle admin tool.
--------------------------------------------------------------------------------
/trigger/semindependent/lang/de/lifecycletrigger_semindependent.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for semester independent trigger
19 | *
20 | * @package lifecycletrigger_semindependent
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @copyright 2019 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | $string['exclude'] = 'Exkludiere semesterunabhängige Kurse';
27 | $string['exclude_help'] = 'Ist diese Option aktiviert werden semesterunabhängige Kurse ausgeschlossen, wenn nicht werden sie inkludiert.';
28 | $string['plugindescription'] = 'Inkludiert oder exkludiert Kurse ohne Startdatum.';
29 | $string['pluginname'] = 'Semesterunabhängige Kurse Trigger';
30 |
--------------------------------------------------------------------------------
/trigger/semindependent/lang/en/lifecycletrigger_semindependent.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for semester independent trigger
19 | *
20 | * @package lifecycletrigger_semindependent
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @copyright 2019 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | $string['exclude'] = 'Exclude semester independent';
27 | $string['exclude_help'] = 'If true, semester independent courses are excluded from workflow,
28 | otherwise they are included.';
29 | $string['plugindescription'] = 'Include or exclude courses that have no start date.';
30 | $string['pluginname'] = 'Semester independent trigger';
31 |
--------------------------------------------------------------------------------
/trigger/semindependent/tests/generator/lib.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | use tool_lifecycle\local\entity\trigger_subplugin;
18 | use tool_lifecycle\local\entity\workflow;
19 | use tool_lifecycle\local\manager\settings_manager;
20 | use tool_lifecycle\local\manager\trigger_manager;
21 | use tool_lifecycle\local\manager\workflow_manager;
22 | use tool_lifecycle\settings_type;
23 |
24 | /**
25 | * lifecycletrigger_semindependent generator tests
26 | *
27 | * @package lifecycletrigger_semindependent
28 | * @category test
29 | * @copyright 2025 Thomas Niedermaier University Münster
30 | * @copyright 2018 Tobias Reischmann WWU
31 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
32 | */
33 | class tool_lifecycle_trigger_semindependent_generator extends testing_module_generator {
34 |
35 | /**
36 | * Creates a trigger semindependent for an artificial workflow without steps.
37 | * @param bool $exclude
38 | * @return trigger_subplugin the semindependent trigger.
39 | * @throws dml_exception
40 | * @throws dml_transaction_exception
41 | * @throws moodle_exception
42 | */
43 | public static function create_workflow_with_semindependent($exclude) {
44 | // Create Workflow.
45 | $record = new stdClass();
46 | $record->id = null;
47 | $record->title = 'myworkflow';
48 | $workflow = workflow::from_record($record);
49 | workflow_manager::insert_or_update($workflow);
50 | // Create trigger.
51 | $record = new stdClass();
52 | $record->subpluginname = 'semindependent';
53 | $record->instancename = 'semindependent';
54 | $record->workflowid = $workflow->id;
55 | $trigger = trigger_subplugin::from_record($record);
56 | trigger_manager::insert_or_update($trigger);
57 | // Set exclude setting.
58 | $settings = new stdClass();
59 | $settings->exclude = $exclude;
60 | settings_manager::save_settings($trigger->id, settings_type::TRIGGER, $trigger->subpluginname, $settings);
61 |
62 | return $trigger;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/trigger/semindependent/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Semester independent Trigger
19 | *
20 | * @package lifecycletrigger_semindependent
21 | * @subpackage semindependent
22 | * @copyright 2019 Tobias Reischmann WWU
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 | */
25 |
26 | defined('MOODLE_INTERNAL') || die;
27 |
28 | $plugin->version = 2025050400;
29 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
30 | $plugin->supported = [401, 405];
31 | $plugin->component = 'lifecycletrigger_semindependent';
32 | $plugin->dependencies = [
33 | 'tool_lifecycle' => 2025050400,
34 | ];
35 | $plugin->release = 'v4.5-r1';
36 | $plugin->maturity = MATURITY_STABLE;
37 |
--------------------------------------------------------------------------------
/trigger/sitecourse/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_sitecourse\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_sitecourse.
23 | *
24 | * @package lifecycletrigger_sitecourse
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/sitecourse/lang/de/lifecycletrigger_sitecourse.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for site course trigger
19 | *
20 | * @package lifecycletrigger_sitecourse
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Dieser Trigger wird den Startseitenkurs ausschließen.';
26 | $string['plugindescription'] = 'Schließt den Startseitenkurs von diesen Workflow aus.';
27 | $string['pluginname'] = 'Startseitenkurs ausschließen - Trigger';
28 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
29 |
30 |
--------------------------------------------------------------------------------
/trigger/sitecourse/lang/en/lifecycletrigger_sitecourse.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for site course trigger
19 | *
20 | * @package lifecycletrigger_sitecourse
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'This module will exclude the site course from processing';
26 | $string['plugindescription'] = 'Excludes the site course from this workflow.';
27 | $string['pluginname'] = 'Exclude site course trigger';
28 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
29 |
30 |
--------------------------------------------------------------------------------
/trigger/sitecourse/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Site Course Trigger
19 | *
20 | * @package lifecycletrigger_sitecourse
21 | * @copyright 2025 Thomas Niedermaier Universität Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025040600;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_sitecourse';
31 | $plugin->release = 'v4.5-r1';
32 | $plugin->maturity = MATURITY_STABLE;
33 |
--------------------------------------------------------------------------------
/trigger/specificdate/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_specificdate\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_specificdate.
23 | *
24 | * @package lifecycletrigger_specificdate
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/specificdate/lang/de/lifecycletrigger_specificdate.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for specific date trigger
19 | *
20 | * @package lifecycletrigger_specificdate
21 | * @copyright 2018 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['dates'] = 'Daten, an denen der Workflow ausgeführt werden soll.';
26 | $string['dates_help'] = 'Ein Datum pro Zeile in dem Format Tag.Monat
Zum Beispiel 04.08 für den 4. August. Wenn Sie das heutige Datum wählen, wird es getriggert.';
27 | $string['dates_not_parseable'] = 'Daten müssen in dem Format Tag.Monat sein!';
28 | $string['plugindescription'] = 'Definiert Zeiträume, in denen dieser Workflow ausgeführt werden soll.';
29 | $string['pluginname'] = 'Bestimmtes Datum - Trigger';
30 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
31 | $string['timelastrun'] = 'Datum, an dem der Trigger zuletzt ausgeführt wurde.';
32 | $string['timelastrunactive'] = 'Nur einmal pro Tag';
33 |
--------------------------------------------------------------------------------
/trigger/specificdate/lang/en/lifecycletrigger_specificdate.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for specific date trigger
19 | *
20 | * @package lifecycletrigger_specificdate
21 | * @copyright 2018 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['dates'] = 'Dates at which the workflow should run.';
26 | $string['dates_help'] = 'Write one date per line with the format Day.Month
For example 04.08 for 4th of august. If you put in today\'s date, it will be triggered.';
27 | $string['dates_not_parseable'] = 'Dates must be of the format Day.Month';
28 | $string['plugindescription'] = 'Defines time slots at which this workflow should run.';
29 | $string['pluginname'] = 'Specific date trigger';
30 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
31 | $string['timelastrun'] = 'Date when the trigger last run.';
32 | $string['timelastrunactive'] = 'Only once a day';
33 |
--------------------------------------------------------------------------------
/trigger/specificdate/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Specific Date Trigger
19 | *
20 | * @package lifecycletrigger_specificdate
21 | * @copyright 2025 Thomas Niedermaier Universität Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025050400;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_specificdate';
31 | $plugin->release = 'v4.5-r1';
32 | $plugin->maturity = MATURITY_STABLE;
33 |
--------------------------------------------------------------------------------
/trigger/startdatedelay/classes/privacy/provider.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | namespace lifecycletrigger_startdatedelay\privacy;
18 |
19 | use core_privacy\local\metadata\null_provider;
20 |
21 | /**
22 | * Privacy subsystem implementation for lifecycletrigger_startdatedelay.
23 | *
24 | * @package lifecycletrigger_startdatedelay
25 | * @copyright 2022 ISB Bayern
26 | * @author Philipp Memmel
27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 | */
29 | class provider implements null_provider {
30 |
31 | /**
32 | * Get the language string identifier with the component's language
33 | * file to explain why this plugin stores no data.
34 | *
35 | * @return string the reason
36 | */
37 | public static function get_reason(): string {
38 | return 'privacy:metadata';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/trigger/startdatedelay/lang/de/lifecycletrigger_startdatedelay.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for start date delay trigger
19 | *
20 | * @package lifecycletrigger_startdatedelay
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Zeit seit Kursstartdatum, bis ein Prozess gestartet wird';
26 | $string['delay_help'] = 'Dieser Trigger wird ausgeführt, sobald die Zeit, die seit dem Start des Kurses vergangen ist, größer ist als der angegebene Zeitraum.';
27 | $string['plugindescription'] = 'Trigger des Lifecycle-Tools, der bestimmt, wieviel Zeit nach dem Startdatum des Kurses verstreichen muss ehe dieser Workflow startet.';
28 | $string['pluginname'] = 'Startdatumsabstand - Trigger';
29 | $string['privacy:metadata'] = 'Dieses Subplugin speichert keine persönlichen Daten.';
30 |
31 |
--------------------------------------------------------------------------------
/trigger/startdatedelay/lang/en/lifecycletrigger_startdatedelay.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Lang strings for start date delay trigger
19 | *
20 | * @package lifecycletrigger_startdatedelay
21 | * @copyright 2017 Tobias Reischmann WWU
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | $string['delay'] = 'Delay from start of course until starting a process';
26 | $string['delay_help'] = 'The trigger will be invoked if the time passed since the course has started is longer than this delay.';
27 | $string['plugindescription'] = 'Defines the time that has to pass after the course start date has been reached before this workflow starts.';
28 | $string['pluginname'] = 'Start date delay trigger';
29 | $string['privacy:metadata'] = 'This subplugin does not store any personal data.';
30 |
31 |
--------------------------------------------------------------------------------
/trigger/startdatedelay/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Life Cycle Startdate Trigger
19 | *
20 | * @package lifecycletrigger_startdatedelay
21 | * @copyright 2025 Thomas Niedermaier Universität Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->version = 2025050400;
28 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
29 | $plugin->supported = [401, 405];
30 | $plugin->component = 'lifecycletrigger_startdatedelay';
31 | $plugin->release = 'v4.5-r1';
32 | $plugin->maturity = MATURITY_STABLE;
33 |
--------------------------------------------------------------------------------
/version.php:
--------------------------------------------------------------------------------
1 | .
16 |
17 | /**
18 | * Version details.
19 | *
20 | * @package tool_lifecycle
21 | * @copyright 2025 Thomas Niedermaier University Münster
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 | */
24 |
25 | defined('MOODLE_INTERNAL') || die;
26 |
27 | $plugin->maturity = MATURITY_STABLE;
28 | $plugin->version = 2025050403;
29 | $plugin->component = 'tool_lifecycle';
30 | $plugin->requires = 2022112800; // Requires Moodle 4.1+.
31 | $plugin->supported = [401, 405];
32 | $plugin->release = 'v4.5-r4';
33 |
--------------------------------------------------------------------------------