19 declare(strict_types=1);
    38     public const ID = 
'tos';
    43         $this->container = $container ?? 
$GLOBALS[
'DIC'];
    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. 
 
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)