Skip to content

Commit

Permalink
1.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
LukeWCS committed Apr 3, 2024
1 parent accc706 commit 323e3fb
Show file tree
Hide file tree
Showing 19 changed files with 168 additions and 60 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.0",
"current": "1.0.1",
"announcement": "https://github.com/LukeWCS/force-account-reactivation/releases",
"eol": null,
"security": false
Expand Down
18 changes: 18 additions & 0 deletions force-account-reactivation_build_changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
### 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.
* Fix: Wenn ein neu registrierter Benutzer nicht durch die NRU Prüfung von FAR ausgeschlossen wurde, dann musste der Benutzer bei der ersten Anmeldung im Forum das Konto ein zweites Mal aktivieren. Das erste Mal regulär durch phpBB und das zweite Mal durch FAR. Die Ursache dafür war, das bei neu registrierten Benutzern das Datum 1.1.1970 als letzter Besuch in der Datenbank eingetragen wird und FAR das nicht berücksichtigt hat.
* ACP-Template:
* Es werden jetzt die für FAR benötigten und optionalen phpBB Dienste gelistet mit deren jeweiligen Zuständen.
* Ist die E-Mail-Funktion von phpBB deaktiviert, dann werden bei FAR jetzt sämtliche Optionsgruppen abgeblendet dargestellt um zu signalisieren, dass FAR keine Funktion hat.
* Ist die NRU Funktion von phpBB deaktiviert, dann wird bei FAR jetzt die zugehörige NRU Optionsgruppe abgeblendet dargestellt um zu signalisieren, dass diese keine Bedeutung hat.
* Das `select()` Makro hatte einen kleinen Fehler bei der Parameterübergabe, der bei FAR jedoch keine Auswirkung hatte, da das nur Mehrfachauswahl betraf.
* ACP-Controller:
* `select_struct()` von ToggleControl übernommen zum generieren des Pulldown-Arrays.
* 2 neue Template Variablen für E-Mail und NRU Funktion.
* JS:
* `dimOptionGroup()` eingebaut, das ich in anderen Exts verwende um Optionsgruppen abzublenden.
* Sprachdateien:
* E-Mail Template erneut überarbeitet.
* 2 Neue Variablen für die Dienste-Anzeige.

### 1.0.0
* Release (2024-03-24)
* ACP-Template:
Expand Down
11 changes: 11 additions & 0 deletions force-account-reactivation_changelog_de.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
### 1.0.1
(2024-04-03)

