. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Carbon; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\UserService; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; /** * Delete old/inactive users. */ class UsersCleanupPage implements RequestHandlerInterface { use ViewResponseTrait; /** @var UserService */ private $user_service; /** * @param UserService $user_service */ public function __construct(UserService $user_service) { $this->user_service = $user_service; } /** * @param ServerRequestInterface $request * * @return ResponseInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { $inactive_threshold = Carbon::now()->subMonths(6)->timestamp; $unverified_threshold = Carbon::now()->subDays(7)->timestamp; $inactive_users = $this->user_service->all() ->filter($this->user_service->filterInactive($inactive_threshold)) ->sort($this->user_service->sortByLastLogin()); $unverified_users = $this->user_service->unverified() ->filter($this->user_service->filterInactive($unverified_threshold)) ->sort($this->user_service->sortByLastLogin()); $title = I18N::translate('Delete inactive users'); $this->layout = 'layouts/administration'; return $this->viewResponse('admin/users-cleanup', [ 'title' => $title, 'inactive_users' => $inactive_users, 'unverified_users' => $unverified_users, ]); } }