diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b04ad2e..4cb0adf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ env: EXTNAME: lukewcs/statspermissions # Your extension vendor/package name SNIFF: 1 # Run code sniffer on your code? 1 or 0 IMAGE_ICC: 1 # Run icc profile sniffer on your images? 1 or 0 - EPV: 1 # Run EPV (Extension Pre Validator) on your code? 1 or 0 + EPV: 0 # Run EPV (Extension Pre Validator) on your code? 1 or 0 EXECUTABLE_FILES: 1 # Run check for executable files? 1 or 0 PHPBB_BRANCH: 3.3.x # The phpBB branch to run tests on diff --git a/README.md b/README.md index 50c4685..751c6f9 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ Extension for phpBB - Allows to define independent permissions for viewing stati ### Requirements * phpBB 3.3.0 - 3.3.x -* PHP 7.1.3 - 8.3.x +* PHP 7.4.0 - 8.4.x diff --git a/docs/version_check.json b/docs/version_check.json index 542a203..32bc877 100644 --- a/docs/version_check.json +++ b/docs/version_check.json @@ -1,7 +1,7 @@ { "stable": { "3.3": { - "current": "1.2.0", + "current": "1.2.1", "announcement": "https://github.com/LukeWCS/stats-permissions/releases", "eol": null, "security": false diff --git a/lukewcs/statspermissions/acp/acp_stats_permissions_module.php b/lukewcs/statspermissions/acp/acp_stats_permissions_module.php index be98e5d..48bfdc0 100644 --- a/lukewcs/statspermissions/acp/acp_stats_permissions_module.php +++ b/lukewcs/statspermissions/acp/acp_stats_permissions_module.php @@ -19,7 +19,7 @@ class acp_stats_permissions_module public $tpl_name; public $u_action; - public function main($id, $mode) + public function main() { global $phpbb_container; diff --git a/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.html b/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.html index ab87adb..eadd338 100644 --- a/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.html +++ b/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.html @@ -118,8 +118,11 @@

{{ lang('STATS_PERMISSIONS_CONFIG_TITLE') }}

{% endmacro %} {% macro footer(metadata) %} -

- {{ metadata.EXT_NAME }} {{ metadata.EXT_VER }} © LukeWCS
- {{ metadata.LANG_DESC|e('html') }} {{ metadata.LANG_VER|e('html') }} • {{ metadata.LANG_AUTHOR|e('html') }} +

+ {{ metadata.ext_name }} {{ metadata.ext_ver }} © {{ metadata.ext_copyright }} + {% if metadata.lang_ver is defined %} +
+ {{ metadata.lang_desc|e('html') }} {{ metadata.lang_ver|e('html') }} • {{ metadata.lang_author|e('html') }} + {% endif %}

