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(); }