ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
SettingsTabs.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
27
29{
30 private const TAB_ID_SETTINGS = 'settings';
31 private const TAB_ID_CHANGE_PASSWORD = 'change_password';
32 private const TAB_ID_DELETE_ACCOUNT = 'delete_account';
33
34 public function __construct(
35 private readonly \ilTabsGUI $tabs_gui,
36 private readonly Language $lng,
37 private readonly \ilCtrl $ctrl,
38 private readonly \ilSetting $settings,
39 private readonly \ilObjUser $current_user
40 ) {
41 }
42
43 public function initializeTabs(): void
44 {
45 $this->addSettingsTab();
46
47 if ($this->changePasswordAvailable()) {
48 $this->addChangePasswordTab();
49 }
50
51 if ($this->deleteAccountAvailable()) {
52 $this->addDeleteAccountTab();
53 }
54
55 $this->activateTab();
56 }
57
58 private function addSettingsTab(): void
59 {
60 $this->tabs_gui->addTab(
61 self::TAB_ID_SETTINGS,
62 $this->lng->txt('settings'),
63 $this->ctrl->getLinkTargetByClass(
64 [\ilDashboardGUI::class, PersonalSettingsGUI::class],
65 'show'
66 ),
67 );
68 }
69
70 private function addChangePasswordTab(): void
71 {
72 $this->tabs_gui->addTab(
73 self::TAB_ID_CHANGE_PASSWORD,
74 $this->lng->txt('chg_password'),
75 $this->ctrl->getLinkTargetByClass(
76 [
77 \ilDashboardGUI::class,
78 PersonalSettingsGUI::class,
79 \ilLocalUserPasswordSettingsGUI::class
80 ],
82 )
83 );
84 }
85
86 private function addDeleteAccountTab(): void
87 {
88 $this->tabs_gui->addTab(
89 self::TAB_ID_DELETE_ACCOUNT,
90 $this->lng->txt('user_delete_own_account'),
91 $this->ctrl->getLinkTargetByClass(
92 [\ilDashboardGUI::class, PersonalSettingsGUI::class, DeleteAccountGUI::class],
93 'deleteOwnAccountStep1'
94 )
95 );
96 }
97
98 private function activateTab(): void
99 {
100 $next_class = $this->ctrl->getNextClass();
101 if ($next_class === strtolower(DeleteAccountGUI::class)) {
102 $this->tabs_gui->activateTab(self::TAB_ID_DELETE_ACCOUNT);
103 return;
104 }
105
106 if ($next_class === strtolower(\ilLocalUserPasswordSettingsGUI::class)) {
107 $this->tabs_gui->activateTab(self::TAB_ID_CHANGE_PASSWORD);
108 return;
109 }
110
111 $this->tabs_gui->activateTab(self::TAB_ID_SETTINGS);
112 }
113
114 private function changePasswordAvailable(): bool
115 {
116 return LocalUserPasswordManager::getInstance()->allowPasswordChange($this->current_user);
117 }
118
119 private function deleteAccountAvailable(): bool
120 {
121 return $this->settings->get('user_delete_own_account') === '1'
122 && $this->current_user->getId() !== SYSTEM_USER_ID;
123 }
124}
static getInstance()
Singleton method to reduce footprint (included files, created instances)
__construct(private readonly \ilTabsGUI $tabs_gui, private readonly Language $lng, private readonly \ilCtrl $ctrl, private readonly \ilSetting $settings, private readonly \ilObjUser $current_user)
@ilCtrl_Calls ILIAS\User\Settings\PersonalSettingsGUI: ILIAS\User\Account\DeleteAccountGUI @ilCtrl_Ca...
Class ilCtrl provides processing control methods.
User class.
ILIAS Setting Class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const SYSTEM_USER_ID
This file contains constants for PHPStan analyis, see: https://phpstan.org/config-reference#constants...
Definition: constants.php:26
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: AdminTabs.php:21
global $lng
Definition: privfeed.php:31