/** * @EXT\Route( * "/aggregate/{aggregateId}/create/form", * name = "claro_announcement_create_form" * ) * @EXT\Method("GET") * @EXT\ParamConverter( * "aggregate", * class="ClarolineAnnouncementBundle:AnnouncementAggregate", * options={"id" = "aggregateId", "strictId" = true} * ) * @EXT\Template("ClarolineAnnouncementBundle::createForm.html.twig") * * @param AnnouncementAggregate $aggregate * * @return Response */ public function createFormAction(AnnouncementAggregate $aggregate) { $this->checkAccess('EDIT', $aggregate); $announcement = new Announcement(); $announcement->setVisible(true); $form = $this->formFactory->create(new AnnouncementType(), $announcement); return ['form' => $form->createView(), 'type' => 'create', '_resource' => $aggregate]; }
public function import(array $data) { $announcementAggregate = new AnnouncementAggregate(); $user = $this->tokenStorage->getToken()->getUser(); $ds = DIRECTORY_SEPARATOR; if (isset($data['data'])) { foreach ($data['data'] as $announcementDatas) { $announcement = new Announcement(); $announcement->setAggregate($announcementAggregate); $announcement->setCreator($user); $announcement->setTitle($announcementDatas['announcement']['title']); $announcement->setAnnouncer($announcementDatas['announcement']['announcer']); $announcement->setVisible($announcementDatas['announcement']['visible']); if ($announcementDatas['announcement']['creation_date'] !== null) { $announcement->setCreationDate(new \DateTime($announcementDatas['announcement']['creation_date'])); } else { $announcement->setPublicationDate(new \DateTime()); } if ($announcementDatas['announcement']['publication_date'] !== null) { $announcement->setPublicationDate(new \DateTime($announcementDatas['announcement']['publication_date'])); } if ($announcementDatas['announcement']['visible_from'] !== null) { $announcement->setVisibleFrom(new \DateTime($announcementDatas['announcement']['visible_from'])); } if ($announcementDatas['announcement']['visible_until'] !== null) { $announcement->setVisibleUntil(new \DateTime($announcementDatas['announcement']['visible_until'])); } $content = file_get_contents($this->getRootPath() . $ds . $announcementDatas['announcement']['content']['path']); $content = !empty($content) ? $content : 'No content'; $announcement->setContent($content); $this->om->persist($announcement); } } $this->om->persist($announcementAggregate); return $announcementAggregate; }
/** * @DI\Observe("copy_claroline_announcement_aggregate") * * @param CopyResourceEvent $event */ public function onCopy(CopyResourceEvent $event) { $aggregate = $event->getResource(); $copy = new AnnouncementAggregate(); $this->om->persist($copy); $announcements = $aggregate->getAnnouncements(); foreach ($announcements as $announcement) { $newAnnouncement = new Announcement(); $newAnnouncement->setAggregate($copy); $newAnnouncement->setAnnouncer($announcement->getAnnouncer()); $newAnnouncement->setContent($announcement->getContent()); $newAnnouncement->setCreationDate($announcement->getCreationDate()); $newAnnouncement->setCreator($announcement->getCreator()); $newAnnouncement->setPublicationDate($announcement->getPublicationDate()); $newAnnouncement->setTitle($announcement->getTitle()); $newAnnouncement->setVisible($announcement->isVisible()); $newAnnouncement->setVisibleFrom($announcement->getVisibleFrom()); $newAnnouncement->setVisibleUntil($announcement->getVisibleUntil()); $this->om->persist($newAnnouncement); } $event->setCopy($copy); $event->stopPropagation(); }