entityManager->getFilters(); } /** * Enable and preconfigure the doctrine sql filters that apply the time constraints. */ public function configureTimeConstraintFilters(int $accessId): void { /** @var DatetimeFilter $dateTimeFilter */ $dateTimeFilter = $this->getFilters()->enable('date_time_filter'); $dateTimeFilter->setAccessId($accessId); $dateTimeFilter->setTimeConstraint($this->dateTimeConstraint); /** @var ActivityYearFilter $activityYearFilter */ $activityYearFilter = $this->getFilters()->enable('activity_year_filter'); $activityYearFilter->setAccessId($accessId); $activityYearFilter->setTimeConstraint($this->activityYearConstraint); } /** * Suspends les contraintes de temps. Celles-ci pourront être restorées grâce à la méthode * restoreTimeConstraintFilters(). * * @see src/Filter/Doctrine/TimeConstraint/AbstractTimeFilter.php */ public function suspendTimeConstraintFilters(): void { if ($this->previousTimeConstraintState !== null) { throw new \RuntimeException('date_time_filter is already suspended'); } $filters = $this->entityManager->getFilters(); if (!$filters->isEnabled('date_time_filter')) { $this->previousTimeConstraintState = false; return; } /** @var AbstractTimeFilter $filter */ $filter = $filters->getFilter('date_time_filter'); $this->previousTimeConstraintState = $filter->isDisabled() === false; $filter->setDisabled(true); } /** * Restore les contraintes de temps après qu'elles aient été suspendues au moyen de la * méthode suspendTimeConstraintFilters(). * * @see src/Filter/Doctrine/TimeConstraint/AbstractTimeFilter.php */ public function restoreTimeConstraintFilters(): void { if ($this->previousTimeConstraintState === null) { throw new \RuntimeException('date_time_filter has not been suspended, can not be restored'); } $filters = $this->entityManager->getFilters(); if ($filters->isEnabled('date_time_filter')) { /** @var AbstractTimeFilter $filter */ $filter = $filters->getFilter('date_time_filter'); $filter->setDisabled($this->previousTimeConstraintState); } $this->previousTimeConstraintState = null; } }