Skip to content

Commit

Permalink
1.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
LukeWCS committed Apr 21, 2024
1 parent 323e3fb commit 2cc3ee1
Show file tree
Hide file tree
Showing 16 changed files with 160 additions and 72 deletions.
2 changes: 1 addition & 1 deletion docs/version_check.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"stable": {
"3.3": {
"current": "1.0.1",
"current": "1.1.0",
"announcement": "https://github.com/LukeWCS/force-account-reactivation/releases",
"eol": null,
"security": false
Expand Down
21 changes: 21 additions & 0 deletions force-account-reactivation_build_changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
### 1.1.0
* Release (2024-04-21)
* Fix: Der seltene (exotische) Fall, wenn ein Benutzer keiner Gruppe zugeordnet ist, wird jetzt berücksichtigt, da dies zu einem FATAL führen konnte.
* Benutzerkonten bei denen es noch keinen Login gab, können jetzt optional ebenfalls berücksichtigt werden.
* ACP-Template:
* Neuen Schalter eingebaut für non-login Konten.
* ACP-Controller:
* Den neuen non-login Schalter verdrahtet.
* Code Optimierung:
* Unnötig aufwendigen SQL Code reduziert.
* Kleinere Verbesserungen.
* JS:
* Abblenden an den neuen Schalter angepasst.
* CSS:
* Einheitliche Notation von Werten kleiner 1.
* Sprachdateien:
* 2 neue Variablen für den neuen Schalter.
* Kleinere Änderungen bei den deutschen Paketen.
* Migration:
* Neue Migration für den non-login Schalter.

### 1.0.1
* Release (2024-04-03)
* Fix: In einer seltenen Situation konnte es vorkommen, dass ein Benutzer bei der Anmeldung von FAR ignoriert wurde. Dieser Fehler trat dann auf, wenn der Benutzer Mitglied der NRU Gruppe war und der Administrator die NRU Gruppe in FAR ausgeschlossen hat und dann zu einem späteren Zeitpunkt die NRU Funktion bei phpBB deaktiviert hat.
Expand Down
12 changes: 12 additions & 0 deletions force-account-reactivation_changelog_de.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
### 1.1.0
(2024-04-21)

* Fix: Der seltene (exotische) Fall, wenn ein Benutzer keiner Gruppe zugeordnet ist, wird jetzt berücksichtigt, da dies zu einem FATAL führen konnte.
* Benutzerkonten bei denen es noch keinen Login gab, können jetzt optional ebenfalls berücksichtigt werden. Dafür gibt es einen neuen Schalter, der per Standard deaktiviert ist.
* Code Optimierung:
* Unnötig aufwendigen SQL Code reduziert.
* Kleinere Verbesserungen.
* Sprachdateien:
* 2 neue Variablen für den neuen Schalter.
* Kleinere Änderungen bei den deutschen Paketen.

### 1.0.1
(2024-04-03)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
.foraccrea_footer {
margin-top: 1em;
text-align: center;
font-size: .75em;
font-size: 0.75em;
}

/* SETTINGS */
Expand Down Expand Up @@ -93,6 +93,6 @@ code {
}

#foraccrea_settings dd {
margin-top: .5em;
margin-top: 0.5em;
}
}
11 changes: 10 additions & 1 deletion lukewcs/forcereactivation/adm/style/acp_foraccrea_settings.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>
</dd>
</dl>

<dl>
<dt>
<label>{{ lang('FORACCREA_CONSIDER_NON_LOGIN') ~ lang('COLON') }}</label><br>
<span>{{ lang('FORACCREA_CONSIDER_NON_LOGIN_EXPLAIN') }}</span>
</dt>
<dd>
{{ _self.switch('foraccrea_consider_non_login', FORACCREA_CONSIDER_NON_LOGIN, switch_type) }}
</dd>
</dl>

<dl>
<dt>
<label>{{ lang('FORACCREA_EXCLUDE_GROUPS') ~ lang('COLON') }}</label><br>
Expand All @@ -73,7 +83,6 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>
</dt>
<dd>
{{ _self.select('foraccrea_exclude_groups', FORACCREA_EXCLUDE_GROUPS, true, 8) }}

</dd>
</dl>

