19 declare(strict_types=1);
38 public const ID =
'tos';
46 public function id(): string
53 $blocks =
new Blocks($this->
id(), $this->container, $provide);
54 $default = $blocks->defaultMappings();
55 $global_settings =
new Settings($blocks->selectSettingsFrom($blocks->readOnlyStore($blocks->globalStore())));
56 $is_active = $global_settings->enabled()->value();
57 $build_user = fn(
ilObjUser $user) => $blocks->user($global_settings,
new UserSettings($user, $blocks->selectSettingsFrom(
58 $blocks->userStore($user)
59 ), $this->container->refinery()), $user);
60 $public_api =
new PublicApi($is_active, $build_user);
61 $slot = $slot->
hasDocuments($default->contentAsComponent(), $default->conditionDefinitions())
63 ->hasPublicApi($public_api);
66 return $slot->
hasPublicPage($blocks->notAvailable(...), self::GOTO_NAME);
69 $user = $build_user($this->container->user());
70 $constraint = $this->container->refinery()->custom()->constraint(...);
73 ->hasAgreement($blocks->slot()->agreement($user), self::GOTO_NAME)
74 ->showInFooter($blocks->slot()->modifyFooter($user, self::GOTO_NAME))
75 ->showOnLoginPage($blocks->slot()->showOnLoginPage())
76 ->onSelfRegistration($blocks->slot()->selfRegistration($user, $build_user))
77 ->hasOnlineStatusFilter($blocks->slot()->onlineStatusFilter($this->
usersWhoDidntAgree($this->container->database())))
78 ->hasUserManagementFields($blocks->userManagementAgreeDateField($build_user,
'tos_agree_date',
'tos'))
79 ->canReadInternalMails($blocks->slot()->canReadInternalMails($build_user))
80 ->canUseSoapApi($constraint(fn($u) => !$public_api->needsToAgree($u),
'TOS not accepted.'));
85 $this->container[
'ilAppEventHandler']->raise(
86 'components/ILIAS/TermsOfService',
88 [
'event' => $this->container->user()]
94 return function (array $users) use ($database): array {
96 $result = $database->
query(
'SELECT usr_id FROM usr_data WHERE agree_date IS NULL AND ' . $users);
98 return array_map(intval(...), array_column($database->
fetchAll($result),
'usr_id'));
uses(UseSlot $slot, LazyProvide $provide)
A
fetchAll(ilDBStatement $statement, int $fetch_mode=ilDBConstants::FETCHMODE_ASSOC)
Customizing of pimple-DIC for ILIAS.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
canWithdraw(WithdrawProcess $withdraw_process)
readonly Container $container
usersWhoDidntAgree(ilDBInterface $database)
query(string $query)
Run a (read-only) Query on the database.
in(string $field, array $values, bool $negate=false, string $type="")
__construct(?Container $container=null)
hasPublicPage(callable $public_page, ?string $goto_name=null)
hasDocuments(array $content_as_component=[], ?SelectionMap $available_conditions=null)