From a5634c692c159e08087aee879f3730b67a5daa9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 14:54:23 -0300 Subject: [PATCH 1/6] Move myphpnet_load() function to UserPreferences class --- include/prepend.inc | 29 +---------------- src/UserPreferences.php | 26 ++++++++++++++++ tests/Unit/UserPreferencesTest.php | 50 ++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 28 deletions(-) create mode 100644 tests/Unit/UserPreferencesTest.php diff --git a/include/prepend.inc b/include/prepend.inc index eaf07cab4b..3764abc867 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -76,7 +76,7 @@ unset($ONLOAD); unset($LAST_UPDATED); // Load the My PHP.net settings before any includes -myphpnet_load(); +UserPreferences::load(); // Site details (mirror site information) include __DIR__ . '/site.inc'; @@ -97,33 +97,6 @@ include __DIR__ . '/last_updated.inc'; // ----------------------------------------------------------------------------- -// Load in the user preferences -function myphpnet_load(): void -{ - UserPreferences::$languageCode = ''; - UserPreferences::$searchType = UserPreferences::URL_NONE; - UserPreferences::$isUserGroupTipsEnabled = false; - - if (!isset($_COOKIE['MYPHPNET']) || !is_string($_COOKIE['MYPHPNET']) || $_COOKIE['MYPHPNET'] === '') { - return; - } - - /** - * 0 - Language code - * 1 - URL search fallback - * 2 - Mirror site (removed) - * 3 - User Group tips - * 4 - Documentation developmental server (removed) - */ - $preferences = explode(",", $_COOKIE['MYPHPNET']); - UserPreferences::$languageCode = $preferences[0] ?? ''; - if (isset($preferences[1]) && in_array($preferences[1], [UserPreferences::URL_FUNC, UserPreferences::URL_MANUAL], true)) { - UserPreferences::$searchType = $preferences[1]; - } - - UserPreferences::$isUserGroupTipsEnabled = isset($preferences[3]) && $preferences[3]; -} - // Get preferred language code function myphpnet_language(): string { diff --git a/src/UserPreferences.php b/src/UserPreferences.php index 6b7b1eef60..f83cd1f6c9 100644 --- a/src/UserPreferences.php +++ b/src/UserPreferences.php @@ -23,4 +23,30 @@ final class UserPreferences public static string|false $searchType = self::URL_NONE; public static bool $isUserGroupTipsEnabled = false; + + public static function load(): void + { + self::$languageCode = ''; + self::$searchType = self::URL_NONE; + self::$isUserGroupTipsEnabled = false; + + if (!isset($_COOKIE['MYPHPNET']) || !is_string($_COOKIE['MYPHPNET']) || $_COOKIE['MYPHPNET'] === '') { + return; + } + + /** + * 0 - Language code + * 1 - URL search fallback + * 2 - Mirror site (removed) + * 3 - User Group tips + * 4 - Documentation developmental server (removed) + */ + $preferences = explode(",", $_COOKIE['MYPHPNET']); + self::$languageCode = $preferences[0] ?? ''; + if (isset($preferences[1]) && in_array($preferences[1], [self::URL_FUNC, self::URL_MANUAL], true)) { + self::$searchType = $preferences[1]; + } + + self::$isUserGroupTipsEnabled = isset($preferences[3]) && $preferences[3]; + } } diff --git a/tests/Unit/UserPreferencesTest.php b/tests/Unit/UserPreferencesTest.php new file mode 100644 index 0000000000..837000560e --- /dev/null +++ b/tests/Unit/UserPreferencesTest.php @@ -0,0 +1,50 @@ + $cookie */ + #[DataProvider('loadCookiesProvider')] + public function testLoad( + array $cookie, + string $languageCode, + string|false $searchType, + bool $isUserGroupTipsEnabled, + ): void { + $_COOKIE = $cookie; + + UserPreferences::load(); + + self::assertSame($languageCode, UserPreferences::$languageCode); + self::assertSame($searchType, UserPreferences::$searchType); + self::assertSame($isUserGroupTipsEnabled, UserPreferences::$isUserGroupTipsEnabled); + } + + /** @return array, string, string|false, bool}> */ + public static function loadCookiesProvider(): array + { + return [ + [[], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ['en,manual,,1']], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ''], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ',,,'], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ',,,0'], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ',,ignored,,ignored'], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => 'en,,,'], 'en', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ',manual,,'], '', UserPreferences::URL_MANUAL, false], + [['MYPHPNET' => ',quickref,,'], '', UserPreferences::URL_FUNC, false], + [['MYPHPNET' => ',invalid,,'], '', UserPreferences::URL_NONE, false], + [['MYPHPNET' => ',,,1'], '', UserPreferences::URL_NONE, true], + [['MYPHPNET' => 'en,manual,,1'], 'en', UserPreferences::URL_MANUAL, true], + ]; + } +} From 71d02f07f7642b8a82dc625ec21c63f59fdd39b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 15:01:40 -0300 Subject: [PATCH 2/6] Inline the myphpnet_language() function --- include/langchooser.inc | 3 ++- include/layout.inc | 3 ++- include/prepend.inc | 6 ------ my.php | 8 ++++---- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/include/langchooser.inc b/include/langchooser.inc index 230a3d707d..b13a39bf3c 100644 --- a/include/langchooser.inc +++ b/include/langchooser.inc @@ -29,6 +29,7 @@ */ use phpweb\LangChooser; +use phpweb\UserPreferences; require_once __DIR__ . '/../src/autoload.php'; @@ -37,7 +38,7 @@ $_SERVER['STRIPPED_URI'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, // The code is encapsulated in a function, // so the variable namespace is not polluted -list($LANG, $EXPL_LANG) = (new LangChooser($LANGUAGES, $INACTIVE_ONLINE_LANGUAGES, myphpnet_language(), default_language() ?: ''))->chooseCode( +list($LANG, $EXPL_LANG) = (new LangChooser($LANGUAGES, $INACTIVE_ONLINE_LANGUAGES, UserPreferences::$languageCode, default_language() ?: ''))->chooseCode( $_REQUEST['lang'] ?? null, $_SERVER['REQUEST_URI'], $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? null, diff --git a/include/layout.inc b/include/layout.inc index 471d8eeaa3..1e7edc0741 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -1,6 +1,7 @@ myphpnet_language(), + "lang" => UserPreferences::$languageCode, "current" => "", "meta-navigation" => [], 'classes' => '', diff --git a/include/prepend.inc b/include/prepend.inc index 3764abc867..beef395963 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -97,12 +97,6 @@ include __DIR__ . '/last_updated.inc'; // ----------------------------------------------------------------------------- -// Get preferred language code -function myphpnet_language(): string -{ - return UserPreferences::$languageCode; -} - // Set URL search fallback preference function myphpnet_urlsearch($type = false) { diff --git a/my.php b/my.php index 2a0ae0e39c..6a1aeb6d76 100644 --- a/my.php +++ b/my.php @@ -27,14 +27,14 @@ } // We have received a cookie and it is an available language -elseif (isset($langs[myphpnet_language()])) { +elseif (isset($langs[UserPreferences::$languageCode])) { // Add this as first option, selected - $options[] = '\n"; + $options[] = '\n"; // Remove, so it is not listed two times - unset($langs[myphpnet_language()]); + unset($langs[UserPreferences::$languageCode]); } // We have no cookie and no form submitted From f7de7f11f672ae3b7bfc8d1256baf78749f9b406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 15:42:51 -0300 Subject: [PATCH 3/6] Move myphpnet_urlsearch() function to UserPreferences class --- error.php | 2 +- include/prepend.inc | 11 ----------- my.php | 4 ++-- src/UserPreferences.php | 12 +++++++++--- tests/Unit/UserPreferencesTest.php | 21 +++++++++++++++++++++ 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/error.php b/error.php index a5d4522989..02b0e9edce 100644 --- a/error.php +++ b/error.php @@ -725,7 +725,7 @@ // ============================================================================ // If no match was found till this point, the last action is to start a // search with the URI the user typed in -$fallback = (myphpnet_urlsearch() === UserPreferences::URL_MANUAL ? "404manual" : "404quickref"); +$fallback = (UserPreferences::$searchType === UserPreferences::URL_MANUAL ? "404manual" : "404quickref"); mirror_redirect( '/search.php?show=' . $fallback . '&lang=' . urlencode($LANG) . '&pattern=' . substr($_SERVER['REQUEST_URI'], 1), diff --git a/include/prepend.inc b/include/prepend.inc index beef395963..da6c4e9365 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -97,17 +97,6 @@ include __DIR__ . '/last_updated.inc'; // ----------------------------------------------------------------------------- -// Set URL search fallback preference -function myphpnet_urlsearch($type = false) -{ - // Set type if specified and if correct - if ($type && in_array($type, [UserPreferences::URL_FUNC, UserPreferences::URL_MANUAL], true)) { - UserPreferences::$searchType = $type; - } - - return UserPreferences::$searchType; -} - function myphpnet_showug($enable = null) { if (isset($_GET["showug"])) { $enable = true; diff --git a/my.php b/my.php index 6a1aeb6d76..b864fd9ba2 100644 --- a/my.php +++ b/my.php @@ -54,7 +54,7 @@ // Save URL shortcut fallback setting if (isset($_POST['urlsearch'])) { - myphpnet_urlsearch($_POST['urlsearch']); + UserPreferences::setUrlSearchType($_POST['urlsearch']); } if (isset($_POST["showug"])) { @@ -177,7 +177,7 @@
Your setting: 'en,manual,,1'], 'en', UserPreferences::URL_MANUAL, true], ]; } + + #[DataProvider('urlSearchTypeProvider')] + public function testSetUrlSearchType(mixed $type, string|false $expected): void + { + UserPreferences::$searchType = UserPreferences::URL_NONE; + UserPreferences::setUrlSearchType($type); + self::assertSame($expected, UserPreferences::$searchType); + } + + /** @return array */ + public static function urlSearchTypeProvider(): array + { + return [ + ['manual', UserPreferences::URL_MANUAL], + ['quickref', UserPreferences::URL_FUNC], + [false, UserPreferences::URL_NONE], + ['', UserPreferences::URL_NONE], + ['invalid', UserPreferences::URL_NONE], + [['manual'], UserPreferences::URL_NONE], + ]; + } } From eecf72ad3111aaaae0594671627fd1a34b761020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 16:17:22 -0300 Subject: [PATCH 4/6] Move myphpnet_showug() function to UserPreferences class --- include/prepend.inc | 17 ----------------- my.php | 6 +++--- src/UserPreferences.php | 9 +++++++++ tests/Unit/UserPreferencesTest.php | 22 ++++++++++++++++++++++ 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/include/prepend.inc b/include/prepend.inc index da6c4e9365..c78bf86f6f 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -97,23 +97,6 @@ include __DIR__ . '/last_updated.inc'; // ----------------------------------------------------------------------------- -function myphpnet_showug($enable = null) { - if (isset($_GET["showug"])) { - $enable = true; - } - - if (is_bool($enable)) { - UserPreferences::$isUserGroupTipsEnabled = $enable; - } - - // Show the ug tips to lucky few, depending on time. - if ($_SERVER["REQUEST_TIME"] % 10) { - UserPreferences::$isUserGroupTipsEnabled = true; - } - - return UserPreferences::$isUserGroupTipsEnabled; -} - // Save user settings in cookie function myphpnet_save(): void { diff --git a/my.php b/my.php index b864fd9ba2..3d39fb9888 100644 --- a/my.php +++ b/my.php @@ -58,7 +58,7 @@ } if (isset($_POST["showug"])) { - myphpnet_showug($_POST["showug"] === "enable"); + UserPreferences::setIsUserGroupTipsEnabled($_POST["showug"] === "enable"); } // Prepare mirror array @@ -196,8 +196,8 @@ We are experimenting with listing nearby user groups. This feature is highly experimental and will very likely change a lot and be broken at times.

