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; }
/** * @EXT\Route( * "/announcement/{announcement}/send/mail", * name="claro_announcement_send_mail", * options={"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") * @EXT\ParamConverter( * "users", * class="ClarolineCoreBundle:User", * options={"multipleIds" = true, "name" = "usersIds"} * ) * * Sends announcement by mail * * @return Response */ public function announcementSendMailAction(Announcement $announcement, array $users) { $resource = $announcement->getAggregate(); $this->checkAccess('EDIT', $resource); if (count($users) > 0) { $this->announcementManager->sendMail($announcement, $users); } return new JsonResponse('success', 200); }
public function sendMail(Announcement $announcement, $users = null) { $targets = is_null($users) ? $this->getUsersByResource($announcement->getAggregate()->getResourceNode(), 1) : $users; $workspace = $announcement->getAggregate()->getResourceNode()->getWorkspace(); $title = '[' . $workspace->getCode() . '] ' . $announcement->getTitle(); $content = $announcement->getContent() . '<br>[' . $workspace->getCode() . '] ' . $workspace->getName(); $this->mailManager->send($title, $content, $targets, $announcement->getCreator()); }
/** * @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(); }
/** * @param AnnouncementAggregate $aggregate * @param Announcement $announcement */ public function __construct(AnnouncementAggregate $aggregate, Announcement $announcement) { $details = array('announcement' => array('aggregate' => $aggregate->getId(), 'title' => $announcement->getTitle(), 'announcer' => $announcement->getAnnouncer())); parent::__construct($aggregate->getResourceNode(), $details); }