* Fix: In einer speziellen (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.
* Fix: Wenn ein neu registrierter Benutzer nicht durch die NRU Prüfung von FAR ausgeschlossen wurde, dann musste der Benutzer bei der ersten Anmeldung im Forum das Konto ein zweites Mal aktivieren. Das erste Mal regulär durch phpBB und das zweite Mal durch FAR. Die Ursache dafür war, das bei neu registrierten Benutzern das Datum 1.1.1970 als letzter Besuch in der Datenbank eingetragen wird und FAR das nicht berücksichtigt hat.
* Einstellungen:
* Es werden jetzt die für FAR benötigten und optionalen phpBB Dienste gelistet mit deren jeweiligen Zuständen; Grüner Haken (aktiviert), rotes Kreuz (deaktiviert).
* Ist die E-Mail Funktion von phpBB deaktiviert, dann werden bei FAR sämtliche Optionsgruppen abgeblendet dargestellt um zu signalisieren, dass FAR keine Funktion hat.
* Ist die NRU Funktion von phpBB deaktiviert, dann wird bei FAR die zugehörige NRU Optionsgruppe abgeblendet dargestellt um zu signalisieren, dass diese keine Bedeutung hat.
* E-Mail Template erneut überarbeitet.

### 1.0.0
(2024-03-24)

Expand Down
35 changes: 32 additions & 3 deletions lukewcs/forcereactivation/adm/style/acp_foraccrea_settings.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,24 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>
<fieldset>
<legend>{{ lang('FORACCREA_SETTINGS_TITLE') }}</legend>

<dl>
<dt>
<label>{{ lang('FORACCREA_SERVICES_REQUIRED') ~ lang('COLON') }}</label><br>
</dt>
<dd>
{{ _self.status(FORACCREA_MAIL_ENABLED) }} {{ lang('EMAIL') }}<br>
</dd>
</dl>

<dl>
<dt>
<label>{{ lang('FORACCREA_SERVICES_OPTIONAL') ~ lang('COLON') }}</label><br>
</dt>
<dd>
{{ _self.status(FORACCREA_NRU_ENABLED) }} {{ lang('G_NEWLY_REGISTERED') }}<br>
</dd>
</dl>

<dl>
<dt>
<label>{{ lang('FORACCREA_ENABLE') ~ lang('COLON') }}</label><br>
Expand Down Expand Up @@ -82,6 +100,13 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>
{{ S_FORM_TOKEN }}
</form>

<script>
const foraccrea = Object.freeze({
mail_enabled: {{ FORACCREA_MAIL_ENABLED|json_encode }},
nru_enabled: {{ FORACCREA_NRU_ENABLED|json_encode }},
});
</script>

{{ _self.footer(FORACCREA_METADATA) }}

{% INCLUDE 'overall_footer.html' %}
Expand Down Expand Up @@ -109,12 +134,12 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>

{% macro select(name, options, multiple = null, size = null) -%}
<select name="{{ name }}{{ multiple ? '[]' }}"{{
(multiple !== null ? ' multiple') ~
(size !== null ? ' size="' ~ size ~ '"')
(size !== null ? ' size="' ~ size ~ '"') ~
(multiple ? ' multiple')
}}>
{% for opt in options %}
<option value="{{ opt.value }}"{{
((opt.bold ?? false) !== false ? ' class="sep"') ~
(opt.bold ? ' class="sep"') ~
(opt.selected ? ' selected')
}}>{{ lang(opt.label) }}</option>
{% endfor %}
Expand All @@ -137,3 +162,7 @@ <h1>{{ lang('FORACCREA_CONFIG_TITLE') }}</h1>
{{ metadata.LANG_DESC|e('html') }} {{ metadata.LANG_VER|e('html') }} &bull; {{ metadata.LANG_AUTHOR|e('html') }}
</p>
{% endmacro %}

{% macro status(condition) -%}
<i class="icon fa fa-fw fa-lg {{ condition ? 'fa-check success' : 'fa-times error' }}"></i>
{%- endmacro %}
22 changes: 17 additions & 5 deletions lukewcs/forcereactivation/adm/style/acp_foraccrea_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,26 @@ const constants = Object.freeze({
});

function setState() {
const c = constants;

$('dl:nth-of-type(1n+2)').css('opacity',
$('[name="foraccrea_enable"]').prop('checked')
? c.OpacityEnabled : c.OpacityDisabled
dimOptionGroup('[name="foraccrea_enable"]',
!foraccrea.mail_enabled
);
dimOptionGroup('[name="foraccrea_time_range"],[name="foraccrea_exclude_groups[]"]',
!$('[name="foraccrea_enable"]').prop('checked')
|| !foraccrea.mail_enabled
);
dimOptionGroup('[name="foraccrea_exclude_nru"]',
!$('[name="foraccrea_enable"]').prop('checked')
|| !foraccrea.mail_enabled
|| !foraccrea.nru_enabled
);
};

function dimOptionGroup(selector, dimCondition) {
const c = constants;

$(selector).parents('dl').css('opacity', dimCondition ? c.OpacityDisabled : c.OpacityEnabled);
}

function formReset() {
setTimeout(function() {
setState();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
{#
*
* Force Account Reactivation. An extension for the phpBB Forum Software package.
*
* @copyright (c) 2024, LukeWCS, https://www.wcsaga.org/
* @license GNU General Public License, version 2 (GPL-2.0)
*
* Note: This extension is 100% genuine handcraft and consists of selected
* natural raw materials. There was no AI involved in making it.
*
#}

<dl>
<dt>
<label>{{ lang('FORACCREA_PASSCHANGE_TIME') ~ lang('COLON') }}</label>
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.0",
"time": "2024-03-24",
"version": "1.0.1",
"time": "2024-04-03",
"license": "GPL-2.0-only",
"authors": [
{
Expand All @@ -19,7 +19,7 @@
},
"extra": {
"display-name": "Force Account Reactivation",
"lang-min-ver": "1.0.0",
"lang-min-ver": "1.0.1",
"soft-require": {
"phpbb/phpbb": ">=3.3.0,<3.4.0@dev"
},
Expand Down
50 changes: 30 additions & 20 deletions lukewcs/forcereactivation/controller/acp_foraccrea_controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,31 +79,16 @@ public function module_settings(): void
$db_groups = $this->db->sql_fetchrowset($result);
$this->db->sql_freeresult($result);

$exclude_group_ids = json_decode($this->config['foraccrea_exclude_groups']) ?? [];
$exclude_groups = [];
foreach ($db_groups as $group)
{
$exclude_groups[] = [
'label' => $this->group_helper->get_name($group['group_name']),
'value' => $group['group_id'],
'selected' => in_array($group['group_id'], $exclude_group_ids),
'bold' => $group['group_type'] == GROUP_SPECIAL,
$this->group_helper->get_name($group['group_name']),
$group['group_id'],
$group['group_type'] == GROUP_SPECIAL,
];
}

$time_range_types = [
[
'label' => 'FORACCREA_TIME_RANGE_YEARS',
'value' => 'years',
'selected' => $this->config['foraccrea_time_range_type'] == 'years',
],
[
'label' => 'FORACCREA_TIME_RANGE_MONTHS',
'value' => 'months',
'selected' => $this->config['foraccrea_time_range_type'] == 'months',
],
];

$lang_outdated_msg = $this->lang_ver_check_msg('FORACCREA_LANG_VER', 'FORACCREA_MSG_LANGUAGEPACK_OUTDATED');
if ($lang_outdated_msg)
{
Expand All @@ -113,10 +98,18 @@ public function module_settings(): void
$this->template->assign_vars([
'FORACCREA_NOTES' => $notes,

'FORACCREA_MAIL_ENABLED' => (bool) $this->config['email_enable'],
'FORACCREA_NRU_ENABLED' => (bool) $this->config['new_member_post_limit'],

'FORACCREA_ENABLE' => $this->config['foraccrea_enable'],
'FORACCREA_TIME_RANGE' => $this->config['foraccrea_time_range'],
'FORACCREA_TIME_RANGE_TYPES' => $time_range_types,
'FORACCREA_EXCLUDE_GROUPS' => $exclude_groups,
'FORACCREA_TIME_RANGE_TYPES' => $this->select_struct($this->config['foraccrea_time_range_type'], [
['FORACCREA_TIME_RANGE_YEARS', 'years'],
['FORACCREA_TIME_RANGE_MONTHS', 'months'],
]),
'FORACCREA_EXCLUDE_GROUPS' => $this->select_struct(json_decode($this->config['foraccrea_exclude_groups']) ?? [],
$exclude_groups
),
'FORACCREA_EXCLUDE_NRU' => $this->config['foraccrea_exclude_nru'],
]);

Expand All @@ -128,6 +121,23 @@ public function set_page_url(string $u_action): void
$this->u_action = $u_action;
}

private function select_struct($value, array $options_params): array
{
$is_array_value = is_array($value);
$options = [];
foreach ($options_params as $params)
{
$options[] = [
'label' => $params[0],
'value' => $params[1],
'bold' => $params[2] ?? false,
'selected' => $is_array_value ? in_array($params[1], $value) : $params[1] == $value,
];
}

return $options;
}

private function set_meta_template_vars(string $tpl_prefix): void
{
$this->template->assign_vars([
Expand Down
35 changes: 21 additions & 14 deletions lukewcs/forcereactivation/event/listener.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public function check_force_reactivation($event)
|| $user_row['user_email'] == ''
)
{
// Requirements not met, cancel process.
// Requirements not met, return control to phpBB.
return;
}

Expand All @@ -81,24 +81,30 @@ public function check_force_reactivation($event)
$this->db->sql_freeresult($result);
$user_lastvisit = $user_last_session['session_time'] ?? $user_row['user_lastvisit'] ?? 1;

// Determine the ID of the NRU group.
$sql = 'SELECT group_id, group_type, group_name
FROM ' . GROUPS_TABLE . '
WHERE group_name = "NEWLY_REGISTERED"';
$result = $this->db->sql_query($sql);
$fetchrow = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
$nru_group_id = $fetchrow['group_id'] ?? null;

// Check whether the user is excluded.
// Determine the user's groups.
$group_memberships = group_memberships(false, $user_row['user_id']);
$user_group_ids = array_column($group_memberships, 'group_id');

if ($nru_group_id !== null && array_search($nru_group_id, $user_group_ids) !== false)
// 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'])
{
$exclude_user = $this->config['foraccrea_exclude_nru'];
// Determine the ID of the NRU group.
$sql = 'SELECT group_id, group_type, group_name
FROM ' . GROUPS_TABLE . '
WHERE group_name = "NEWLY_REGISTERED"';
$result = $this->db->sql_query($sql);
$nru_group = $this->db->sql_fetchrow($result);
$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)
{
$exclude_user = (bool) $this->config['foraccrea_exclude_nru'];
}
}
else

// Check whether the user is excluded if the user is not a member of the NRU group.
if (!isset($exclude_user))
{
$exclude_group_ids = json_decode($this->config['foraccrea_exclude_groups']) ?? [];
$intersect_group_ids = array_intersect($user_group_ids, $exclude_group_ids);
Expand All @@ -107,6 +113,7 @@ public function check_force_reactivation($event)

// 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'])
)
{
Expand Down
3 changes: 3 additions & 0 deletions lukewcs/forcereactivation/language/de/acp_foraccrea.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
'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_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.',
Expand Down
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.0',
'FORACCREA_LANG_VER' => '1.0.1',
'FORACCREA_LANG_AUTHOR' => 'LukeWCS',

// messages
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Subject: Reaktiviere dein Benutzerkonto „{SITENAME}“

Mit deinem Benutzerkonto wurde soeben ein erfolgreicher Login nach einer längeren Abwesenheit in unserem Forum durchgeführt, deshalb wurde dein Benutzerkonto aus Sicherheitsgründen vorübergehend deaktiviert.
Mit deinem Benutzerkonto, mit dem du dich länger nicht mehr bei uns im Forum angemeldet hast, wurde soeben eine Anmeldung durchgeführt. Deshalb wurde dein Benutzerkonto aus Sicherheitsgründen vorübergehend deaktiviert.

Bitte folge den Anweisungen, um dein Konto wieder zu aktivieren. Sollte der Login nicht von dir durchgeführt worden sein, dann ändere bitte nach der Reaktivierung sofort dein Passwort.
Bitte folge den Anweisungen, um dein Konto wieder zu aktivieren. Sollte die Anmeldung nicht von dir durchgeführt worden sein, dann ändere bitte nach der Reaktivierung sofort dein Passwort.

Die Daten deines Benutzerkontos lauten:

Expand Down
3 changes: 3 additions & 0 deletions lukewcs/forcereactivation/language/de_x_sie/acp_foraccrea.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
'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_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.',
Expand Down
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.0',
'FORACCREA_LANG_VER' => '1.0.1',
'FORACCREA_LANG_AUTHOR' => 'LukeWCS',

// messages
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Subject: Reaktivieren Sie Ihr Benutzerkonto „{SITENAME}“

Mit Ihrem Benutzerkonto wurde soeben ein erfolgreicher Login nach einer längeren Abwesenheit in unserem Forum durchgeführt, deshalb wurde Ihr Benutzerkonto aus Sicherheitsgründen vorübergehend deaktiviert.
Mit Ihrem Benutzerkonto, mit dem Sie sich länger nicht mehr bei uns im Forum angemeldet haben, wurde soeben eine Anmeldung durchgeführt. Deshalb wurde Ihr Benutzerkonto aus Sicherheitsgründen vorübergehend deaktiviert.

Bitte folgen Sie den Anweisungen, um Ihr Konto wieder zu aktivieren. Sollte der Login nicht von Ihnen durchgeführt worden sein, dann ändern Sie bitte nach der Reaktivierung sofort Ihr Passwort.
Bitte folgen Sie den Anweisungen, um Ihr Konto wieder zu aktivieren. Sollte die Anmeldung nicht von Ihnen durchgeführt worden sein, dann ändern Sie bitte nach der Reaktivierung sofort Ihr Passwort.

Die Daten Ihres Benutzerkontos lauten:

Expand Down
3 changes: 3 additions & 0 deletions lukewcs/forcereactivation/language/en/acp_foraccrea.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
'FORACCREA_CONFIG_TITLE' => 'Force Account Reactivation',
'FORACCREA_CONFIG_DESC' => 'Here you can change the settings for the <strong>%s</strong> extension.',

'FORACCREA_SERVICES_REQUIRED' => 'Required phpBB services',
'FORACCREA_SERVICES_OPTIONAL' => 'Optional phpBB services',

'FORACCREA_SETTINGS_TITLE' => 'Settings',
'FORACCREA_ENABLE' => 'Enable function',
'FORACCREA_ENABLE_EXPLAIN' => 'This switch allows you to disable forced account reactivation without having to disable the extension completely.',
Expand Down
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' => 'English',
'FORACCREA_LANG_VER' => '1.0.0',
'FORACCREA_LANG_VER' => '1.0.1',
'FORACCREA_LANG_AUTHOR' => 'LukeWCS',

// messages
Expand Down

0 comments on commit 323e3fb

Please sign in to comment.