- >
- > + >
+ >

diff --git a/src/UserPreferences.php b/src/UserPreferences.php index 7afca8209a..64cc482a2c 100644 --- a/src/UserPreferences.php +++ b/src/UserPreferences.php @@ -55,4 +55,13 @@ public static function setUrlSearchType(mixed $type): void self::$searchType = $type; } + + public static function setIsUserGroupTipsEnabled(bool $enable): void { + // Show the ug tips to lucky few, depending on time. + if ($_SERVER["REQUEST_TIME"] % 10) { + $enable = true; + } + + self::$isUserGroupTipsEnabled = $enable; + } } diff --git a/tests/Unit/UserPreferencesTest.php b/tests/Unit/UserPreferencesTest.php index df47b050d4..e786fb8a6b 100644 --- a/tests/Unit/UserPreferencesTest.php +++ b/tests/Unit/UserPreferencesTest.php @@ -68,4 +68,26 @@ public static function urlSearchTypeProvider(): array [['manual'], UserPreferences::URL_NONE], ]; } + + public function testSetIsUserGroupTipsEnabled(): void + { + $timeBackup = $_SERVER['REQUEST_TIME']; + $_SERVER['REQUEST_TIME'] = 1726600070; + + UserPreferences::$isUserGroupTipsEnabled = false; + UserPreferences::setIsUserGroupTipsEnabled(true); + self::assertTrue(UserPreferences::$isUserGroupTipsEnabled); + + UserPreferences::$isUserGroupTipsEnabled = true; + UserPreferences::setIsUserGroupTipsEnabled(false); + self::assertFalse(UserPreferences::$isUserGroupTipsEnabled); + + $_SERVER['REQUEST_TIME'] = 1726600066; + + UserPreferences::$isUserGroupTipsEnabled = false; + UserPreferences::setIsUserGroupTipsEnabled(false); + self::assertTrue(UserPreferences::$isUserGroupTipsEnabled); + + $_SERVER['REQUEST_TIME'] = $timeBackup; + } } From 0fbf5996d23f56a476f8dfec45bfaf4a6dc404e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 16:38:05 -0300 Subject: [PATCH 5/6] Move myphpnet_save() function to UserPreferences class --- include/prepend.inc | 21 --------------------- my.php | 2 +- src/UserPreferences.php | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/include/prepend.inc b/include/prepend.inc index c78bf86f6f..c870988e64 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -97,27 +97,6 @@ include __DIR__ . '/last_updated.inc'; // ----------------------------------------------------------------------------- -// Save user settings in cookie -function myphpnet_save(): void -{ - /** - * 0 - Language code - * 1 - URL search fallback - * 2 - Mirror site (removed) - * 3 - User Group tips - * 4 - Documentation developmental server (removed) - */ - $preferences = [ - UserPreferences::$languageCode, - UserPreferences::$searchType, - '', - UserPreferences::$isUserGroupTipsEnabled, - ]; - - // Set all the preferred values for a year - mirror_setcookie("MYPHPNET", join(",", $preferences), 60 * 60 * 24 * 365); -} - // Embed Google Custom Search engine function google_cse(): void { $cse_snippet = << MIRROR_OK]; -myphpnet_save(); +UserPreferences::save(); site_header("My PHP.net", ["current" => "community"]); ?> diff --git a/src/UserPreferences.php b/src/UserPreferences.php index 64cc482a2c..ae359b29c6 100644 --- a/src/UserPreferences.php +++ b/src/UserPreferences.php @@ -64,4 +64,19 @@ public static function setIsUserGroupTipsEnabled(bool $enable): void { self::$isUserGroupTipsEnabled = $enable; } + + public static function save(): void + { + /** + * 0 - Language code + * 1 - URL search fallback + * 2 - Mirror site (removed) + * 3 - User Group tips + * 4 - Documentation developmental server (removed) + */ + $preferences = [self::$languageCode, self::$searchType, '', self::$isUserGroupTipsEnabled]; + + // Set all the preferred values for a year + mirror_setcookie("MYPHPNET", join(",", $preferences), 60 * 60 * 24 * 365); + } } From 49d5aac7de8ed9c45ebfd668b9d341bdacd57fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 17 Sep 2024 17:57:02 -0300 Subject: [PATCH 6/6] Change the UserPreferences to an instance class --- error.php | 2 +- include/langchooser.inc | 3 +- include/layout.inc | 5 ++- include/prepend.inc | 4 ++- my.php | 22 ++++++------- src/UserPreferences.php | 51 ++++++++++++++++-------------- tests/Unit/LangChooserTest.php | 5 +-- tests/Unit/UserPreferencesTest.php | 33 +++++++++---------- 8 files changed, 64 insertions(+), 61 deletions(-) diff --git a/error.php b/error.php index 02b0e9edce..2801188f14 100644 --- a/error.php +++ b/error.php @@ -725,7 +725,7 @@ // ============================================================================ // If no match was found till this point, the last action is to start a // search with the URI the user typed in -$fallback = (UserPreferences::$searchType === UserPreferences::URL_MANUAL ? "404manual" : "404quickref"); +$fallback = ($userPreferences->searchType === UserPreferences::URL_MANUAL ? "404manual" : "404quickref"); mirror_redirect( '/search.php?show=' . $fallback . '&lang=' . urlencode($LANG) . '&pattern=' . substr($_SERVER['REQUEST_URI'], 1), diff --git a/include/langchooser.inc b/include/langchooser.inc index b13a39bf3c..61def940f8 100644 --- a/include/langchooser.inc +++ b/include/langchooser.inc @@ -29,7 +29,6 @@ */ use phpweb\LangChooser; -use phpweb\UserPreferences; require_once __DIR__ . '/../src/autoload.php'; @@ -38,7 +37,7 @@ $_SERVER['STRIPPED_URI'] = htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES, // The code is encapsulated in a function, // so the variable namespace is not polluted -list($LANG, $EXPL_LANG) = (new LangChooser($LANGUAGES, $INACTIVE_ONLINE_LANGUAGES, UserPreferences::$languageCode, default_language() ?: ''))->chooseCode( +list($LANG, $EXPL_LANG) = (new LangChooser($LANGUAGES, $INACTIVE_ONLINE_LANGUAGES, $userPreferences->languageCode, default_language() ?: ''))->chooseCode( $_REQUEST['lang'] ?? null, $_SERVER['REQUEST_URI'], $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? null, diff --git a/include/layout.inc b/include/layout.inc index 1e7edc0741..5174395e40 100644 --- a/include/layout.inc +++ b/include/layout.inc @@ -1,7 +1,6 @@ UserPreferences::$languageCode, + "lang" => $LANG, "current" => "", "meta-navigation" => [], 'classes' => '', diff --git a/include/prepend.inc b/include/prepend.inc index c870988e64..1ffd80f1b0 100644 --- a/include/prepend.inc +++ b/include/prepend.inc @@ -75,8 +75,10 @@ unset($COUNTRY); unset($ONLOAD); unset($LAST_UPDATED); +$userPreferences = new UserPreferences(); + // Load the My PHP.net settings before any includes -UserPreferences::load(); +$userPreferences->load(); // Site details (mirror site information) include __DIR__ . '/site.inc'; diff --git a/my.php b/my.php index d5660a0b3c..8ad08ded48 100644 --- a/my.php +++ b/my.php @@ -16,7 +16,7 @@ if (isset($_POST['my_lang'], $langs[$_POST['my_lang']])) { // Set the language preference - UserPreferences::$languageCode = $_POST['my_lang']; + $userPreferences->languageCode = $_POST['my_lang']; // Add this as first option, selected $options[] = '\n"; + $options[] = '\n"; // Remove, so it is not listed two times - unset($langs[UserPreferences::$languageCode]); + unset($langs[$userPreferences->languageCode]); } // We have no cookie and no form submitted @@ -54,18 +54,18 @@ // Save URL shortcut fallback setting if (isset($_POST['urlsearch'])) { - UserPreferences::setUrlSearchType($_POST['urlsearch']); + $userPreferences->setUrlSearchType($_POST['urlsearch']); } if (isset($_POST["showug"])) { - UserPreferences::setIsUserGroupTipsEnabled($_POST["showug"] === "enable"); + $userPreferences->setIsUserGroupTipsEnabled($_POST["showug"] === "enable"); } // Prepare mirror array $mirror_sites = $MIRRORS; $mirror_sites["NONE"] = [7 => MIRROR_OK]; -UserPreferences::save(); +$userPreferences->save(); site_header("My PHP.net", ["current" => "community"]); ?> @@ -177,7 +177,7 @@

Your setting: searchType; if ($type === UserPreferences::URL_NONE || $type === UserPreferences::URL_FUNC) { echo ' checked="checked"'; } @@ -196,8 +196,8 @@ We are experimenting with listing nearby user groups. This feature is highly experimental and will very likely change a lot and be broken at times.

- >
- > + isUserGroupTipsEnabled ? "checked=checked" : "" ?>>
+ isUserGroupTipsEnabled ? "" : "checked=checked" ?>>

diff --git a/src/UserPreferences.php b/src/UserPreferences.php index ae359b29c6..60e3d42362 100644 --- a/src/UserPreferences.php +++ b/src/UserPreferences.php @@ -1,7 +1,15 @@ languageCode = ''; + $this->searchType = self::URL_NONE; + $this->isUserGroupTipsEnabled = false; if (!isset($_COOKIE['MYPHPNET']) || !is_string($_COOKIE['MYPHPNET']) || $_COOKIE['MYPHPNET'] === '') { return; @@ -42,30 +47,30 @@ public static function load(): void * 4 - Documentation developmental server (removed) */ $preferences = explode(",", $_COOKIE['MYPHPNET']); - self::$languageCode = $preferences[0] ?? ''; - self::setUrlSearchType($preferences[1] ?? self::URL_NONE); - self::$isUserGroupTipsEnabled = isset($preferences[3]) && $preferences[3]; + $this->languageCode = $preferences[0] ?? ''; + $this->setUrlSearchType($preferences[1] ?? self::URL_NONE); + $this->isUserGroupTipsEnabled = isset($preferences[3]) && $preferences[3]; } - public static function setUrlSearchType(mixed $type): void + public function setUrlSearchType(mixed $type): void { if (!in_array($type, [self::URL_FUNC, self::URL_MANUAL, self::URL_NONE], true)) { return; } - self::$searchType = $type; + $this->searchType = $type; } - public static function setIsUserGroupTipsEnabled(bool $enable): void { + public function setIsUserGroupTipsEnabled(bool $enable): void { // Show the ug tips to lucky few, depending on time. if ($_SERVER["REQUEST_TIME"] % 10) { $enable = true; } - self::$isUserGroupTipsEnabled = $enable; + $this->isUserGroupTipsEnabled = $enable; } - public static function save(): void + public function save(): void { /** * 0 - Language code @@ -74,7 +79,7 @@ public static function save(): void * 3 - User Group tips * 4 - Documentation developmental server (removed) */ - $preferences = [self::$languageCode, self::$searchType, '', self::$isUserGroupTipsEnabled]; + $preferences = [$this->languageCode, $this->searchType, '', $this->isUserGroupTipsEnabled]; // Set all the preferred values for a year mirror_setcookie("MYPHPNET", join(",", $preferences), 60 * 60 * 24 * 365); diff --git a/tests/Unit/LangChooserTest.php b/tests/Unit/LangChooserTest.php index 9706a67b50..8c8d3a60c2 100644 --- a/tests/Unit/LangChooserTest.php +++ b/tests/Unit/LangChooserTest.php @@ -6,7 +6,6 @@ use phpweb\LangChooser; use PHPUnit\Framework; -use phpweb\UserPreferences; #[Framework\Attributes\CoversClass(LangChooser::class)] class LangChooserTest extends Framework\TestCase @@ -107,9 +106,7 @@ public function testChooseCodeWithLangParameterAndManualPath(): void public function testChooseCodeWithManualPathAndUserPreference(): void { - UserPreferences::$languageCode = 'en'; - - $langChooser = new LangChooser(self::DEFAULT_LANGUAGE_LIST, [], '', 'en'); + $langChooser = new LangChooser(self::DEFAULT_LANGUAGE_LIST, [], 'en', 'en'); $result = $langChooser->chooseCode('', '/manual/de', null); self::assertSame(['de', 'de'], $result); diff --git a/tests/Unit/UserPreferencesTest.php b/tests/Unit/UserPreferencesTest.php index e786fb8a6b..f1df981bee 100644 --- a/tests/Unit/UserPreferencesTest.php +++ b/tests/Unit/UserPreferencesTest.php @@ -22,11 +22,12 @@ public function testLoad( ): void { $_COOKIE = $cookie; - UserPreferences::load(); + $userPreferences = new UserPreferences(); + $userPreferences->load(); - self::assertSame($languageCode, UserPreferences::$languageCode); - self::assertSame($searchType, UserPreferences::$searchType); - self::assertSame($isUserGroupTipsEnabled, UserPreferences::$isUserGroupTipsEnabled); + self::assertSame($languageCode, $userPreferences->languageCode); + self::assertSame($searchType, $userPreferences->searchType); + self::assertSame($isUserGroupTipsEnabled, $userPreferences->isUserGroupTipsEnabled); } /** @return array, string, string|false, bool}> */ @@ -51,9 +52,9 @@ public static function loadCookiesProvider(): array #[DataProvider('urlSearchTypeProvider')] public function testSetUrlSearchType(mixed $type, string|false $expected): void { - UserPreferences::$searchType = UserPreferences::URL_NONE; - UserPreferences::setUrlSearchType($type); - self::assertSame($expected, UserPreferences::$searchType); + $userPreferences = new UserPreferences(searchType: UserPreferences::URL_NONE); + $userPreferences->setUrlSearchType($type); + self::assertSame($expected, $userPreferences->searchType); } /** @return array */ @@ -74,19 +75,19 @@ public function testSetIsUserGroupTipsEnabled(): void $timeBackup = $_SERVER['REQUEST_TIME']; $_SERVER['REQUEST_TIME'] = 1726600070; - UserPreferences::$isUserGroupTipsEnabled = false; - UserPreferences::setIsUserGroupTipsEnabled(true); - self::assertTrue(UserPreferences::$isUserGroupTipsEnabled); + $userPreferences = new UserPreferences(isUserGroupTipsEnabled: false); + $userPreferences->setIsUserGroupTipsEnabled(true); + self::assertTrue($userPreferences->isUserGroupTipsEnabled); - UserPreferences::$isUserGroupTipsEnabled = true; - UserPreferences::setIsUserGroupTipsEnabled(false); - self::assertFalse(UserPreferences::$isUserGroupTipsEnabled); + $userPreferences = new UserPreferences(isUserGroupTipsEnabled: true); + $userPreferences->setIsUserGroupTipsEnabled(false); + self::assertFalse($userPreferences->isUserGroupTipsEnabled); $_SERVER['REQUEST_TIME'] = 1726600066; - UserPreferences::$isUserGroupTipsEnabled = false; - UserPreferences::setIsUserGroupTipsEnabled(false); - self::assertTrue(UserPreferences::$isUserGroupTipsEnabled); + $userPreferences = new UserPreferences(isUserGroupTipsEnabled: false); + $userPreferences->setIsUserGroupTipsEnabled(false); + self::assertTrue($userPreferences->isUserGroupTipsEnabled); $_SERVER['REQUEST_TIME'] = $timeBackup; }