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(...);
    73         return $slot->canWithdraw($blocks->slot()->withdrawProcess($user, $global_settings, $this->
userHasWithdrawn(...)))
    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.'));
 
usersWhoDidntAgree(ilDBInterface $database)