19 declare(strict_types=1);
    39     public const ID = 
'tos';
    44         $this->container = $container ?? 
$GLOBALS[
'DIC'];
    47     public function id(): string
    54         $blocks = 
new Blocks($this->
id(), $this->container, $provide);
    55         $default = $blocks->defaultMappings();
    56         $global_settings = 
new Settings($blocks->selectSettingsFrom($blocks->readOnlyStore($blocks->globalStore())));
    57         $is_active = $global_settings->
enabled()->value();
    58         $build_user = fn(
ilObjUser $user) => $blocks->user($global_settings, 
new UserSettings($user, $blocks->selectSettingsFrom(
    59             $blocks->userStore($user)
    60         ), $this->container->refinery()), $user);
    61         $public_api = 
new PublicApi($is_active, $build_user);
    62         $slot = $slot->
hasDocuments($default->contentAsComponent(), $default->conditionDefinitions())
    64                      ->hasPublicApi($public_api);
    67             return $slot->
hasPublicPage($blocks->notAvailable(...), self::GOTO_NAME);
    70         $user = $build_user($this->container->user());
    71         $constraint = $this->container->refinery()->custom()->constraint(...);
    74                     ->hasAgreement($blocks->slot()->agreement($user, $global_settings), self::GOTO_NAME)
    75                     ->showInFooter($blocks->slot()->modifyFooter($user, self::GOTO_NAME))
    76                     ->showOnLoginPage($blocks->slot()->showOnLoginPage())
    77                     ->onSelfRegistration($blocks->slot()->selfRegistration($user, $build_user))
    78                     ->hasOnlineStatusFilter($blocks->slot()->onlineStatusFilter($this->
usersWhoDidntAgree($this->container->database())))
    79                     ->hasUserManagementFields($blocks->userManagementAgreeDateField($build_user, 
'tos_agree_date', 
'tos'))
    80                     ->canReadInternalMails($blocks->slot()->canReadInternalMails($build_user))
    81                     ->canUseSoapApi($constraint(fn($u) => !$public_api->needsToAgree($u), 
'TOS not accepted.'));
    86         $this->container[
'ilAppEventHandler']->raise(
    87             'Services/TermsOfService',
    89             [
'event' => $this->container->user()]
    95         return function (array $users) use ($database): array {
    97             $result = $database->
query(
'SELECT usr_id FROM usr_data WHERE agree_date IS NULL AND ' . $users);
    99             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. 
 
canWithdraw(WithdrawProcess $withdraw_process)
 
readonly Container $container
 
readonly Closure $lazy_users
 
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)