{% endmacro %} diff --git a/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.js b/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.js index 81f9210..8945b35 100644 --- a/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.js +++ b/lukewcs/statspermissions/adm/style/acp_stats_permissions_settings.js @@ -10,7 +10,7 @@ * */ -(function ($) { // IIFE start +(function ($) { 'use strict'; @@ -76,4 +76,4 @@ $(function() { $('#stats_permissions_form') .on('reset', formReset); }); -})(jQuery); // IIFE end +})(jQuery); diff --git a/lukewcs/statspermissions/composer.json b/lukewcs/statspermissions/composer.json index 9bf27fd..037ed0a 100644 --- a/lukewcs/statspermissions/composer.json +++ b/lukewcs/statspermissions/composer.json @@ -3,8 +3,8 @@ "type": "phpbb-extension", "description": "Allows to define independent permissions for viewing statistics and newest member.", "homepage": "https://github.com/LukeWCS/stats-permissions", - "version": "1.2.0", - "time": "2024-03-29", + "version": "1.2.1", + "time": "2024-12-14", "license": "GPL-2.0-only", "authors": [ { @@ -14,7 +14,7 @@ } ], "require": { - "php": ">=7.1.3,<8.4.0@dev", + "php": ">=7.4.0,<8.5.0@dev", "composer/installers": "~1.0.0" }, "extra": { diff --git a/lukewcs/statspermissions/controller/acp_stats_permissions_controller.php b/lukewcs/statspermissions/controller/acp_stats_permissions_controller.php index 3287df2..65040fa 100644 --- a/lukewcs/statspermissions/controller/acp_stats_permissions_controller.php +++ b/lukewcs/statspermissions/controller/acp_stats_permissions_controller.php @@ -15,15 +15,14 @@ class acp_stats_permissions_controller { - protected $config; - protected $template; - protected $language; - protected $request; - protected $ext_manager; + protected object $config; + protected object $template; + protected object $language; + protected object $request; + protected object $ext_manager; - protected $metadata; - - public $u_action; + protected array $metadata; + public string $u_action; public function __construct( \phpbb\config\config $config, @@ -47,7 +46,7 @@ public function module_settings(): void $notes = []; $this->language->add_lang(['acp_stats_permissions', 'acp_stats_permissions_lang_author'], 'lukewcs/statspermissions'); - $this->set_meta_template_vars('STATS_PERMISSIONS'); + $this->set_meta_template_vars('STATS_PERMISSIONS', 'LukeWCS'); if ($this->request->is_set_post('submit')) { @@ -58,9 +57,11 @@ public function module_settings(): void // config section 1 $this->config->set('stats_permissions_admin_mode' , $this->request->variable('stats_permissions_admin_mode', 0)); $this->config->set('stats_permissions_use_permissions' , $this->request->variable('stats_permissions_use_permissions', 0)); + $perm_for_guests = $this->request->variable('stats_permissions_perm_for_guests_stats', 0) ? 1 : 0; $perm_for_guests += $this->request->variable('stats_permissions_perm_for_guests_newest', 0) ? 2 : 0; $this->config->set('stats_permissions_perm_for_guests' , $perm_for_guests); + $perm_for_bots = $this->request->variable('stats_permissions_perm_for_bots_stats', 0) ? 1 : 0; $perm_for_bots += $this->request->variable('stats_permissions_perm_for_bots_newest', 0) ? 2 : 0; $this->config->set('stats_permissions_perm_for_bots' , $perm_for_bots); @@ -76,14 +77,14 @@ public function module_settings(): void } $this->template->assign_vars([ - 'STATS_PERMISSIONS_NOTES' => $notes, + 'STATS_PERMISSIONS_NOTES' => $notes, - 'STATS_PERMISSIONS_ADMIN_MODE' => $this->config['stats_permissions_admin_mode'], - 'STATS_PERMISSIONS_USE_PERMISSIONS' => $this->config['stats_permissions_use_permissions'], - 'STATS_PERMISSIONS_PERM_FOR_GUESTS' => $this->config['stats_permissions_perm_for_guests'], - 'STATS_PERMISSIONS_PERM_FOR_BOTS' => $this->config['stats_permissions_perm_for_bots'], + 'STATS_PERMISSIONS_ADMIN_MODE' => (bool) $this->config['stats_permissions_admin_mode'], + 'STATS_PERMISSIONS_USE_PERMISSIONS' => (bool) $this->config['stats_permissions_use_permissions'], + 'STATS_PERMISSIONS_PERM_FOR_GUESTS' => (int) $this->config['stats_permissions_perm_for_guests'], + 'STATS_PERMISSIONS_PERM_FOR_BOTS' => (int) $this->config['stats_permissions_perm_for_bots'], - 'U_ACTION' => $this->u_action, + 'U_ACTION' => $this->u_action, ]); add_form_key('stats_permissions'); @@ -94,13 +95,18 @@ public function set_page_url(string $u_action): void $this->u_action = $u_action; } - // Determine the version of the language pack with fallback to 0.0.0 + /* + Determine the version of the language pack with fallback to 0.0.0 + */ private function get_lang_ver(string $lang_ext_ver): string { - return ($this->language->is_set($lang_ext_ver) ? preg_replace('/[^0-9.]/', '', $this->language->lang($lang_ext_ver)) : '0.0.0'); + preg_match('/^([0-9]+\.[0-9]+\.[0-9]+.*)/', $this->language->lang($lang_ext_ver), $matches); + return ($matches[1] ?? '0.0.0'); } - // Check the language pack version for the minimum version and generate notice if outdated + /* + Check the language pack version for the minimum version and generate notice if outdated + */ private function lang_ver_check_msg(string $lang_version_var, string $lang_outdated_var): string { $lang_outdated_msg = ''; @@ -113,7 +119,7 @@ private function lang_ver_check_msg(string $lang_version_var, string $lang_outda { $lang_outdated_msg = $this->language->lang($lang_outdated_var); } - else // Fallback if the current language package does not yet have the required variable. + else /* Fallback if the current language package does not yet have the required variable. */ { $lang_outdated_msg = 'Note: The language pack for the extension %1$s is no longer up-to-date. (installed: %2$s / needed: %3$s)'; } @@ -123,17 +129,20 @@ private function lang_ver_check_msg(string $lang_version_var, string $lang_outda return $lang_outdated_msg; } - private function set_meta_template_vars(string $tpl_prefix): void + private function set_meta_template_vars(string $tpl_prefix, string $copyright): void { - $this->template->assign_vars([ - $tpl_prefix . '_METADATA' => [ - 'EXT_NAME' => $this->metadata['extra']['display-name'], - 'EXT_VER' => $this->language->lang($tpl_prefix . '_VERSION_STRING', $this->metadata['version']), - 'LANG_DESC' => $this->language->lang($tpl_prefix . '_LANG_DESC'), - 'LANG_VER' => $this->language->lang($tpl_prefix . '_VERSION_STRING', $this->language->lang($tpl_prefix . '_LANG_VER')), - 'LANG_AUTHOR' => $this->language->lang($tpl_prefix . '_LANG_AUTHOR'), - 'CLASS' => strtolower($tpl_prefix) . '_footer', - ], - ]); + $template_vars = [ + 'ext_name' => $this->metadata['extra']['display-name'], + 'ext_ver' => $this->language->lang($tpl_prefix . '_VERSION_STRING', $this->metadata['version']), + 'ext_copyright' => $copyright, + 'class' => strtolower($tpl_prefix) . '_footer', + ]; + $template_vars += $this->language->is_set($tpl_prefix . '_LANG_VER') ? [ + 'lang_desc' => $this->language->lang($tpl_prefix . '_LANG_DESC'), + 'lang_ver' => $this->language->lang($tpl_prefix . '_VERSION_STRING', $this->language->lang($tpl_prefix . '_LANG_VER')), + 'lang_author' => $this->language->lang($tpl_prefix . '_LANG_AUTHOR'), + ] : []; + + $this->template->assign_vars([$tpl_prefix . '_METADATA' => $template_vars]); } } diff --git a/lukewcs/statspermissions/event/listener.php b/lukewcs/statspermissions/event/listener.php index 111ad0e..abea87f 100644 --- a/lukewcs/statspermissions/event/listener.php +++ b/lukewcs/statspermissions/event/listener.php @@ -17,10 +17,15 @@ class listener implements EventSubscriberInterface { - const PERM_STATS = 1; - const PERM_NEWEST = 2; + protected const PERM_STATS = 1; + protected const PERM_NEWEST = 2; - protected $stats_permissions_core; + protected object $config; + protected object $template; + protected object $language; + protected object $auth; + protected object $user; + protected object $phpbb_dispatcher; public function __construct( \phpbb\config\config $config, @@ -31,15 +36,15 @@ public function __construct( \phpbb\event\dispatcher_interface $dispatcher ) { - $this->config = $config; - $this->template = $template; - $this->language = $language; - $this->auth = $auth; - $this->user = $user; + $this->config = $config; + $this->template = $template; + $this->language = $language; + $this->auth = $auth; + $this->user = $user; $this->phpbb_dispatcher = $dispatcher; } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ 'core.page_header_after' => 'set_template_vars', @@ -47,7 +52,10 @@ public static function getSubscribedEvents() ]; } - public function set_template_vars() + /* + EVENT: core.page_header_after + */ + public function set_template_vars(): void { $force_api_mode = false; @@ -63,7 +71,7 @@ public function set_template_vars() $force_api_mode = ($force_api_mode === true); - // Set display permission variables + /* Set display permission variables */ if ($this->config['stats_permissions_admin_mode']) { $permission_stats = $this->auth->acl_get('a_'); @@ -71,24 +79,24 @@ public function set_template_vars() } else { - if ($this->config['stats_permissions_use_permissions']) // use phpBB permissions + if ($this->config['stats_permissions_use_permissions']) /* use phpBB permissions */ { $permission_stats = $this->auth->acl_gets('u_stats_permissions_show_stats'); $permission_newest = $this->auth->acl_gets('u_stats_permissions_show_newest'); } else { - if ($this->user->data['user_id'] != ANONYMOUS && empty($this->user->data['is_bot'])) // user + if ($this->user->data['user_id'] != ANONYMOUS && empty($this->user->data['is_bot'])) /* user */ { $permission_stats = true; $permission_newest = true; } - else if (!empty($this->user->data['is_bot'])) // bot + else if (!empty($this->user->data['is_bot'])) /* bot */ { $permission_stats = $this->config['stats_permissions_perm_for_bots'] & self::PERM_STATS; $permission_newest = $this->config['stats_permissions_perm_for_bots'] & self::PERM_NEWEST; } - else // guest + else /* guest */ { $permission_stats = $this->config['stats_permissions_perm_for_guests'] & self::PERM_STATS; $permission_newest = $this->config['stats_permissions_perm_for_guests'] & self::PERM_NEWEST; @@ -105,9 +113,11 @@ public function set_template_vars() ]); } - public function add_permissions($event) + /* + EVENT: core.permissions + */ + public function add_permissions($event): void { - $permissions = $event['permissions']; $lang_show_stats = $this->language->lang('ACL_U_STATS_PERMISSIONS_SHOW_STATS'); $lang_show_newest = $this->language->lang('ACL_U_STATS_PERMISSIONS_SHOW_NEWEST'); @@ -117,8 +127,7 @@ public function add_permissions($event) $lang_show_newest = '' . $lang_show_newest . ''; } - $permissions['u_stats_permissions_show_stats'] = ['lang' => $lang_show_stats, 'cat' => 'misc']; - $permissions['u_stats_permissions_show_newest'] = ['lang' => $lang_show_newest, 'cat' => 'misc']; - $event['permissions'] = $permissions; + $event->update_subarray('permissions', 'u_stats_permissions_show_stats', ['lang' => $lang_show_stats, 'cat' => 'misc']); + $event->update_subarray('permissions', 'u_stats_permissions_show_newest', ['lang' => $lang_show_newest, 'cat' => 'misc']); } } diff --git a/lukewcs/statspermissions/ext.php b/lukewcs/statspermissions/ext.php index e720bdf..a0ab12b 100644 --- a/lukewcs/statspermissions/ext.php +++ b/lukewcs/statspermissions/ext.php @@ -18,7 +18,7 @@ class ext extends \phpbb\extension\base public function is_enableable() { $valid_phpbb = phpbb_version_compare(PHPBB_VERSION, '3.3.0', '>=') && phpbb_version_compare(PHPBB_VERSION, '3.4.0-dev', '<'); - $valid_php = phpbb_version_compare(PHP_VERSION, '7.1.3', '>=') && phpbb_version_compare(PHP_VERSION, '8.4.0-dev', '<'); + $valid_php = phpbb_version_compare(PHP_VERSION, '7.4.0', '>=') && phpbb_version_compare(PHP_VERSION, '8.5.0-dev', '<'); return $valid_phpbb && $valid_php; } diff --git a/stats-permissions_build_changelog.md b/stats-permissions_build_changelog.md index 6077609..61335ec 100644 --- a/stats-permissions_build_changelog.md +++ b/stats-permissions_build_changelog.md @@ -1,3 +1,18 @@ +### 1.2.1 +* Release (2024-12-14) +* PHP: + * Code verwendet jetzt 7.4 Features. + * Code strikter gestaltet. +* ext.php`/`composer.json` angepasst: + * PHP: 7.1.3-8.3.x -> 7.4.0-8.4.x +* ACP-Template: + * Aktuelles Makro `footer()` von EMP 3.0 übernommen. +* ACP-Controller: + * Aktuelle Funktion `get_lang_ver()` von EMP 3.0 übernommen. + * Aktuelle Funktion `set_meta_template_vars()` von EMP 3.0 übernommen. +* Listener: + * Wie bei "Limit Multiple Replies" werden Rechte jetzt mit der Wrapper Funktion `update_subarray()` (>=phpBB 3.2.1) eingehängt, wodurch das umständliche Extrahieren und Zurückkopieren des Subarrays `$event['permissions']` entfällt. + ### 1.2.0 * Release (2024-03-29) * Core Code in den Listener integriert und Core Ordner gelöscht. diff --git a/stats-permissions_changelog_de.md b/stats-permissions_changelog_de.md index 5b6b9b6..fd4cfdd 100644 --- a/stats-permissions_changelog_de.md +++ b/stats-permissions_changelog_de.md @@ -1,3 +1,10 @@ +### 1.2.1 +(2024-12-14) + +* Die Voraussetzungen haben sich geändert: + * PHP: 7.4.0 - 8.4.x (Bisher: 7.1.3 - 8.3.x) +* Technik auf den Stand von EMP 3.0 gebracht, Details im Build Changelog. + ### 1.2.0 (2024-03-29)