Expand Down
4 changes: 4 additions & 0 deletions lukewcs/forcereactivation/adm/style/acp_foraccrea_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ function setState() {
!$('[name="foraccrea_enable"]').prop('checked')
|| !foraccrea.mail_enabled
);
dimOptionGroup('[name="foraccrea_consider_non_login"]',
!$('[name="foraccrea_enable"]').prop('checked')
|| !foraccrea.mail_enabled
);
dimOptionGroup('[name="foraccrea_exclude_nru"]',
!$('[name="foraccrea_enable"]').prop('checked')
|| !foraccrea.mail_enabled
Expand Down
6 changes: 3 additions & 3 deletions lukewcs/forcereactivation/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"type": "phpbb-extension",
"description": "Allows you to force an automatic user account reactivation if it has been too long since the user last logged in.",
"homepage": "https://github.com/LukeWCS",
"version": "1.0.1",
"time": "2024-04-03",
"version": "1.1.0",
"time": "2024-04-21",
"license": "GPL-2.0-only",
"authors": [
{
Expand All @@ -19,7 +19,7 @@
},
"extra": {
"display-name": "Force Account Reactivation",
"lang-min-ver": "1.0.1",
"lang-min-ver": "1.1.0",
"soft-require": {
"phpbb/phpbb": ">=3.3.0,<3.4.0@dev"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public function module_settings(): void
$this->config->set('foraccrea_enable' , $this->request->variable('foraccrea_enable' , 0));
$this->config->set('foraccrea_time_range' , $this->request->variable('foraccrea_time_range' , 2));
$this->config->set('foraccrea_time_range_type' , $this->request->variable('foraccrea_time_range_type' , 'years'));
$this->config->set('foraccrea_consider_non_login' , $this->request->variable('foraccrea_consider_non_login' , 0));
$this->config->set('foraccrea_exclude_groups' , json_encode($this->request->variable('foraccrea_exclude_groups' , [0])));
$this->config->set('foraccrea_exclude_nru' , $this->request->variable('foraccrea_exclude_nru' , 0));

Expand Down Expand Up @@ -107,6 +108,7 @@ public function module_settings(): void
['FORACCREA_TIME_RANGE_YEARS', 'years'],
['FORACCREA_TIME_RANGE_MONTHS', 'months'],
]),
'FORACCREA_CONSIDER_NON_LOGIN' => $this->config['foraccrea_consider_non_login'],
'FORACCREA_EXCLUDE_GROUPS' => $this->select_struct(json_decode($this->config['foraccrea_exclude_groups']) ?? [],
$exclude_groups
),
Expand Down
27 changes: 16 additions & 11 deletions lukewcs/forcereactivation/event/listener.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,31 +73,36 @@ public function check_force_reactivation($event)
}

// Determine the user's last visit.
$sql = 'SELECT session_user_id, MAX(session_time) AS session_time
$sql = 'SELECT MAX(session_time) AS session_time
FROM ' . SESSIONS_TABLE . '
WHERE session_user_id = ' . (int) $user_row['user_id'];
$result = $this->db->sql_query($sql);
$user_last_session = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
$user_lastvisit = $user_last_session['session_time'] ?? $user_row['user_lastvisit'] ?? 1;
$user_lastvisit = $user_last_session['session_time'] ?? $user_row['user_lastvisit'];

// Determine the user's groups.
$group_memberships = group_memberships(false, $user_row['user_id']);
$group_memberships = group_memberships(false, $user_row['user_id']) ?: [];
$user_group_ids = array_column($group_memberships, 'group_id');

// Check whether a user account without login should be taken into account.
if ($user_lastvisit == 0 && $this->config['foraccrea_consider_non_login'])
{
$user_lastvisit = $user_row['user_regdate'];
}

// Check whether the user is excluded if NRU is enabled and the user is a member of the NRU group.
if ($this->config['new_member_post_limit'])
{
// Determine the ID of the NRU group.
$sql = 'SELECT group_id, group_type, group_name
$sql = 'SELECT group_id
FROM ' . GROUPS_TABLE . '
WHERE group_name = "NEWLY_REGISTERED"';
WHERE group_name = "NEWLY_REGISTERED"
AND group_type = ' . GROUP_SPECIAL;
$result = $this->db->sql_query($sql);
$nru_group = $this->db->sql_fetchrow($result);
$nru_group_id = $this->db->sql_fetchfield('group_id');
$this->db->sql_freeresult($result);
$nru_group_id = $nru_group['group_id'] ?? null;

if ($nru_group_id !== null && array_search($nru_group_id, $user_group_ids) !== false)
if ($nru_group_id !== false && array_search($nru_group_id, $user_group_ids) !== false)
{
$exclude_user = (bool) $this->config['foraccrea_exclude_nru'];
}
Expand All @@ -111,10 +116,10 @@ public function check_force_reactivation($event)
$exclude_user = count($intersect_group_ids) > 0;
}

// Check conditions for forced reactivation
// Check conditions for forced reactivation.
if ($exclude_user
|| $user_lastvisit == 0
|| $user_lastvisit >= strtotime(' - ' . $this->config['foraccrea_time_range'] . ' ' . $this->config['foraccrea_time_range_type'])
|| $user_lastvisit >= strtotime("- {$this->config['foraccrea_time_range']} {$this->config['foraccrea_time_range_type']}")
)
{
// We don't have to act, user is allowed to pass.
Expand Down
36 changes: 19 additions & 17 deletions lukewcs/forcereactivation/language/de/acp_foraccrea.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,27 @@
// ’ « » “ ” … „ “

$lang = array_merge($lang, [
'FORACCREA_CONFIG_TITLE' => 'Konto-Reaktivierung erzwingen',
'FORACCREA_CONFIG_DESC' => 'Hier kannst du die Einstellungen für die Erweiterung <strong>%s</strong> ändern.',
'FORACCREA_CONFIG_TITLE' => 'Konto-Reaktivierung erzwingen',
'FORACCREA_CONFIG_DESC' => 'Hier kannst du die Einstellungen für die Erweiterung <strong>%s</strong> ändern.',

'FORACCREA_SERVICES_REQUIRED' => 'Benötigte phpBB Dienste',
'FORACCREA_SERVICES_OPTIONAL' => 'Optionale phpBB Dienste',
'FORACCREA_SERVICES_REQUIRED' => 'Benötigte phpBB Dienste',
'FORACCREA_SERVICES_OPTIONAL' => 'Optionale phpBB Dienste',

'FORACCREA_SETTINGS_TITLE' => 'Einstellungen',
'FORACCREA_ENABLE' => 'Funktion aktivieren',
'FORACCREA_ENABLE_EXPLAIN' => 'Mit diesem Schalter kannst du die erzwungene Konto-Reaktivierung deaktivieren, ohne die Erweiterung komplett deaktivieren zu müssen.',
'FORACCREA_TIME_RANGE' => 'Gültiger Zeitraum',
'FORACCREA_TIME_RANGE_EXPLAIN' => 'Hier kannst du festlegen, wie lange die letzte Anmeldung eines Benutzerkontos maximal her sein darf, bevor eine Reaktivierung erzwungen wird.',
'FORACCREA_TIME_RANGE_YEARS' => 'Jahre',
'FORACCREA_TIME_RANGE_MONTHS' => 'Monate',
'FORACCREA_EXCLUDE_GROUPS' => 'Gruppen ausschließen',
'FORACCREA_EXCLUDE_GROUPS_EXPLAIN' => 'Hier kannst du Gruppen auswählen, die von einer erzwungenen Konto-Reaktivierung ausgeschlossen werden sollen. Gründer und Bots sind generell ausgeschlossen. Ist ein Benutzer Mitglied einer ausgeschlossenen Gruppe, wird er auch dann ausgeschlossen, wenn er in anderen Gruppen nicht ausgeschlossen ist.',
'FORACCREA_EXCLUDE_NRU' => '„Kürzlich registrierte Benutzer“ ausschließen',
'FORACCREA_EXCLUDE_NRU_EXPLAIN' => 'Wenn ein Benutzer Mitglied in dieser Gruppe ist, spielt es keine Rolle welche Auswahl bei „Gruppen ausschließen“ vorgenommen wird, da nur dieser Schalter relevant ist.',
'FORACCREA_SETTINGS_TITLE' => 'Einstellungen',
'FORACCREA_ENABLE' => 'Funktion aktivieren',
'FORACCREA_ENABLE_EXPLAIN' => 'Mit diesem Schalter kannst du die erzwungene Konto-Reaktivierung deaktivieren, ohne die Erweiterung komplett deaktivieren zu müssen.',
'FORACCREA_TIME_RANGE' => 'Gültiger Zeitraum',
'FORACCREA_TIME_RANGE_EXPLAIN' => 'Hier kannst du festlegen, wie lange die letzte Anmeldung eines Benutzerkontos maximal her sein darf, bevor eine Reaktivierung erzwungen wird.',
'FORACCREA_TIME_RANGE_YEARS' => 'Jahre',
'FORACCREA_TIME_RANGE_MONTHS' => 'Monate',
'FORACCREA_CONSIDER_NON_LOGIN' => 'Berücksichtige Benutzerkonten ohne Anmeldung',
'FORACCREA_CONSIDER_NON_LOGIN_EXPLAIN' => 'Wenn dieser Schalter aktiviert ist, werden Benutzerkonten, mit denen noch nie eine Anmeldung durchgeführt wurde, ebenso berücksichtigt. Bei solchen Konten zählt das Datum der Registrierung als letzte Anmeldung.',
'FORACCREA_EXCLUDE_GROUPS' => 'Gruppen ausschließen',
'FORACCREA_EXCLUDE_GROUPS_EXPLAIN' => 'Hier kannst du Gruppen auswählen, die von einer erzwungenen Konto-Reaktivierung ausgeschlossen werden sollen. Gründer, Gäste und Bots sind generell ausgeschlossen. Ist ein Benutzer Mitglied einer ausgeschlossenen Gruppe, wird er auch dann ausgeschlossen, wenn er in anderen Gruppen nicht ausgeschlossen ist.',
'FORACCREA_EXCLUDE_NRU' => '„Kürzlich registrierte Benutzer“ ausschließen',
'FORACCREA_EXCLUDE_NRU_EXPLAIN' => 'Wenn ein Benutzer Mitglied in dieser Gruppe ist, spielt es keine Rolle welche Auswahl bei „Gruppen ausschließen“ vorgenommen wird, da nur dieser Schalter relevant ist.',

'FORACCREA_MULTISELECT_EXPLAIN' => 'Mit der gedrückten Taste „Strg“ („cmd“ bei macOS) kannst du eine Mehrfachauswahl vornehmen oder einzelne Einträge abwählen.',
'FORACCREA_MULTISELECT_EXPLAIN' => 'Mit der gedrückten Taste „Strg“ („cmd“ bei macOS) kannst du eine Mehrfachauswahl vornehmen oder einzelne Einträge abwählen.',

'FORACCREA_MSG_SAVED_SETTINGS' => 'Force Account Reactivation: Einstellungen erfolgreich gespeichert',
'FORACCREA_MSG_SAVED_SETTINGS' => 'Konto-Reaktivierung erzwingen: Einstellungen erfolgreich gespeichert',
]);
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
$lang = array_merge($lang, [
// language pack author
'FORACCREA_LANG_DESC' => 'Deutsch (Du)',
'FORACCREA_LANG_VER' => '1.0.1',
'FORACCREA_LANG_VER' => '1.1.0',
'FORACCREA_LANG_AUTHOR' => 'LukeWCS',

// messages
Expand Down
36 changes: 19 additions & 17 deletions lukewcs/forcereactivation/language/de_x_sie/acp_foraccrea.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,27 @@
// ’ « » “ ” … „ “

$lang = array_merge($lang, [
'FORACCREA_CONFIG_TITLE' => 'Konto-Reaktivierung erzwingen',
'FORACCREA_CONFIG_DESC' => 'Hier können Sie die Einstellungen für die Erweiterung <strong>%s</strong> ändern.',
'FORACCREA_CONFIG_TITLE' => 'Konto-Reaktivierung erzwingen',
'FORACCREA_CONFIG_DESC' => 'Hier können Sie die Einstellungen für die Erweiterung <strong>%s</strong> ändern.',

'FORACCREA_SERVICES_REQUIRED' => 'Benötigte phpBB Dienste',
'FORACCREA_SERVICES_OPTIONAL' => 'Optionale phpBB Dienste',
'FORACCREA_SERVICES_REQUIRED' => 'Benötigte phpBB Dienste',
'FORACCREA_SERVICES_OPTIONAL' => 'Optionale phpBB Dienste',

'FORACCREA_SETTINGS_TITLE' => 'Einstellungen',
'FORACCREA_ENABLE' => 'Funktion aktivieren',
'FORACCREA_ENABLE_EXPLAIN' => 'Mit diesem Schalter können Sie die erzwungene Konto-Reaktivierung deaktivieren, ohne die Erweiterung komplett deaktivieren zu müssen.',
'FORACCREA_TIME_RANGE' => 'Gültiger Zeitraum',
'FORACCREA_TIME_RANGE_EXPLAIN' => 'Hier können Sie festlegen, wie lange die letzte Anmeldung eines Benutzerkontos maximal her sein darf, bevor eine Reaktivierung erzwungen wird.',
'FORACCREA_TIME_RANGE_YEARS' => 'Jahre',
'FORACCREA_TIME_RANGE_MONTHS' => 'Monate',
'FORACCREA_EXCLUDE_GROUPS' => 'Gruppen ausschließen',
'FORACCREA_EXCLUDE_GROUPS_EXPLAIN' => 'Hier können Sie Gruppen auswählen, die von einer erzwungenen Konto-Reaktivierung ausgeschlossen werden sollen. Gründer und Bots sind generell ausgeschlossen. Ist ein Benutzer Mitglied einer ausgeschlossenen Gruppe, wird er auch dann ausgeschlossen, wenn er in anderen Gruppen nicht ausgeschlossen ist.',
'FORACCREA_EXCLUDE_NRU' => '„Kürzlich registrierte Benutzer“ ausschließen',
'FORACCREA_EXCLUDE_NRU_EXPLAIN' => 'Wenn ein Benutzer Mitglied in dieser Gruppe ist, spielt es keine Rolle welche Auswahl bei „Gruppen ausschließen“ vorgenommen wird, da nur dieser Schalter relevant ist.',
'FORACCREA_SETTINGS_TITLE' => 'Einstellungen',
'FORACCREA_ENABLE' => 'Funktion aktivieren',
'FORACCREA_ENABLE_EXPLAIN' => 'Mit diesem Schalter können Sie die erzwungene Konto-Reaktivierung deaktivieren, ohne die Erweiterung komplett deaktivieren zu müssen.',
'FORACCREA_TIME_RANGE' => 'Gültiger Zeitraum',
'FORACCREA_TIME_RANGE_EXPLAIN' => 'Hier können Sie festlegen, wie lange die letzte Anmeldung eines Benutzerkontos maximal her sein darf, bevor eine Reaktivierung erzwungen wird.',
'FORACCREA_TIME_RANGE_YEARS' => 'Jahre',
'FORACCREA_TIME_RANGE_MONTHS' => 'Monate',
'FORACCREA_CONSIDER_NON_LOGIN' => 'Berücksichtige Benutzerkonten ohne Anmeldung',
'FORACCREA_CONSIDER_NON_LOGIN_EXPLAIN' => 'Wenn dieser Schalter aktiviert ist, werden Benutzerkonten, mit denen noch nie eine Anmeldung durchgeführt wurde, ebenso berücksichtigt. Bei solchen Konten zählt das Datum der Registrierung als letzte Anmeldung.',
'FORACCREA_EXCLUDE_GROUPS' => 'Gruppen ausschließen',
'FORACCREA_EXCLUDE_GROUPS_EXPLAIN' => 'Hier können Sie Gruppen auswählen, die von einer erzwungenen Konto-Reaktivierung ausgeschlossen werden sollen. Gründer, Gäste und Bots sind generell ausgeschlossen. Ist ein Benutzer Mitglied einer ausgeschlossenen Gruppe, wird er auch dann ausgeschlossen, wenn er in anderen Gruppen nicht ausgeschlossen ist.',
'FORACCREA_EXCLUDE_NRU' => '„Kürzlich registrierte Benutzer“ ausschließen',
'FORACCREA_EXCLUDE_NRU_EXPLAIN' => 'Wenn ein Benutzer Mitglied in dieser Gruppe ist, spielt es keine Rolle welche Auswahl bei „Gruppen ausschließen“ vorgenommen wird, da nur dieser Schalter relevant ist.',

'FORACCREA_MULTISELECT_EXPLAIN' => 'Mit der gedrückten Taste „Strg“ („cmd“ bei macOS) können Sie eine Mehrfachauswahl vornehmen oder einzelne Einträge abwählen.',
'FORACCREA_MULTISELECT_EXPLAIN' => 'Mit der gedrückten Taste „Strg“ („cmd“ bei macOS) können Sie eine Mehrfachauswahl vornehmen oder einzelne Einträge abwählen.',

'FORACCREA_MSG_SAVED_SETTINGS' => 'Force Account Reactivation: Einstellungen erfolgreich gespeichert',
'FORACCREA_MSG_SAVED_SETTINGS' => 'Konto-Reaktivierung erzwingen: Einstellungen erfolgreich gespeichert',
]);
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
$lang = array_merge($lang, [
// language pack author
'FORACCREA_LANG_DESC' => 'Deutsch (Sie)',
'FORACCREA_LANG_VER' => '1.0.1',
'FORACCREA_LANG_VER' => '1.1.0',
'FORACCREA_LANG_AUTHOR' => 'LukeWCS',

// messages
Expand Down

0 comments on commit 2cc3ee1

Please sign in to comment.