Skip to content

Commit e8a1aaa

Browse files
Merge pull request #79 from catalyst/issue71
issue #71: add user last login and user created conditions
2 parents c4ac816 + 9ca3607 commit e8a1aaa

File tree

7 files changed

+995
-2
lines changed

7 files changed

+995
-2
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ Conditions are simple predicates which assert something about a user in the syst
5757
* Authentication method (Manual, SAML and etc)
5858
* Cohort fields (if a user is a member of cohort(s) matching specific cohort fields like cohort name, context, custom fields and etc)
5959
* Cohort membership (if a user is a member of cohort(s)).
60+
* Course completed (if a user has completed a course).
61+
* Course not completed (if a user has not completed a course).
62+
* User last login (time since a user last logged in).
63+
* User created time (time since a user was created).
6064
* User standard profile fields (e.g. first name, last name, username, auth method and etc).
6165
* User custom profile fields (text and menu types are supported).
6266

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?php
2+
// This file is part of Moodle - https://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 <https://www.gnu.org/licenses/>.
16+
17+
namespace tool_dynamic_cohorts\local\tool_dynamic_cohorts\condition;
18+
19+
/**
20+
* Condition based on user created date.
21+
*
22+
* @package tool_dynamic_cohorts
23+
* @copyright 2024 Catalyst IT
24+
* @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25+
*/
26+
class user_created extends user_last_login {
27+
28+
/**
29+
* Condition name.
30+
*
31+
* @return string
32+
*/
33+
public function get_name(): string {
34+
return get_string('condition:user_created', 'tool_dynamic_cohorts');
35+
}
36+
37+
/**
38+
* Gets a list of operators.
39+
*
40+
* @return array A list of operators.
41+
*/
42+
protected function get_operators(): array {
43+
return [
44+
self::OPERATOR_IN_LAST => get_string('inlast', 'tool_dynamic_cohorts'),
45+
self::OPERATOR_BEFORE => get_string('before', 'tool_dynamic_cohorts'),
46+
self::OPERATOR_AFTER => get_string('after', 'tool_dynamic_cohorts'),
47+
];
48+
}
49+
50+
/**
51+
* Gets the operator form label.
52+
*
53+
* @return string The operator form label.
54+
*/
55+
protected function get_operator_form_label(): string {
56+
return get_string('usercreated', 'tool_dynamic_cohorts');
57+
}
58+
59+
/**
60+
* Human-readable description of the configured condition.
61+
*
62+
* @return string
63+
*/
64+
public function get_config_description(): string {
65+
$description = '';
66+
67+
switch ($this->get_operator_value()) {
68+
case self::OPERATOR_BEFORE:
69+
case self::OPERATOR_AFTER:
70+
$description = get_string('usercreatedtime', 'tool_dynamic_cohorts', (object)[
71+
'operator' => strtolower($this->get_operators()[$this->get_operator_value()]),
72+
'time' => userdate($this->get_time_value()),
73+
]);
74+
break;
75+
case self::OPERATOR_IN_LAST:
76+
$description = get_string('usercreatedin', 'tool_dynamic_cohorts', $this->get_period());
77+
break;
78+
}
79+
80+
return $description;
81+
}
82+
83+
/**
84+
* Gets DB field name to apply filtering on.
85+
*
86+
* @return string
87+
*/
88+
protected function get_db_field(): string {
89+
return 'timecreated';
90+
}
91+
92+
/**
93+
* Event to trigger condition.
94+
*
95+
* @return string[]
96+
*/
97+
public function get_events(): array {
98+
return [
99+
'\core\event\user_created',
100+
];
101+
}
102+
}

0 commit comments

Comments
 (0)