pageDraftRepository->findOneBy(['page' => $page]); if (!is_null($pageDraft)) { throw new \Exception(sprintf('Draft already exists for page %d', $page->getId())); } $pageDraft = new PageDraft($page, $html, $template, $publicPreview); $this->entityManager->persist($pageDraft); $this->entityManager->flush(); return $pageDraft; } public function saveDraft(PageDraft $pageDraft): void { $this->entityManager->persist($pageDraft); $this->entityManager->flush(); } public function deleteDraft(Page $page): void { if (is_null($pageDraft = $page->getDraft())) { throw new NotFoundHttpException(sprintf('Draft not found for page %d', $page->getId())); } $this->entityManager->remove($pageDraft); $this->entityManager->flush(); } public function getEntity(int $id): ?PageDraft { return $this->pageDraftRepository->find($id); } public function getPermissionBase(): string { return 'page:pages'; } }