/**
  * Migrate data to plugin database from core table
  *
  * @param EntityManager   $em
  * @param OutputInterface $output
  *
  * @return void
  */
 public function migrateData($em, $output)
 {
     $rsm = new ResultSetMapping();
     $rsm->addEntityResult('Newscoop\\CommunityTickerBundle\\Entity\\CommunityTickerEvent', 'e');
     $rsm->addFieldResult('e', 'id', 'id');
     $rsm->addFieldResult('e', 'event', 'event');
     $rsm->addFieldResult('e', 'params', 'params');
     $rsm->addFieldResult('e', 'created', 'created');
     $rsm->addJoinedEntityResult('Newscoop\\Entity\\User', 'u', 'e', 'user');
     $rsm->addFieldResult('u', 'Id', 'id');
     $query = $em->createNativeQuery('SELECT e.id, e.event, e.params, e.created, u.Id FROM community_ticker_event e ' . 'LEFT JOIN liveuser_users u ON u.id = e.user_id', $rsm);
     $events = $query->getArrayResult();
     foreach ($events as $key => $event) {
         $user = $em->getRepository('Newscoop\\Entity\\User')->findOneBy(array('id' => $event['user']['id']));
         $existingEvent = $em->getRepository('Newscoop\\CommunityTickerBundle\\Entity\\CommunityTickerEvent')->findOneBy(array('created' => $event['created'], 'params' => $event['params']));
         if (!$existingEvent) {
             $newEvent = new CommunityTickerEvent();
             $newEvent->setEvent($event['event']);
             $newEvent->setParams($event['params'] != '[]' ? json_decode($event['params'], true) : array());
             $newEvent->setCreated($event['created']);
             $newEvent->setIsActive(true);
             if ($user) {
                 $newEvent->setUser($user);
             }
             $em->persist($newEvent);
         }
     }
     $em->flush();
     $output->writeln('<info>Data migrated to plugin table!</info>');
     $output->writeln('<info>Removing old table...</info>');
 }
 /**
  * Save event
  *
  * @param  CommunityTickerEvent $event
  * @param  array                $values
  * @return void
  */
 public function save(CommunityTickerEvent $event, array $values)
 {
     $event->setEvent($values['event']);
     $event->setParams(isset($values['params']) ? $values['params'] : array());
     if (!empty($values['user'])) {
         $user = $values['user'];
         if (is_int($user)) {
             $user = $this->getEntityManager()->getReference('Newscoop\\Entity\\User', $values['user']);
         }
         $event->setUser($user);
     }
     $this->getEntityManager()->persist($event);
     $this->getEntityManager()->flush();
 }
Exemplo n.º 3
0
 /**
  * Get created date
  *
  * @param CommunityTickerEvent $feed
  *
  * @return string
  */
 protected function getCreated($feed)
 {
     $date = $feed->getCreated();
     return $date->format('d.m.Y H:i:s');
 }