19 declare(strict_types=1);
47 public function __construct(
int $a_id = 0,
int $a_id_type = self::REPOSITORY_NODE_ID,
int $a_parent_node_id = 0)
52 $this->
lng = $DIC->language();
53 $this->error = $DIC[
'ilErr'];
57 $this->
lng->loadLanguageModule(
'tos');
58 $this->
lng->loadLanguageModule(
'meta');
59 $config =
new Config($this->dic[
'legalDocuments']->provide(Consumer::ID));
60 if ($this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
61 $config = $config->allowEditing();
65 $this->
ui =
new UI(Consumer::ID, $this->dic->ui(), $this->dic->language());
76 if (!$this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
77 $this->error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
80 $next_class = $this->
ctrl->getNextClass($this) ??
'';
81 $cmd = $this->
ctrl->getCmd() ??
'';
83 switch (strtolower($next_class)) {
84 case strtolower(ilLegalDocumentsAdministrationGUI::class):
88 default: $this->
ctrl->forwardCommand($this->legal_documents);
91 case strtolower(ilPermissionGUI::class):
92 $this->tabs_gui->activateTab(
'permissions');
98 $this->
ctrl->redirectByClass([self::class, ilLegalDocumentsAdministrationGUI::class],
'documents');
112 $can_edit_permissions = $this->rbac_system->checkAccess(
'edit_permission', $this->
object->getRefId());
115 $this->legal_documents->tabs([
116 'documents' => fn() => $this->tabs_gui->addTab(
'settings', $this->lng->txt(
'settings'), $this->
ctrl->getLinkTarget($this,
'settings')),
119 if ($can_edit_permissions) {
120 $this->tabs_gui->addTab(
122 $this->
lng->txt(
'perm_settings'),
123 $this->
ctrl->getLinkTargetByClass([self::class, ilPermissionGUI::class],
'perm')
130 $read_only = !$this->rbac_system->checkAccess(
'write', $this->
object->getRefId());
132 $no_documents = $this->config->legalDocuments()->document()->repository()->countAll() === 0;
134 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'tos_no_documents_exist'));
137 $enabled = $this->dic->ui()->factory()->input()->field()->optionalGroup(
139 'reeval_on_login' => $this->dic->ui()->factory()->input()->field()->checkbox(
140 $this->
ui->txt(
'reevaluate_on_login'),
141 $this->
ui->txt(
'reevaluate_on_login_desc')
144 $this->
lng->txt(
'tos_status_enable'),
145 $this->
lng->txt(
'tos_status_desc')
147 $enabled = $enabled->withValue($this->tos_settings->enabled()->value() ? [
'reeval_on_login' => $this->tos_settings->validateOnLogin()->value()] :
null);
148 $enabled = $enabled->withDisabled($read_only);
150 $form = $this->dic->ui()->factory()->input()->container()->form()->standard(
151 $this->
ctrl->getFormAction($this,
'saveSettings'),
152 [
'enabled' => $enabled]
156 $form = $form->withSubmitLabel($this->
lng->txt(
'refresh'));
157 return $this->legal_documents->admin()->withFormData($form,
function () {
158 $this->
ctrl->redirect($this,
'settings');
162 return $this->legal_documents->admin()->withFormData($form,
function (array
$data) use ($no_documents):
void {
163 if ($no_documents && $data[
'enabled']) {
164 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'tos_no_documents_exist_cant_save'),
true);
165 $this->
ctrl->redirect($this,
'settings');
167 $this->tos_settings->enabled()->update(isset($data[
'enabled']));
168 $this->tos_settings->validateOnLogin()->update($data[
'enabled'][
'reeval_on_login'] ??
false);
169 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_obj_modified'),
true);
170 $this->
ctrl->redirect($this,
'settings');
176 if ($this->config->legalDocuments()->document()->repository()->countAll() === 0) {
177 $this->tos_settings->enabled()->update(
false);
183 if (!$this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
184 $this->error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->MESSAGE);
187 $this->tabs_gui->activateTab(
'settings');
191 if ($this->tos_settings->enabled()->value() && $this->config->legalDocuments()->document()->repository()->countAll() === 0) {
193 $this->
ui->txt(
'no_documents_exist')
197 $components[] = $this->legal_documents->admin()->externalSettingsMessage($this->tos_settings->deleteUserOnWithdrawal()->value());
200 $this->tpl->setContent($this->dic->ui()->renderer()->render(
$components));
205 $buttons = $this->config->editable() ?
206 [$this->legal_documents->admin()->resetButton($this->dic->ctrl()->getLinkTarget($this,
'confirmReset'))] :
209 $reset_date =
new DateTimeImmutable(
'@' . $this->dic->settings()->get(
'tos_last_reset',
'0'));
211 $this->tpl->setCurrentBlock(
'mess');
212 $this->legal_documents->admin()->setVariable(
'MESSAGE', $this->legal_documents->admin()->resetBox($reset_date, $buttons));
213 $this->tpl->parseCurrentBlock(
'mess');
218 $this->legal_documents->admin()->requireEditable();
219 $this->legal_documents->admin()->setContent((
new Confirmation($this->dic->language()))->render(
220 $this->dic->ctrl()->getFormAction($this,
'resetNow'),
223 $this->dic->language()->txt(
'tos_sure_reset_tos')
229 $this->legal_documents->admin()->requireEditable();
231 $this->dic->database()->manipulate(
"UPDATE usr_data SET agree_date = NULL WHERE $in");
232 $this->tos_settings->lastResetDate()->update((
new DataFactory())->clock()->system()->now());
233 $this->dic->ctrl()->redirectByClass([self::class, $this->legal_documents::class],
'documents');
238 $blocks =
new Blocks($this->config->legalDocuments()->id(),
$this->dic, $this->config->legalDocuments());
239 return new Settings($blocks->selectSettingsFrom($blocks->globalStore()));
New implementation of ilObjectGUI.
const SYSTEM_USER_ID
This file contains constants for PHPStan analyis, see: https://phpstan.org/config-reference#constants...
prepareOutput(bool $show_sub_objects=true)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
readonly ilLegalDocumentsAdministrationGUI $legal_documents
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
readonly Settings $tos_settings
__construct(Container $dic, ilPlugin $plugin)