コード例 #1
0
 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;
 }
コード例 #2
0
 /**
  * @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);
 }
コード例 #3
0
 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());
 }
コード例 #4
0
 /**
  * @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();
 }
コード例 #5
0
 /**
  * @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);
 }